Отследить двойной клик, и другие способы расстановки ударений

Статус
Закрыто для дальнейших ответов.
Уважаемый @Eugenyus, подскажите, пожалуйста, как в Вашем скрипте указать символьный стиль, входящий в группу стилей (что-то у меня не получается).
 
как в Вашем скрипте указать символьный стиль, входящий в группу стилей
Код:
app.activeDocument.selection[0].appliedCharacterStyle = app.activeDocument.characterStyleGroups.item("Имя_группы_стилей").characterStyles.item("Имя_симв_стиля");
Если же хочется прямо в окне скрипта выбирать нужный стиль из выпадающего списка, то предварительно надо собирать в один массив имена всех стилей с указанием групп, которым они принадлежат, а в другой массив — id всех символьных стилей для простоты последующего доступа.
Код:
#targetengine "quickChanges"
var myEventHandler = function(ev){
    try{app.activeDocument.selection[0].appliedCharacterStyle = selectedCS; w.text = "It's working!";}
    catch(e){w.text = "It doesn't work!";}
    }

var myDoc = app.activeDocument;
var csg = myDoc.characterStyleGroups;
var csNames = []; //Этот массив будет отображаться в выпадающем списке
var csIds = []; //Здесь будут храниться все ID стилей
csNames = app.activeDocument.characterStyles.everyItem().name; //Сначала записали стили не в группах
csIds = app.activeDocument.characterStyles.everyItem().id; //Аналогично
for (i = 0; i < csg.length; i++){ //Цикл по группам
    for (j = 0; j < csg[i].characterStyles.length; j++){ //Цикл по стилям в текущей группе
        csNames.push(csg[i].characterStyles[j].name +" ("+csg[i].name+")"); //Формат отображения в окне скрипта: Имя_стиля (Имя_группы)
        csIds.push(csg[i].characterStyles[j].id);
        }
    }
var selectedCS;


var w = new Window("palette");
var cs = w.add("dropdownlist",undefined,csNames);
/* 
Дальше при изменении параметров выпадающего списка 
сразу записываем в переменную выбранный стиль, ориентируясь на его ID.
*/
cs.onChange = function(){
    selectedCS = myDoc.characterStyles.itemByID(csIds[cs.selection.index]); 
    app.activate();
    }

var butStart = w.add("button",undefined,"Start");
var started = false;

butStart.onClick = function(){
    if (!started){
        app.activeDocument.addEventListener('afterSelectionChanged', myEventHandler);
        butStart.text = "Stop";
        }
    else{
        app.activeDocument.removeEventListener('afterSelectionChanged', myEventHandler);
        butStart.text = "Start";
        }
    started = !started;
    app.activate();
    }

w.show();
 
Код:
app.activeDocument.selection[0].appliedCharacterStyle = app.activeDocument.characterStyleGroups.item("Имя_группы_стилей").characterStyles.item("Имя_симв_стиля");
Если же хочется прямо в окне скрипта выбирать нужный стиль из выпадающего списка, то предварительно надо собирать в один массив имена всех стилей с указанием групп, которым они принадлежат, а в другой массив — id всех символьных стилей для простоты последующего доступа.
Код:
#targetengine "quickChanges"
var myEventHandler = function(ev){
    try{app.activeDocument.selection[0].appliedCharacterStyle = selectedCS; w.text = "It's working!";}
    catch(e){w.text = "It doesn't work!";}
    }

var myDoc = app.activeDocument;
var csg = myDoc.characterStyleGroups;
var csNames = []; //Этот массив будет отображаться в выпадающем списке
var csIds = []; //Здесь будут храниться все ID стилей
csNames = app.activeDocument.characterStyles.everyItem().name; //Сначала записали стили не в группах
csIds = app.activeDocument.characterStyles.everyItem().id; //Аналогично
for (i = 0; i < csg.length; i++){ //Цикл по группам
    for (j = 0; j < csg[i].characterStyles.length; j++){ //Цикл по стилям в текущей группе
        csNames.push(csg[i].characterStyles[j].name +" ("+csg[i].name+")"); //Формат отображения в окне скрипта: Имя_стиля (Имя_группы)
        csIds.push(csg[i].characterStyles[j].id);
        }
    }
var selectedCS;


var w = new Window("palette");
var cs = w.add("dropdownlist",undefined,csNames);
/*
Дальше при изменении параметров выпадающего списка
сразу записываем в переменную выбранный стиль, ориентируясь на его ID.
*/
cs.onChange = function(){
    selectedCS = myDoc.characterStyles.itemByID(csIds[cs.selection.index]);
    app.activate();
    }

var butStart = w.add("button",undefined,"Start");
var started = false;

butStart.onClick = function(){
    if (!started){
        app.activeDocument.addEventListener('afterSelectionChanged', myEventHandler);
        butStart.text = "Stop";
        }
    else{
        app.activeDocument.removeEventListener('afterSelectionChanged', myEventHandler);
        butStart.text = "Start";
        }
    started = !started;
    app.activate();
    }

w.show();

Уважаемый Евгений, не знаю, почему, но у меня этот скрипт не работает. Запускаю его из индизайна, появляется кнопка, выбираю из выпадающего списка стиль "ударение" , давлю старт ... а дальше - выделяю букву, но стиль ее не меняется :( И еще вопрос, а нельзя ли сделать так, чтобы при выделении менялась гарнитура символа БЕЗ создания стиля. Это связано с тем, что к слову в целом я могу применить стиль, который может вступить в конфликт со стилем символа.
И вариант скрипта из видео с простановкой маркеров ("=") у меня тоже не работает :( Что-то я совсем плох :(
 
у меня этот скрипт не работает. Запускаю его из индизайна
У меня приведенный выше код работает. А какая у Вас версия InDesign?
а нельзя ли сделать так, чтобы при выделении менялась гарнитура символа БЕЗ создания стиля.
Можно:
Код:
app.activeDocument.selection[0].appliedFont = "Имя_шрифта"
И вариант скрипта из видео с простановкой маркеров ("=") у меня тоже не работает
Вот этот вариант проверен и работает:
Код:
#targetengine "quickChanges"
var myEventHandler = function(ev){
    try{app.activeDocument.selection[0].contents = "="; w.text = "It's working!";}
    catch(e){w.text = "It doesn't work!";}
    }
var w = new Window("palette");
var butStart = w.add("button",undefined,"Start");
var started = false;
butStart.onClick = function(){
    if (!started){
        app.activeDocument.addEventListener('afterSelectionChanged', myEventHandler);
        butStart.text = "Stop";
        }
    else{
        app.activeDocument.removeEventListener('afterSelectionChanged', myEventHandler);
        butStart.text = "Start";
        }
    started = !started;
    app.activate();
    }
w.show();
Если и он у Вас не сработает, то снова возвращаемся к вопросу о версии InDesign. Я проверял в CS5.
 
У меня приведенный выше код работает. А какая у Вас версия InDesign?


Если и он у Вас не сработает, то снова возвращаемся к вопросу о версии InDesign. Я проверял в CS5.

Увы, не работает. У меня CS4 :(
 
У меня есть вариант системы с CS6 , но мы с коллегами решили откатить на CS4 , т.к. в типографии на дупликаторе стоит четверка...:(
 
Насколько я помню, в CS4 ещё не изобрели события "afterSelectionChanged".
 
  • Спасибо
Реакции: catpaw
Насколько я помню, в CS4 ещё не изобрели события "afterSelectionChanged".

Но, насколько я понимаю, это событие влияет только на переключение режимов кнопки, или я опять туплю ?
 
почему бы в типографию не отдавать pdf?
 
при печати в любом случае текст растрируется
 
Но, насколько я понимаю, это событие влияет только на переключение режимов кнопки, или я опять туплю ?
Это не событие влияет на кнопку, а кнопка на событие. Точнее — кнопка включает/выключает отслеживание программой события "Изменение выделенной области".
 
Это не событие влияет на кнопку, а кнопка на событие. Точнее — кнопка включает/выключает отслеживание программой события "Изменение выделенной области".
Понял. А какое-нибудь аналогичное событие в CS4 имеется? (И простите за оффтопы)
 
Статус
Закрыто для дальнейших ответов.