- Сообщения
- 447
- Реакции
- 74
нет. всё чётко последовательно.не может такого быть, что на момент обращения к линку файл еще на самом деле не проапдейтился? типа там скрипт для фотошопа работает асинхронно?
нет. всё чётко последовательно.не может такого быть, что на момент обращения к линку файл еще на самом деле не проапдейтился? типа там скрипт для фотошопа работает асинхронно?
через бридж. но скрипт обновления в индизайне запускается из шопа через тот же бридж, когда отработан цикл на пересохранение картинок. не может быть никакого асинхронаа как вызывается скрипт для шопа? ) если через bridgetalk - там вполне может быть асинхронно. а после того как он отработает запускается метод onResult()
при выполнении команды app.open индиз показывает диалоги на обновление картинок. я знаю, что это можно отключить. но как?буду пробовать закрыть/открыть документ
и по традиции отвечу себе сам:при выполнении команды app.open индиз показывает диалоги на обновление картинок. я знаю, что это можно отключить. но как?
//Set the value to false to prevent the dialog from showing.
app.linkingPreferences.checkLinksAtOpen = false;
//do some stuff ...
//Set the value back to its original value.
app.linkingPreferences.checkLinksAtOpen=true;
ещё один провал. при быстром открытии/закрытии документа картинки начинают считаться занятыми другим юзером, и, как результат — не обновляются.буду пробовать закрыть/открыть документ
с какой целью интересуетесь?скрипт можно целиком посмотреть?
дык это не проблемы. это тормоза логики работы индизайна. он опрашивает состояние файлов не постоянно, а весьма с большим промежутком времени.да так, проверить почему такие проблемы ) можно в личку, дальше меня не уйдет
#include "/Users/.../-lowTest.jsx";
var targets = BridgeTalk.getTargets(null,null);
var shps = new Array();
for (var q=0;q<targets.length;q++)
if (targets[q].toLocaleLowerCase().indexOf("hotoshop")>=0) shps.push(targets[q]);
var myDialog = app.dialogs.add();
with (myDialog.dialogColumns.add())
{
with (dialogRows.add().borderPanels.add().dialogColumns.add())
{
dialogRows.add().staticTexts.add({staticLabel: "выберите фотошоп"});
var kName = dialogRows.add().dropdowns.add({stringList: shps, selectedIndex: 0});
}
}
if (!myDialog.show()) {exit();};
var shopVersion=shps[kName.selectedIndex];
var indisVersion = "indesign-"+app.version;
if (!BridgeTalk.isRunning(shopVersion)) {
BridgeTalk.launch (appSpec);
}
resizeToShop(shopVersion, indisVersion);
function resizeToShop(shopVersion, indisVersion)
{
var pic = app.documents[0].allGraphics[0].itemLink.filePath;
var updateLinks ="";
updateLinks="#include \"/Users/.../-lowTest.jsx\";";
updateLinks += 'finalWork();';
var resizeShop = "";
resizeShop += " var pic='"+pic+"'\r";
resizeShop += " app.open(File(pic));\r";
resizeShop += " activeDocument.resizeImage(activeDocument.width/2, activeDocument.height /2, 300, ResampleMethod.BICUBICSMOOTHER);\r";
resizeShop += " app.activeDocument.save();\r";
resizeShop += " app.activeDocument.close(SaveOptions.SAVECHANGES);\r"
resizeShop += "var bt = new BridgeTalk;\r";
resizeShop += "bt.target = \""+indisVersion+"\";\r";
resizeShop += "bt.body = '"+updateLinks+"';\r";
resizeShop += "bt.send();";
var bt = new BridgeTalk;
bt.target = shopVersion;
bt.body = resizeShop;
bt.send();
}
function finalWork()
{
app.documents[0].allGraphics[0].itemLink.update();
alert('ok');
}
и по традиции отвечу себе сам:
Код://Set the value to false to prevent the dialog from showing. app.linkingPreferences.checkLinksAtOpen = false; //do some stuff ... //Set the value back to its original value. app.linkingPreferences.checkLinksAtOpen=true;
//Set the value to false to prevent the dialog from showing.
var userCheckLinksAtOpen = app.linkingPreferences.checkLinksAtOpen;
app.linkingPreferences.checkLinksAtOpen = false;
//do some stuff ...
//Set the value back to its original value.
app.linkingPreferences.checkLinksAtOpen=userCheckLinksAtOpen;
просьба в тапёра не стрелять. лабает как умеет. ©как-то все криво.
bt.send(); это асинхронный запуск скрипта.
а потом еще и опять из фотошопа индизайн через bridgetalk вызывается.
нахрена? есть же callback onResult
var bt = new BridgeTalk;
bt.target = "bridge-3.0";
bt.body = "var tn = new Thumbnail(’C/MyPhotos/temp.gif’);
tn.core.immediate.size;"
bt.onResult = function( resultMsg ) {
processFileSize(resultMsg.body);
}
bt.onError = function( errorMsg ) {
var errCode = parseInt (errorMsg.headers ["Error-Code"]); throw new Error (errCode, errorMsg.body);
}
bt.send();
var myLink = app.activeDocument.allGraphics[0].itemLink;
var pic = myLink.filePath;
var resizeShop = "";
resizeShop += " var pic='"+pic+"'\r";
resizeShop += " app.open(File(pic));\r";
resizeShop += " app.activeDocument.resizeImage(app.activeDocument.width/2, app.activeDocument.height /2, 300, ResampleMethod.BICUBICSMOOTHER);\r";
resizeShop += " app.activeDocument.close(SaveOptions.SAVECHANGES);"
var bt = new BridgeTalk();
bt.target = "photoshop";
bt.body = resizeShop;
bt.onResult = function(resultMsg)
{
app.waitForAllTasks();
myLink.update();
}
bt.send();