Dev/Docu/ru/SubTool.odc

DevSubTool

DEFINITION DevSubTool;

	CONST
		textCmds = 0; formCmds = 1; otherCmds = 2;
		simpleView = 3; standardView = 4; complexView = 5;
		wrapper = 6; specialContainer = 7; generalContainer = 8;

	VAR
		create: RECORD 
			subsystem: ARRAY 9 OF CHAR;
			kind: INTEGER;
			Create: PROCEDURE
		END;

END DevSubTool.


Модуль DevSubTool предоставляет генератор кода (в виде "мастера"), который создает каркас исходного кода для типичной реализации отображения. Эти каркасы расширяются вашими собственными кусками кода и затем компилируются.
DevSubTool поддерживает несколько типов проектов, от простых текстовых команд до обобщенных контейнеров. Исходный документ(ы) всегда создается в виде новой подсистемы, то есть, поддиректории со структурой подсистемы (поддиректории Sym, Code, Docu, Mod).
Заметим, что инструмент использует шаблонные тексты, которые хранятся в директории Dev/Rsrc/New. Изучая эти тексты, в частности, более многосторонние шаблоны модель/отображение/команды, можно узнать многое о принятых в BlackBox принципах разработки и написания кода.

Обычная команда:
	"Create Subsystem..."	""	"StdCmds.OpenToolDialog('Dev/Rsrc/SubTool', 'Create Subsystem')"	""


CONST textCmds
Это значение может быть присвоено create.kind, чтобы создать пакет команд для работы с текстом, то есть, модуль, который импортирует стандартную подсистему Text и расширяет ее своими собственным командами или интеракторами.

CONST formCmds
Это значение может быть присвоено create.kind, чтобы создать пакет команд для работы с формами, то есть, модуль, который импортирует стандартную подсистему Form и расширяет ее своими собственным командами или интеракторами.

CONST otherCmds
Это значение может быть присвоено create.kind, чтобы создать пакет произвольных команд, то есть, модуль, который расширяет BlackBox своими собственным командами или интеракторами.

CONST simpleView
Это значение может быть присвоено create.kind, чтобы создать реализацию простого отображения, которое не имеет модели. Отображение и его команды помещаются в один модуль. Отображение не экспортируется.

CONST standardView
Это значение может быть присвоено create.kind, чтобы создать реализацию отображения с моделью. Модель, отображение и его команды помещаются в один модуль. Модель и отображение не экспортируются.

CONST complexView
Это значение может быть присвоено trans.kind, чтобы создать реализацию отображения с моделью. Модель, отображение и его команды помещаются в отдельные модули. Модель и отображение экпортируются как описания типов, конкретные реализации создаются через объекты директорий.
Эта категория пока не поддерживается.

CONST wrapper
Это значение может быть присвоено trans.kind, чтобы создать реализацию обертки для обертывания произвольного отображения. Отображение-обертка и его команды помещаются в один модуль. Отображение не экспортируется.
Эта категория пока не поддерживается.

CONST specialContainer
Создает контейнер со статическим размещением и без собственного содержания, возможно, для помещения отображений только конкретного типа. Контейнерное отображение и его команды помещаются в один модуль. Контейнерное отображение не экспортируется.

CONST generalContainer
Создает контейнерное отображение с динамическим размещением, возможно, с некоторым собственным содержанием, и, возможно, для помещения отображений только конкретного типа. Модель, отображение и его команды помещаются в отдельные модули. Модель и отображение экспортируются как определения типов, конкретные реализации создаются через объекты директорий. Модель, отображение и диспетчер являются расширениями базовых типов в модуле Containers.
Эта категория пока не поддерживается.

VAR trans
Интерактор для переводного диалога.

subsystem: ARRAY 9 OF CHAR
Имя подсистемы, в которую надо перевести. Имя должно быть допустимым именем подсистемы, от 3 до 8 символов длиной, и начинаться с заглавной буквы.

kind: INTEGER	kind IN {textCmds..generalContainer}
Тип программы, которую надо генерировать.

Create: PROCEDURE
Команда создания. На входе должно быть введено допустимое имя подсистемы. В результате создается новая подсистема.
Директория Dev/Rsrc/New содержит некоторое количество шаблонных документов. Create переводит некоторые из этих документов (в зависимости от kind), заменяя строки с атрибутом зачеркивания (как то:  strikeout) именем подсистемы. Шаблонные файлы затем удаляются.