Быстрое форматирование

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

Если при этом верстальщик отдаёт предпочтение "скоростному" стилю работы, остаётся только представить, какие его ждут эмоции от алгоритма "двойной клик на слове —> навести мышь на стиль —> клик мышью —> посмотреть в рукопись —> найти слово на экране —> двойной клик на слове —> повторить цикл". Сколько раз он промахнётся мимо нужного стиля? А если он использует "горячие" кнопки — сколько раз ему придётся оторвать правую руку от мыши и не промахнуться (режим-то "скоростной") по нужной клавише? А слов, мы помним, десятки, если не сотни...

И если в таком случае невозможно полностью автоматизировать процесс форматирования, то можно ли, по крайней мере, сократить количество телодвижений до минимума, заставив программу назначать нужное форматирование прямо в момент выделения нужного текста? Т.е. было бы здорово, если бы верстальщик двойным кликом выделял текст — и текст сам бы форматировался, получая нужный стиль. Тогда нужно было бы только прощёлкать мышью нужные слова и больше ничего не делать, а это огромная экономия времени и нервов верстальщика.

Именно эту задачу и решает алгоритм, представленный ниже.

#targetengine "quickformatting"
var myEventHandler = function(ev){
	try{
		//Здесь выполняется нужное действие, у меня, например, назначается символьный стиль множеству последовательно выделяемых символов:
		app.activeDocument.selection[0].appliedCharacterStyle = "Нужный символьный стиль"; 
		w.text = "It's working!";
		}
	catch(e){w.text = "It doesn't work!";}
	}//function

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; //При нажатии на кнопку переключаем переменную
    }
w.onClose = function(){
	if (started){
		app.activeDocument.removeEventListener('afterSelectionChanged', myEventHandler);
		}
	}
w.show();

Кнопка запуска/остановки отвечает за поведение программы в момент, когда происходит выделение текста — будет ли выбранный текст получать прописанное в скрипте форматирование, или нет. А из приведенных ниже видео, думаю, ясно, что возможности такого кода позволяют применять его не только для назначения символьного стиля, но и для более сложных задач.

Обновление от 16.12.2015. В скрипт добавлено условие, при котором действие скрипта будет остановлено, если пользователь закроет окно с кнопкой, забыв перед этим нажать Stop. Эти строки должны быть помещены перед последней строкой — строкой показа окна w.show();

w.onClose = function(){
	if (started){
		app.activeDocument.removeEventListener('afterSelectionChanged', myEventHandler);
		}
	}
w.show();

Комментариев нет.

Оставить комментарий:

Имя*:
E-mail*:
Текст комментария*:
Код безопасности*:

Введите код безопасности

expand other scripts list
наверх