создание диалогов: массовое выделение checkboxControls

  • Автор темы Автор темы bossrus
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
таким вот простым способом создаю диалог с чекбоксами, в которых можно выбрать номера страниц.
Код:
var checks = new Array();
var myDialog = app.dialogs.add();
with (myDialog.dialogColumns.add())
    {
    with (dialogRows.add().borderPanels.add().dialogColumns.add())
        {
        dialogRows.add().staticTexts.add({staticLabel: "список страниц:"});
        with (dialogRows.add())
            {
            with (dialogColumns.add())
                {
                for (var q=0;q<app.activeDocument.pages.length;q++)
                    dialogRows.add().staticTexts.add({staticLabel:app.activeDocument.pages[q].name});
                }
            with (dialogColumns.add())
                {
                for (var q=0;q<app.activeDocument.pages.length;q++)
                    checks[q] = dialogRows.add().checkboxControls.add({checkedState:true});
                }
            }
        }
    }
if (!myDialog.show()) {exit();};

получается такой вот простой диалог:
Screen shot 2015-08-10 at 15.44.57.png


а теперь — внимание — вопрос!
можно ли сделать кнопочку "выделить все", либо "снять пометку со всех"?
 
Последнее редактирование:

Не по теме:

Не по теме:

И что же вам помешало прикрепить скриншот прямо к сообщению? :)

дык кнопка "Изображение" требует URL, и не даёт никакой возможности указать картинку на локальном компе.

нашёл другой — неочевидный — способ

 

Не по теме:
дык кнопка "Изображение" требует URL, и не даёт никакой возможности указать картинку на локальном компе
'fp'
А кнопка «Загрузить файл»? Или скриншот — это не файл?
Прочитайте тогда уж тему для новичков на форуме: http://forum.rudtp.ru/threads/sovety-i-rekomendacii-novichkam-na-forume.50620/

 
  • Спасибо
Реакции: bossrus
  • Спасибо
Реакции: bossrus

Не по теме:
таким вот простым способом
может быть дело привычки, но ИМХО, так гораздо проще для чтения/понимания:
PHP:
(function addDialog ( name ) {

  var w        = new Window ( 'dialog', name ),
      chPanel  = w.add ( 'panel' ),
      btnGroup = w.add ( 'group' );

  chPanel.add ( 'statictext', undefined, 'Список страниц:' );

  for ( var i = 0; i < app.activeDocument.pages.length; i++ ) {
    chPanel.add ( 'checkbox', undefined, app.activeDocument.pages[ i ].name );
  }

  var chSwitch  = chPanel.add ( 'checkbox', undefined, 'Выбрать всё' ),
      btnOK     = btnGroup.add ( 'button', undefined, 'OK' ),
      btnCancel = btnGroup.add ( 'button', undefined, 'Cancel' );

  w.orientation = 'row';
  btnGroup.orientation = 'column';
  btnGroup.alignment = 'top';
  chPanel.alignChildren = 'left';

  chSwitch.onClick = function () {
    for ( var i = 0; i < chPanel.children.length; i++ ) {
      if ( chPanel.children[ i ].type != 'checkbox' ) continue;
      chPanel.children[ i ].value = chSwitch.value;
    }
  }

  w.show ();
} ( 'Test' ));
и наверное лучше без with
PS. подсветка на форуме стала симпатичнее ))

 
Последнее редактирование:
ага. я почти так и сделал. только ещё столбцы под страницы сделал. чтобы диалог для 200 страничного файла не ушёл за экран :)
 
строчка с вводом номеров страниц все равно лучше :)
 
  • Спасибо
Реакции: bossrus
Значит, у нас разные представления об эстетике.:)
Посмотреть вложение 73514 Посмотреть вложение 73515
и в каком случае можно быстрее выбрать вывод страниц 20, 31 и 174? можно даже соревнование устроить :)
строчка с вводом номеров страниц все равно лучше :)
для тех, кто может перечислить номера страниц руками — скрипт на экспорт пдфа не нужен :)
тут нужно, чтобы любая машинистка села, и смогла нужное вывести. ничего не зная ни о индизайне, ни о пдфах.

а так да — текстовая строка — универсальнейший интерфейс :)
 
  • Спасибо
Реакции: Eugenyus
  • Спасибо
Реакции: dumbm1

Не по теме:
@Eugenyus, '))'

Системный диалог печати в файл на пдф-принтер: можно указать и диапазоны страниц и в ручную выделить нужные; то есть, комбинирование разных способов выделения удобнее и практичнее, так как в разных случаях может быть удобно что-то одно.

А горизонтальную полосу прокрутки возможно сделать?
 

Вложения

  • Untitled-1.jpg
    Untitled-1.jpg
    78.7 КБ · Просм.: 846
Последнее редактирование:
Согласен. "Дёшево, надёжно и практично" очередной раз берёт верх над "эстетично":).
как когда-то говорил мусье лебедев (хотя может я его с кирсановым путаю) — дизайн начинается с юзабилити.

а вот как этот кадр сняли, чтобы съёмочная группа не отразилась в зеркалах — вот это вопрос :D


Не по теме:
@Eugenyus, '))''cooll)'

Системный диалог печати в файл на пдф-принтер: можно указать и диапазоны страниц и в ручную выделить нужные; то есть, комбинирование разных способов выделения удобнее и практичнее, так как в разных случаях может быть удобно что-то одно.
скрипты — они пишутся под задачу. и я могу на 100% быть уверенным, что выводящие тётки с трудом умеют включать компьютер. и им совершенно точно непонятно такое сложное математическое понятие, как "диапазон". а учитывая, что из каждого документа будет выводиться по 4-5 страниц — так да. вы правы, но смысла мутить лишнюю строчку интерфейса, которая будет мозолить глаза выводильщицам, и отвлекать от мыслей насущных — нет никакого.

разве что извернуться, и сделать строку, которая будет формироваться исходя из нажатых галочек (с наилучшей генерацией диапазонов на лету), а ввод чисел в строку чтобы эти галочки нажимал — чисто как задача — прикольно. может и добавлю потом. когда процесс пойдёт и появится лишнее время
 
Последнее редактирование:
Нет. В пользовательском интерфейсе (ScriptUI) можно.
http://forum.rudtp.ru/threads/neskolko-poleznyx-ssylok-po-skriptingu.33214/#post-614023
а вот я что-то не нашёл — а как сделать, чтобы окно типа "палитра" не закрывалась моментально после создания?
код
Код:
var myDialog = new Window ("palette","Export");
myDialog.add ("statictext",undefined,"Название журнала "); 
myDialog.show();
вызывает создание палитры с моментальным её закрытием. как же её задержать на экране?



Не по теме:
в курсе, что можно сделать тип "диалог", но я хочу сделать, чтобы в процессе работы скрипта в окне вёлся лог экспорта/печати полос. но при открытом окне диалога нет доступа к настройкам печати/экспорта (индизайн говорит, что при открытом модальном окне доступ к настройкам заблокирован) соответственно — нет возможности вывести нужную страницу.
 
а добавили в самое начало кода директиву #targetengine 'session' ?
или, если редактор кода ругается на "#", то //@targetengine 'session'

пример создания окна 'palette' из ScriptUI for Dummies (2 стр.):
PHP:
var win = createWindow ();
win.show ();
function createWindow () {
  var w = new Window ( 'palette' );
  var m = w.add ( 'statictext' );
  m.text = 'Hello, world!';
  return w;
}
 
Последнее редактирование:
  • Спасибо
Реакции: bossrus
а добавили в самое начало кода директиву #targetengine 'session' ?
или, если редактор кода ругается на "#", то //@targetengine 'session'
о! с этим заработало.
пример создания окна 'palette' из ScriptUI for Dummies (2 стр.):
PHP:
var win = createWindow ();
win.show ();
function createWindow () {
  var w = new Window ( 'palette' );
  var m = w.add ( 'statictext' );
  m.text = 'Hello, world!';
  return w;
}
а чем этот способ лучше, чем мой? строк больше, и запутанность выше? :)
 
Статус
Закрыто для дальнейших ответов.