如何确保插件菜单项正确变灰或不变灰(启用/禁用)(javascript,Adobe Bridge)
How to ensure plugin menu items are correctly greyed out or not (enabled / disabled) ( javascript, Adobe Bridge)
我正在制作一些 Adobe Bridge (CS 5.1) 插件。
我的问题是,除非用户为脚本选择了有效的项目,否则我不知道如何确保它们各自的菜单项变灰。
我可以通过编写类似
的代码来达到所需的状态
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;
}
}
但是如何在打开菜单时直接将此检查运行?如果我使用
myMenu.onSelect = greyOutMenu();
它只是 运行 在启动时检查而不是在打开菜单时检查!
好的,我知道出了什么问题。我已将其更改为...
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
,但我一定是犯了语法错误。
另外,在我的例子中,在正确的文件夹中并选择一些东西就足够了,因为文件是由相机直接添加的。更复杂的检查被添加到函数本身,以防止每次打开菜单时卡顿。
我正在制作一些 Adobe Bridge (CS 5.1) 插件。
我的问题是,除非用户为脚本选择了有效的项目,否则我不知道如何确保它们各自的菜单项变灰。
我可以通过编写类似
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;
}
}
但是如何在打开菜单时直接将此检查运行?如果我使用
myMenu.onSelect = greyOutMenu();
它只是 运行 在启动时检查而不是在打开菜单时检查!
好的,我知道出了什么问题。我已将其更改为...
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
,但我一定是犯了语法错误。
另外,在我的例子中,在正确的文件夹中并选择一些东西就足够了,因为文件是由相机直接添加的。更复杂的检查被添加到函数本身,以防止每次打开菜单时卡顿。