Как показать и скрыть стандартные панели InDesign с помощью сценариев? - PullRequest
1 голос
/ 07 октября 2019

Я могу получить ссылку, например, на панель «Сценарии»;но, похоже, нет методов show и hide, таких как панели, созданные с помощью сценариев (см. код ниже). Как я могу заставить его отображать или скрывать программно, не вызывая соответствующий пункт меню?

function findPanelByName(name) { // String → Panel|null
    for (var iPanel = 0; iPanel < app.panels.length; iPanel++) {
        var panel = app.panels[iPanel];
        if (panel.name == name) {
            return panel;
        }
    }
    return null;
}

var scriptsPanel = findPanelByName('Scripts');

scriptsPanel.show(); // → “scriptsPanel.show is not a function”

1 Ответ

2 голосов
/ 07 октября 2019

Несколько вещей: Ваш способ получить правую панель излишне сложен. Вы можете просто получить панель с помощью метода элемента коллекции панелей следующим образом:

var scriptsPanel = app.panels.item('Scripts');

Тогда вам не нужно использовать show(), чтобы отобразить панель (так как этот метод не существует),но вы можете просто показать панель, установив для ее свойства visible значение true:

scriptsPanel.visible = true;

И, наконец, если кто-то еще должен использовать скрипт, вы должны убедиться, что он работает смеждународные версии InDesign, а также. В моей немецкой версии приведенная выше панель, например, не существовала бы, так как она называется Skripte вместо Scripts. Чтобы избежать этого, вы можете использовать независимый от языка ключ InDesign:

var scriptsPanel = app.panels.item('$ID/Scripting');

Таким образом, в заключение можно сократить весь сценарий до этой однострочной

app.panels.item('$ID/Scripting').visible = true;
...