我正在制作一些Adobe Bridge(CS 5.1)插件。
我的问题是,除非用户为脚本选择了有效的项目,否则我无法弄清楚如何确保其相应的菜单项显示为灰色。
我可以通过编码类似的代码来达到所需的状态
lc_messages = 'C'
但是在打开菜单时如何使此检查直接运行?如果我使用
function greyOutMenu () {
var doc = application.document;
var these = [];
these = doc.selections;
menuItem.enabled = true;
if ( these.length < 1 ) {
menuItem.enabled = false;
return;
}
for ( var i in these ) {
if ( these[i] /* is invalid */ ) { menuItem.enabled = false;
return;
}
}
它只是在启动时运行检查,而不是在菜单打开时运行!
答案 0 :(得分:0)
好的,我弄清楚出了什么问题。我已将其更改为...
function greyOutMenu () {
var doc = app.document;
var here = doc.presentationPath;
var thisFolder = Folder ( here );
if ( decodeURI ( thisFolder.name ) === "correct folder name" ) { menuItem.enabled = true; }
else { menuItem.enabled = false; }
if (!app.document.selectionsLength > 0 ) { menuItem.enabled = false; }
}
menuItem.onDisplay = greyOutMenu;
我本可以宣誓已经尝试过menuItem.onDisplay
,但是我肯定犯了语法错误。
此外,就我而言,将文件放置在正确的文件夹中并进行选择就足够了,因为文件是直接由相机添加的。而是将更复杂的检查添加到函数本身,以防止每次打开菜单时都卡住。