[ID CC-CC2022] 2020 – проблема с опцией listbox

  • Автор темы Автор темы iv-mi
  • Дата начала Дата начала

iv-mi

Топикстартер
15 лет на форуме
Сообщения
567
Реакции
384
Коллеги, здравствуйте.

Вот какая неувязка оказалась в версии 2020:



Есть пример из руководства Питера Карела


JavaScript:
var w = new Window("dialog");

w.alignChildren = ["top", "right"];

var list = w.add ("listbox", undefined, ["One", "Two", "Three", "Four"]);

for (var i = 0; i < list.items.length; i++)

//list.items[i].checked = false;

list.items.checked = true;

w.show();


В предыдущих версиях, включая 2019, всё было в порядке: рядом с каждой записью было поле для флажка, и его можно было ставить/снимать. Очень удобная опция, если, например, есть длинный список стилей, не помещающийся целиком в окне просмотра, то можно было его прокручивать, и флажками отмечать нужные.

И потом узнать, что выбрано.

В версии 2020 этих флажков уже нет.

Как это назвать?… оптимизировали… улучшили. Апдейтоделы. Теперь эта опция исчезла.



И вариант сказать, что надо использовать предыдущую версию,

JavaScript:
app.scriptPreferences.version = 12;

не работает.

Попытка сделать папку “Version 12.0 Scripts” и поместить скрипт туда и оттуда запускать — результат тот же.



Пока вижу только такой, в два шага путь, как реализовано в «Музыке заголовков»: выводить слева список стилей и перекидывать нужные в правое окно. Но тот вариант с флажками был изящнее. И как быть с давно написанными скриптами, где эта опция используется?



И всё же — может быть, есть всё же какой-нибудь обходной путь, как заставить программу выполнить скрипт в одной из предыдущих объектных моделей индизайна?

Если кто знает, поделитесь.
 
Последнее редактирование модератором:
1600941529797.png
 
Что это за окно?
Код:
var w = new Window("dialog");
w.alignChildren = ["top", "right"];
var list = w.add ("listbox", undefined, ["One", "Two", "Three", "Four"]);
for (var i = 0; i < list.items.length; i++)
//list.items.checked = false;
list.items.checked = true;
w.show();
Это он про форумную опцию как постить скрипты :)
 
  • Спасибо
Реакции: iv-mi
Спасибо, учту в следующий раз.
А что по этой теме сказать можете?
Карел сказал, что не знает решения

Hello Mikhail,
You're right, I hadn't noticed that yet. No idea how to deal with that, I'm afraid.
Best wishes,
Peter

Может, кто у нас есть знающий больше?
 
Если в мире есть человек, который знает о скриптах для индизайна больше дяди Питера, я бы с удовольствием с ним познакомился.
 
В версии 2020 этих флажков уже нет.
В Photoshop такой опции не было, наверное, вообще никогда.
Решение, как всегда, вручную, через костыль.

JavaScript:
var options = [{name: "One", active: false}, {name: "Two", active: false}, {name: "Three", active: false}, {name: "Four", active: false}]

var w = new Window("dialog");
w.alignChildren = ["top", "right"];
var list = w.add ("listbox", undefined);
for (var i = 0; i < options.length; i++) {
    var iname = options[i].name;
    iname = options[i].active ? '\u2611 ' + iname : '\u274E ' + iname;
    var item = list.add('item', iname);
    item.checked = options[i].active;
}
list.onDoubleClick = function () {
    if (this.selection) {
        var item = this.selection;
        item.checked = !item.checked;
        var iname = item.text.replace(/^[\u2611|\u274E] /gim, '');
        iname = item.checked ? '\u2611 ' + iname : '\u274E ' + iname;
        item.text = iname;
    }
}

w.show();
 
  • Спасибо
Реакции: iv-mi и К.Т.
как заставить программу выполнить скрипт в одной из предыдущих объектных моделей индизайна?
Библиотека ScriptUI не входит в скриптовую модель indesign. Поэтому хоть как меняй версию, урезанное из UI не прирастет.
 
  • Спасибо
Реакции: iv-mi
Олег, спасибо.