Text/Docu/ru/Cmds.odc

TextCmds

DEFINITION TextCmds;

	IMPORT Dialog;

	VAR
		find: RECORD
			find: ARRAY 256 OF CHAR;
			replace: ARRAY 256 OF CHAR;
			ignoreCase, wordBeginsWith, wordEndsWith, reverseOrientation: BOOLEAN
		END;
		ruler: RECORD
			pageBreaks: RECORD
				notInside, joinPara: BOOLEAN
			END
		END;

	PROCEDURE InitFindDialog;
	PROCEDURE SetNormalOrientation;
	PROCEDURE SetReverseOrientation;
	PROCEDURE FindFirst (option: ARRAY OF CHAR);
	PROCEDURE FindAgain (option: ARRAY OF CHAR);
	PROCEDURE Replace (option: ARRAY OF CHAR);
	PROCEDURE ReplaceAll (option: ARRAY OF CHAR);
	PROCEDURE ReplaceAndFindNext (option: ARRAY OF CHAR);
	PROCEDURE InitRulerDialog;
	PROCEDURE SetRuler;
	PROCEDURE InsertDigitSpace;
	PROCEDURE InsertNBHyphen;
	PROCEDURE InsertNBSpace;
	PROCEDURE InsertParagraph;
	PROCEDURE InsertRuler;
	PROCEDURE InsertSoftHyphen;
	PROCEDURE ShiftLeft;
	PROCEDURE ShiftRight;
	PROCEDURE Subscript;
	PROCEDURE Superscript;
	PROCEDURE MakeDefaultAttributes;
	PROCEDURE MakeDefaultRuler;
	PROCEDURE ListAlienViews;
	PROCEDURE ToggleMarks;
	PROCEDURE HideMarks;
	PROCEDURE ShowMarks;
	PROCEDURE EditGuard (VAR par: Dialog.Par);
	PROCEDURE FocusGuard (VAR par: Dialog.Par);
	PROCEDURE SelectionGuard (VAR par: Dialog.Par);
	PROCEDURE EditSelectionGuard (VAR par: Dialog.Par);
	PROCEDURE SingletonGuard (VAR par: Dialog.Par);
	PROCEDURE FindGuard (VAR par: Dialog.Par);
	PROCEDURE FindAgainGuard (VAR par: Dialog.Par);
	PROCEDURE ReplaceGuard (VAR par: Dialog.Par);
	PROCEDURE ReplaceAllGuard (VAR par: Dialog.Par);
	PROCEDURE MakeDefaultRulerGuard (VAR par: Dialog.Par);
	PROCEDURE ToggleMarksGuard (VAR par: Dialog.Par);

END TextCmds.

Пакет команд для текстовых отображений. Возможно создание следующего меню, используя эти команды:

MENU "Text" ("TextViews.View")
	"&Find / Replace..."	"F"	"TextCmds.InitFindDialog; StdCmds.OpenToolDialog('Text/Rsrc/Cmds', 'Find / Replace')"	""
	"Find &Again"	"F3"	"TextCmds.InitFindDialog; TextCmds.FindAgain('~I~B~E~R')"		"TextCmds.FindAgainGuard"
	"Find &Previous"	"*F3"	"TextCmds.InitFindDialog; TextCmds.FindAgain('~I~B~ER')"		"TextCmds.FindAgainGuard"
	"Find &Previous"	"F2"	"TextCmds.InitFindDialog; TextCmds.FindAgain('~I~B~ER')"		"TextCmds.FindAgainGuard"
	"Find First"	"F4"	"TextCmds.InitFindDialog; TextCmds.FindFirst('~I~B~E~R')"		"TextCmds.FindAgainGuard"
	"Find Last"	"*F4"	"TextCmds.InitFindDialog; TextCmds.FindFirst('~I~B~ER')"		"TextCmds.FindAgainGuard"
	SEPARATOR
	"Shift &Left"		""	"TextCmds.ShiftLeft"	"TextCmds.EditGuard"
	"Shift &Right"		""	"TextCmds.ShiftRight"	"TextCmds.EditGuard"
	"Su&perscript"		""	"TextCmds.Superscript"	"TextCmds.SelectionGuard"
	"Su&bscript"		""	"TextCmds.Subscript"	"TextCmds.SelectionGuard"
	SEPARATOR
	"&Insert Paragraph"		""	"TextCmds.InsertParagraph"	"StdCmds.PasteCharGuard"
	"Insert R&uler"		""	"TextCmds.InsertRuler"	"StdCmds.PasteViewGuard"
	"Insert &Soft-Hyphen"		""	"TextCmds.InsertSoftHyphen"	"StdCmds.PasteCharGuard"
	"Insert &Non-Brk Hyphen"		""	"TextCmds.InsertNBHyphen"	"StdCmds.PasteCharGuard"
	"Insert N&on-Brk Space"		""	"TextCmds.InsertNBSpace"	"StdCmds.PasteCharGuard"
	"Insert &Digit Space"		""	"TextCmds.InsertDigitSpace"	"StdCmds.PasteCharGuard"
	"Toggle &Marks"		""	"TextCmds.ToggleMarks"	"TextCmds.ToggleMarksGuard"
	SEPARATOR
	"Make Default Attributes"		""	"TextCmds.MakeDefaultAttributes"	"TextCmds.SelectionGuard"
	"Make Default Ruler"		""	"TextCmds.MakeDefaultRuler"	"TextCmds.MakeDefaultRulerGuard"
END


VAR find: RECORD
Это интерактор для диалога Find&Replace. Он позволяет указывать несколько параметров: ignoreCase делает поиск нечувствительным к регистру, wordBeginsWith ограничивает поиск началом слов, и wordEndsWith ограничивает поиск концом слов. Вместе wordBeginsWith и wordEndsWith ограничивают поиск целыми словами. reverseOrientation изменяет направление поиска: вместо поиска в направлении к концу текста, поиск идет к началу.

find: ARRAY 256 OF CHAR
Искомая строка.

replace: ARRAY 256 OF CHAR
Замещающая строка.

ignoreCase: BOOLEAN
Определяет, должен ли при поиске учитываться или игнорироваться регистр букв (строчные/прописные).

wordBeginsWith, wordEndsWith: BOOLEAN
Определяют, когда поиск должен ограничиваться началом слова, концом слова, или тем и другим. Последний случай означает, что совпадение должно быть полным.

reverseOrientation: BOOLEAN
Определяет направление поиска, обычное (вперед) или обратное (назад).
Этот флаг влияет на все операции поиска.


VAR ruler: RECORD
Это интерактор для диалога, который выводят линейки для задания свойств, которые обычно не задаются интерактивно.

pageBreaks: RECORD
Эти два параметра, которые в данный момент поддерживаются интерактором ruler, влияют на поведение наборщика при разрыве страниц. Поэтому они сгруппированы во вложенной записи pageBreaks.

notInside: BOOLEAN
Установка этого параметра не допускает разрывов страницы где-либо в тексте после данной линейки и до следующей или до конца текста. Разрыв страницы всё же может быть вставлен, если текст не умещается на одной странице.

joinPara: BOOLEAN
Установка этого параметра предотвращает разрыв страницы между текстом после данной линейки и текстом после следующей. (Если следующей линейки нет, этот параметр ни на что не влияет.) Как и для параметра notInside, действие данного параметра может быть проигнорировано, если текст не уместится на одной странице.


PROCEDURE InitFindDialog
Команда инициализации помещает в поле find.find интерактора содержимое текущего выделения; если выделения нет, find.find остается неизменным. Всякий раз, когда InitFindDialog изменяет find.find, она также сбрасывает параметры поиска find.ignoreCase, find.wordBeginsWith, и find.wordEndsWith в значение FALSE. Довольно полезно вызывать эту команду перед выполнением команд поиска (FindFirst, FindAgain) или открытием диалога Find & Replace.

PROCEDURE SetNormalOrientation
Сбрасывает reverseOrientation в FALSE.

PROCEDURE SetReverseOrientation
Устанавливает reverseOrientation в TRUE.

PROCEDURE FindFirst (option: ARRAY OF CHAR)
Охрана: FindGuard
Ищет первое вхождение строки find.find в тексте, имеющем фокус. Если строка не найдена, издается гудок. Флаги, ignoreCase, wordBeginsWith, wordEndsWith, и reverseOrientation, определяющие режим поиска, извлекаются из интерактора find. Из действие может быть переопределено параметром option. (Если переопределение не требуется, строка option должна быть пустой.) Строка option интерпретируется согласно следующему простому синтаксису:
	option = { [~] (i | b | e | r) }
где буквы i, b, e, и r означают установку флагов режима ignoreCase, wordBeginsWith, wordEndsWith, и reverseOrientation, соответственно. (Регистр букв игнорируется.) Если перед буквой стоит тильда (~), соответствующий флаг режима сбрасывается. Например, следующая строка требует поиск без учета регистра образца с начала слова, причем он не должен являться окончанием слова, к тому же поиск должен выполняться от текущего положения в обратном направлении, т. е. к началу документа:
	"ib~er"

PROCEDURE FindAgain (option: ARRAY OF CHAR)
Охрана: FindAgainGuard
Эта команда ищет строку find.find, начиная с конца выделения. Если выделения нет, она ищет начиная с позиции каретки (курсор в тексте). Если нет и каретки, она ищет с начала сфокусированного текста. Флаги ignoreCase, wordBeginsWith, wordEndsWith, и reverseOrientation, определяют режим поика, так же как и для команды FindFirst.

PROCEDURE Replace (option: ARRAY OF CHAR)
Охрана: ReplaceGuard
Заменяет найденное вхождение искомой строки (find.find) на замещающую строку (find.replace). Флаги ignoreCase, wordBeginsWith, wordEndsWith, и reverseOrientation, определяют режим поика, так же как и для команды FindFirst.

PROCEDURE ReplaceAll (option: ARRAY OF CHAR)
Охрана: ReplaceGuard
Заменяет все вхождения искомой строки (find.find) на замещающую строку find.replace), либо во всем сфокусированном тексте, либо только в выделеннии, если оно есть. Флаги ignoreCase, wordBeginsWith и wordEndsWith, определяют режим поика, так же как и для команды FindFirst.

PROCEDURE ReplaceAndFindNext (option: ARRAY OF CHAR)
Охрана: ReplaceGuard
Заменяет найденное вхождение искомой строки (find.find) на замещающую строку (find.replace). После пытается найти следующее вхождение искомой строки. Флаги ignoreCase, wordBeginsWith, wordEndsWith, и reverseOrientation, определяют режим поика, так же как и для команды FindFirst.

PROCEDURE InitRulerDialog
Команада инициализации полей pageBreak.notInside и pageBreak.joinPara интерактора ruler согласно установкам текущей сфокусированной или выделенной линейки. Если таковой линейки нет, эти поля не изменяются. Полезно вызывать эту команду перед открытием вспомогательного диалога линейки.

PROCEDURE SetRuler
Охрана:
Если имеется выделенная или сфокусированная линейка, устанавливает её параметры notInside и joinPara согласно значений в интеракторе ruler; иначе ничего не делает.

PROCEDURE InsertDigitSpace
Охрана: PasteCharGuard
Вставляет цифровой пробел, т. е., пробел, ширина которого в большинстве шрифтов совпадает с шириной цифры. Реальная ширина цифрового пробела зависит от используемого шрифта; в некоторых шрифтах ширина цифр различна. Также, некоторые разработчики шрифтов делают ширину цифрового пробела равной половине ширины цифры. (Замечания по совместимости: в некоторых предыдущих версиях текстовой системы давалась рекомендация использования цифровых пробелов для имитации чисел, выравненных по-правому краю. Вместо этого используйте позиции табуляции с выравниванием по правому краю.)

PROCEDURE InsertNBHyphen
Охрана: PasteCharGuard
Вставляет неразрывный перенос, т. е. перенос, который не разбивает слово на части.

PROCEDURE InsertNBSpace
Охрана: PasteCharGuard
Вставляет неразрывный пробел, т. е. пробел, который не разбивает слово на части.

PROCEDURE InsertParagraph
Охрана: PasteCharGuard
Вставляет символ para, т. е. символ, обозначающий начало нового абзаца. Обычные разрывы строк не начинают нового абзаца; например, заданный на линейке отступ первой строки применяется только для первой строки абазца, введенного символом para.

PROCEDURE InsertRuler
Охрана: PasteViewGuard
Вставляет новую линейку, которая настраивается также как и ближайшая линейка выше. Если выше линеек нет, используются настройки линейки по умолчанию. (См. ниже команду MakeDefaultRuler.)

PROCEDURE InsertSoftHyphen
Охрана: PasteCharGuard
Вставляет мягкий перенос, т. е. перенос, который виден, только если реально выполняется перенос.

PROCEDURE ShiftLeft
Охрана: SelectionGuard
Эта команда удаляет один символ табуляции или пробел из пустого пространства в начале каждой строки, охваченной выделением.

PROCEDURE ShiftRight
Охрана: SelectionGuard
Эта команда вставляет символ табуляции в начало каждой строки, охваченной выделением.

PROCEDURE Subscript
Охрана: SelectionGuard
Эта команда смещает выделенный текст вертикально вниз, в положение нижнего индекса.

PROCEDURE Superscript
Охрана: SelectionGuard
Эта команда смещает выделенный текст вертикально вверх, в положение верхнего индекса.

PROCEDURE MakeDefaultAttributes
Охрана: SelectionGuard
Устанавливает атрибуты в выделении сфокусированного текста как атрибуты по умолчанию для данного текста.

PROCEDURE MakeDefaultRuler
Охрана: SingletonGuard
Устанавливает параметры выделенной в сфокусированном тексте линейки в качестве параметров линейки по умолчанию для данного текста.

PROCEDURE ListAlienViews
Охрана: FocusGuard
Открывает текст со списком всех отображений нелегалов из данного текста.

PROCEDURE ToggleMarks
Охрана: ToggleMarksGuard
Эта команда показывает линейки, символы para и прочие пометки, если они не были видны, и скрывает их, если были.

PROCEDURE HideMarks
Охрана: FocusGuard
Скрывает линейки, символы para и прочие пометки, если они видны.

PROCEDURE ShowMarks
Охрана: FocusGuard
Показывает линейки, символы para и прочие пометки, если они не видны.

PROCEDURE EditGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым или отображение текстовое, но не допускающее редакитрования, т. е. не позволяющее установить каретку.

PROCEDURE FocusGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым.

PROCEDURE SelectionGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым или отображение текстовое, но не содержит выделения.

PROCEDURE EditSelectionGuard (VAR par: Dialog.Par)
Охранник, действующий аналогично SelectionGuard, но требующий также, чтобы текстовое отображение было в режиме редактирования (режимы контейнеров - Containers).

PROCEDURE SingletonGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым или отображение текстовое, но не содержит выделения синглетона, т. е. выделения одиночного внедренного отображения.

PROCEDURE FindGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым, или поле find.find интерактора содержит пустую строку, т. е. искомая строка не задана.

PROCEDURE FindAgainGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым, или поле find.find интерактора содержит пустую строку и в сфокусированном тексте отсутствует выделение.

PROCEDURE ReplaceGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым, или поле find.find интерактора содержит пустую строку (заменяемая строка не может быть найдена), или сфокусированный текст не допускает редактирование, или в сфокусированном тексте отсутствует выделение (нечего заменять).

PROCEDURE ReplaceAllGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым, или поле find.find интерактора содержит пустую строку (заменяемая строка не может быть найдена), или сфокусированный текст не допускает редактирование. Если все условия выполнены, охранник устанавливает ярлык, в зависимости от того, есть ли в сфокусированном тексте выделение ("Заменить всё в выделении") или нет ("Заменить все в тексте").

PROCEDURE MakeDefaultRulerGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым, или является тектсовым, но в нём не выделена линейка.

PROCEDURE ToggleMarksGuard (VAR par: Dialog.Par)
Охранник, делающий недоступным элемент меню, если сфокусированное отображение не является текстовым. Также он устанавливает ярлык соответствующим образом (ShowMarks / HideMarks).