Как убедиться, что пункты меню плагинов правильно выделены серым или нет (включено / отключено) ( 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();
Он просто запускает проверку при запуске, а не при открытии меню!
1 ответ
Хорошо, я понял, что случилось. Я изменил это на...
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
, но я должен был сделать синтаксическую ошибку.
Кроме того, в моем случае достаточно оказаться в нужной папке и выбрать что-то, так как файлы добавляются непосредственно камерой. Вместо этого к самой функции добавляются более сложные проверки, чтобы предотвратить заикание при каждом открытии меню.