Эмулятор терминала. 2. Настройки клавиатуры.
Эмулятор терминала.
2. Настройки клавиатуры.
------------------------------
Базовые параметры объектов типа Terminal находятся в ini-файле класса - Terminal.ini.
Любой из этих параметров может быть переопределён для конкретного экземпляра объекта типа Terminal в ini-секции такого объекта в файле конфигурации.
Например.
В файле Terminal.ini из комплекта поставки эмулятора для клавиши <F12> задана такая подставляемая строка:
Код:
ANSI_STR_FOR_KEY[F12] = "F12 "
А в секции [VT52.ini] файла default.cfg такая:
Код:
ANSI_STR_FOR_KEY[F12] = "f12 "
Запустив эмулятор в конфигурации по-умолчанию и нажав клавишу <F12> можно проверить, какая из подстановок будет выполнена.
Всего можно определить в файле Terminal.ini и переопределить в ini-секциях объектов типа Terminal в файлах конфигурации подставляемые строки для следующих клавиш:
Код:
ANSI_STR_FOR_KEY[F1] = "Help me !!! "
ANSI_STR_FOR_KEY[F2] = "Dir\015"
ANSI_STR_FOR_KEY[F3] = "F3 "
ANSI_STR_FOR_KEY[F4] = "F4 "
ANSI_STR_FOR_KEY[F5] = "\033g"
ANSI_STR_FOR_KEY[F6] = "\033h"
ANSI_STR_FOR_KEY[F7] = "\033S"
ANSI_STR_FOR_KEY[F8] = "\033c"
ANSI_STR_FOR_KEY[F9] = "\033\024"
ANSI_STR_FOR_KEY[F10] = "\033\010"
ANSI_STR_FOR_KEY[F11] = "\033\023"
ANSI_STR_FOR_KEY[F12] = "F12 "
ANSI_STR_FOR_KEY[Insert] = "\033P"
ANSI_STR_FOR_KEY[Delete] = "\033e"
ANSI_STR_FOR_KEY[Home] = "\033Q"
ANSI_STR_FOR_KEY[End] = "\033f"
ANSI_STR_FOR_KEY[PageUp] = "\033R"
ANSI_STR_FOR_KEY[PageDown] = "\033d"
ANSI_STR_FOR_KEY[PF1] = "\033P"
ANSI_STR_FOR_KEY[Pad_Slash] = "\033Q"
ANSI_STR_FOR_KEY[Pad_Star] = "\033R"
ANSI_STR_FOR_KEY[Pad_Minus] = "\033S"
ANSI_STR_FOR_KEY[Pad_Plus] = "\012"
ANSI_STR_FOR_KEY[LCtrl] = "\016"
ANSI_STR_FOR_KEY[RCtrl] = "\017"
ANSI_STR_FOR_KEY[LWin] = "\016"
ANSI_STR_FOR_KEY[RWin] = "\017"
ANSI_STR_FOR_KEY[LAlt] = "\016"
ANSI_STR_FOR_KEY[RAlt] = "\017"
ANSI_STR_FOR_KEY[Apps] = "\012"
Легко заметить, что в конфигурации по-умолчанию - клавиши <Ctrl>, <Win> и <Alt>, расположенные слева от пробела - генерят код перехода на русский регистр ( 016 ), а расположенные справа - код перехода на латинский регистр ( 017 ).
Клавиша <Apps> генерит по-умолчанию код LF ( 012 ).
Код, назначенный для клавиши PF1 :
Код:
ANSI_STR_FOR_KEY[PF1] = "\033P"
генерится при нажатии на клавишу <Num Lock>, но только в том случае, если параметр Use_NumLock_as_PF1 имеет действующее значение 1.
По умолчанию параметры управления клавиатурой таковы:
Код:
KeyboardControlling = 1
NumLockControlling = 1
NumpadSwapping = 1
Use_NumLock_as_PF1 = 0
Параметр KeyboardControlling разрешает или запрещает терминалу имитировать нажатия на клавиши <Num Lock>, <Caps Lock> и <Scroll Lock>.
Параметр NumLockControlling позволяет выборочно запретить терминалу имитировать нажатия на клавишу <Num Lock>.
Параметр NumpadSwapping отвечает за имитацию эмулятором терминала - цифрового и дополнительного клавиатурных блоков терминала 15ИЭ-00-013. При имитации терминала VT52 этот параметр лучше установить в 0, а при имитации 15ИЭ-00-013 - в 1.
Если NumpadSwapping = 1, то при включенном <Num Lock> - KEYPAD PC-шной клавиатуры имитирует NUMPAD терминалов VT52 и 15ИЭ-00-013, а стрелки PC-шной клавиатуры - имитируют стрелки терминалов VT52 и 15ИЭ-00-013 ( режим по-умолчанию ), тогда как при выключенном <Num Lock> - KEYPAD PC-шной клавиатуры имитирует KEYPAD клавиатуры 15ИЭ-00-013 ( отсутствующий у VT52 ), а стрелки PC-шной клавиатуры - имитируют клавиши 4, 5, 6 и 8 NUMPAD.
Поскольку большинство динамичных игр для PDP-11 управляются клавишами 4, 5, 6 и 8 NUMPAD - выключив <Num Lock> в режиме NumpadSwapping = 1 - можно передать эти функции стрелкам.
Но главное в том, что большинство программ для ДВК управляются кодами клавиш KEYPAD клавиатуры 15ИЭ-00-013. Поэтому, при выключенном <Num Lock> в режиме NumpadSwapping = 1 такие программы можно использовать более привычным и естественным образом.
...
В окне терминала клавиши <Alt>, <F10>, <Win> и <Apps> не выполняют своих системных функций, а генерят коды наравне с другими клавишами.
Клавиши <Ctrl> генерят назначенные им коды только при одиночном нажатии, тогда как при нажатии совместно с другими клавишами - обеспечивают генерацию управляющих кодов.
В режиме KeyboardControlling = 1:
1. При каждом получении фокуса ввода окном объекта типа Terminal - объект запоминает текущее состояние параметров <Num Lock>, <Caps Lock> и <Scroll Lock> клавиатуры и восстанавливает свой контекст, а при потере фокуса - осуществляет обратную операцию.
Каждый экземпляр терминала имеет свой собственный контекст состояний клавиатуры.
2. Одиночное нажатие на левую клавишу <Shift> всегда устанавливает <Caps Lock>, а одиночное нажатие на правую клавишу <Shift> - всегда сбрасывает <Caps Lock>.
3. Последовательные нажатия на клавишу <Scroll Lock> посылают в выходной поток коды <Ctrl/S> и <Ctrl/Q>.
Эмулятор терминала. 3. Настройки цвета.
Эмулятор терминала.
3. Настройки цвета.
-----------------------
Базовые параметры класса Terminal, определяемые в файле Terminal.ini и переопределяемые ( при необходимости ) в ini-секциях объектов типа Terminal в файлах конфигурации:
Код:
TerminalTextColor_RGB = 0,0,0
FrameBackgroundColor_RGB = 178,178,178
TerminalBackgroundColor_RGB = 170,204,221
позволяют настроить цвет текста и фона в окне терминала.
Например, такие настройки:
Код:
TerminalTextColor_RGB = 44,220,86
FrameBackgroundColor_RGB = 125,130,140
TerminalBackgroundColor_RGB = 42,46,44
дадут такой результат:
http://s1.hostingkartinok.com/upload...377571908c.png
Tакие настройки:
Код:
TerminalTextColor_RGB = 150,200,240
FrameBackgroundColor_RGB = 172,170,160
TerminalBackgroundColor_RGB = 50,60,55
дадут такой результат:
http://s1.hostingkartinok.com/upload...f9c42ed689.png
А такие настройки:
Код:
TerminalTextColor_RGB = 230,210,120
FrameBackgroundColor_RGB = 145,140,135
TerminalBackgroundColor_RGB = 48,44,58
дадут такой результат:
http://s1.hostingkartinok.com/upload...1d18f54a52.png
...
Эмулятор терминала. 4. Настройки курсора.
Эмулятор терминала.
4. Настройки курсора.
--------------------------
Базовые параметры класса Terminal, определяемые в файле Terminal.ini и переопределяемые ( при необходимости ) в ini-секциях объектов типа Terminal в файлах конфигурации:
Код:
CURSOR_Y_START_% = 0
CURSOR_X_START_% = 0
CURSOR_Y_END_% = 100
CURSOR_X_END_% = 100
CURSOR_BLINK_ON_TIME_MS = 800
CURSOR_BLINK_OFF_TIME_MS = 300
позволяют настроить вид и "поведение" курсора.
Когда окно объекта типа Terminal получает фокус ввода - курсор начинает "моргать" с периодами включения и выключения, задаваемыми ( в миллисекундах ) параметрами CURSOR_BLINK_ON_TIME_MS и CURSOR_BLINK_OFF_TIME_MS.
...
Изменяя начальное и конечное значения строки и столбца отображения курсора в матрице символа - можно в широких пределах менять его форму.
По умолчанию курсор занимает всё знакоместо, но в разделе [VT52.ini] файла default.cfg - значения, определяющие форму курсора, переопределяются следующим образом:
Код:
CURSOR_Y_START_% = 85
В результате курсор меняет форму с такой: http://hostingkartinok.com/uploads/i...0ef8c60fa0.png на такую http://s1.hostingkartinok.com/upload...7b2c761155.png.
...
Если же вместо "CURSOR_Y_START_% = 85" использвать такое значение:
то результат будет таким: http://s1.hostingkartinok.com/upload...8613815cab.png
Эмулятор терминала. 5. Настройки полосы статуса внутреннего окна.
Эмулятор терминала.
5. Настройки полосы статуса внутреннего окна.
--------------------------------------------------------
Строка
Код:
InitialStateOf[TerminalStatusBar]= 1
в секции [VT52.ini] файла default.cfg ( как и в секции любого другого объекта типа Terminal в любом другом файле конфигурации ) управляет показом полосы статуса внутреннего окна эмулятора терминала.
Если установить это значение в 0, то результат будет таким:
...
Базовые параметры класса Terminal, определяемые в файле Terminal.ini и переопределяемые ( при необходимости ) в ini-секциях объектов типа Terminal в файлах конфигурации:
Код:
TerminalStatusBar_Part[RUS/LAT] = nPosition[-1] ; nPriority[8] ; bHidden[0]
TerminalStatusBar_Part[GoldMode] = nPosition[-2] ; nPriority[0] ; bHidden[0]
TerminalStatusBar_Part[Log] = nPosition[-3] ; nPriority[4] ; bHidden[0]
TerminalStatusBar_Part[Font] = nPosition[4] ; nPriority[7] ; bHidden[0]
TerminalStatusBar_Part[BPS] = nPosition[3] ; nPriority[5] ; bHidden[0]
TerminalStatusBar_Part[CPS_Limit]= nPosition[2] ; nPriority[6] ; bHidden[0]
TerminalStatusBar_Part[CPS] = nPosition[1] ; nPriority[3] ; bHidden[0]
позволяют настроить положение и присутствие конкретных контролов (виджетов) на полосе статуса терминала.
Виджеты с отрицательными номерами позиции - выравниваются вправо, а с положительными - влево.
Если изменить номера их позиций вот так:
Код:
TerminalStatusBar_Part[RUS/LAT] = nPosition[1] ; nPriority[8] ; bHidden[0]
TerminalStatusBar_Part[GoldMode] = nPosition[2] ; nPriority[0] ; bHidden[0]
TerminalStatusBar_Part[Log] = nPosition[3] ; nPriority[4] ; bHidden[0]
TerminalStatusBar_Part[Font] = nPosition[-4] ; nPriority[7] ; bHidden[0]
TerminalStatusBar_Part[BPS] = nPosition[-3] ; nPriority[5] ; bHidden[0]
TerminalStatusBar_Part[CPS_Limit]= nPosition[-2] ; nPriority[6] ; bHidden[0]
TerminalStatusBar_Part[CPS] = nPosition[-1] ; nPriority[3] ; bHidden[0]
то результат окажется таким:
Параметр bHidden каждого виджета управляет разрешением/запретом его отображения. Чтобы не слишком нужные виджеты перестали "засорять" полосу статуса - их параметры bHidden можно установить в 1.
В итоге, следующие (например) настройки:
Код:
TerminalStatusBar_Part[RUS/LAT] = nPosition[-1] ; nPriority[8] ; bHidden[0]
TerminalStatusBar_Part[GoldMode] = nPosition[-2] ; nPriority[0] ; bHidden[0]
TerminalStatusBar_Part[Log] = nPosition[-3] ; nPriority[4] ; bHidden[0]
TerminalStatusBar_Part[Font] = nPosition[4] ; nPriority[7] ; bHidden[1]
TerminalStatusBar_Part[BPS] = nPosition[3] ; nPriority[5] ; bHidden[0]
TerminalStatusBar_Part[CPS_Limit]= nPosition[2] ; nPriority[6] ; bHidden[0]
TerminalStatusBar_Part[CPS] = nPosition[1] ; nPriority[3] ; bHidden[1]
дадут такой результат:
...
P.S.
В процессе составления данного описания выяснилось, что установка в 1 параметра bHidden кнопки [Log] ( как и кнопки [G] ) не приводит к её "уничтожению". Вместо этого кнопка начинает "жить собственной жизнью". Данная ошибка будет исправлена в следующих версиях эмулятора терминала.
Использование эмулятора в конфигурации по-умолчанию. 2. Системная консоль.
Использование эмулятора в конфигурации по-умолчанию.
2. Системная консоль.
---------------------------
Объекты типа Config организуют окна, открываемые объектами, создаваемыми в используемом файле конфиграции - в виде набора закладок.
Единственная закладка, всегда присутствующая в этом наборе ( и всегда являющаяся крайней слева ) - консоль объекта Config.
Консоль корневого объекта типа Config иерархии эмулируемых конфигураций - выполняет также функции системной консоли эмулятора.
Выбрав закладку Консоль в "эмуляторе ДВК", запущенном в конфигурации по-умолчанию - можно увидеть примерно следующее ( точный вид зависит от используемой темы оформления интерфейса Windows ):
Если в секции [Config.ini] файла default.cfg установить в 1 параметр InitialStateOf[Log], то при каждой загрузке файла конфигурации default.cfg - будет создаваться лог системной консоли с именем файла конфигурации и расширением .log . В конфигурации по-умолчанию это будет файл default.log следующего содержания:
Скрытый текст
Код:
Конфиг загружается: default.cfg
Конфиг: Встроенный модуль : Main_module.em
Конфиг: Встроенный модуль : CPU11_module.em
Конфиг: Встроенный модуль : DSK_module.em
Конфиг: Встроенный модуль : Port_module.em
Конфиг: Встроенный модуль : Terminal_module.em
HD: HD0 подключен к [HDSYS.DSK]
CPU: Скорость эмуляции: Достоверная скорость 1801ВМ1
[0.14] Конфиг загружен
bus: Подготовка эмуляции..
---------------------------------------------------------------------------------
Устройство Имя Компонент Адреса Векторы
---------------------------------------------------------------------------------
1801ВМ1 CPU ВЕ-Регистры 0177700:3
ВЕ-Таймер 0177706:3
Плата МС1201 CpuBoard Сетевой таймер 0100:1
ПЗУ-Бэйсик Отключен
ПЗУ-Пульт 0160000:0
ПЗУ-Загрузчик 0173000:256
ОЗУ 0177600:32
SEL2 0177714:1
SEL1 0177716:1
Диск HD HD 0177720:2
Плата DL11-W TerminalPort Порт терминала 0177560:4 060:2
Сетевой таймер Отключен
Плата DL11-W TerminalPort2 Порт терминала 0176510:4 0310:2
Сетевой таймер Отключен
---------------------------------------------------------------------------------
Эмуляция запущена..
Эмуляция остановлена..
Конфиг закрыт..
[свернуть]
Единственная информация, которая не попадает в лог консоли конфига - та, которая выводится загрузчиком эмулятора на системную консоль ( т.е. консоль корневого конфига ) до загрузки им стартового файла конфигурации - содержит версию эмулятора и дату сборки:
Установив в 1 в секции [Config.ini] файла default.cfg параметр ExtendedStartLog - можно узнать время создания (в секундах от начала загрузки файла конфигурации) каждого объекта эмулируемой конфигурации:
Скрытый текст
Код:
Конфиг загружается: default.cfg
[0.00] ReadIniSection [modules]
[0.00] Конфиг: Встроенный модуль : Main_module.em
[0.00] Конфиг: Встроенный модуль : CPU11_module.em
[0.00] Конфиг: Встроенный модуль : DSK_module.em
[0.00] Конфиг: Встроенный модуль : Port_module.em
[0.00] Конфиг: Встроенный модуль : Terminal_module.em
[0.00] ReadIniSection [objects]
[0.01] Создан объект: [bus]
[0.01] Создан объект: [Debug]
[0.01] Создан объект: [CPU]
HD: HD0 подключен к [HDSYS.DSK]
[0.01] Создан объект: [HD]
[0.06] Создан объект: [VT52]
[0.06] Создан объект: [Booter]
[0.06] Создан объект: [CpuBoard]
[0.06] Создан объект: [TerminalPort]
[0.06] Создан объект: [TerminalPort2]
[0.06] Создан объект: [MIPS_LIMIT_Part]
[0.06] Создан объект: [MIPS_Part]
[0.06] Создан объект: [Timer_Button]
[0.08] Создан объект: [HALT_Button]
[0.08] Создан объект: [Reset_Button]
[0.08] Создан объект: [Power_Button]
[0.08] Создан объект: [Pause_Button]
[0.08] ReadIniSection [links]
[0.09] Объекты связаны
CPU: Скорость эмуляции: Достоверная скорость 1801ВМ1
[0.14] Конфиг загружен
bus: Подготовка эмуляции..
---------------------------------------------------------------------------------
Устройство Имя Компонент Адреса Векторы
---------------------------------------------------------------------------------
1801ВМ1 CPU ВЕ-Регистры 0177700:3
ВЕ-Таймер 0177706:3
Плата МС1201 CpuBoard Сетевой таймер 0100:1
ПЗУ-Бэйсик Отключен
ПЗУ-Пульт 0160000:0
ПЗУ-Загрузчик 0173000:256
ОЗУ 0177600:32
SEL2 0177714:1
SEL1 0177716:1
Диск HD HD 0177720:2
Плата DL11-W TerminalPort Порт терминала 0177560:4 060:2
Сетевой таймер Отключен
Плата DL11-W TerminalPort2 Порт терминала 0176510:4 0310:2
Сетевой таймер Отключен
---------------------------------------------------------------------------------
Эмуляция запущена..
Эмуляция остановлена..
Конфиг закрыт..
[свернуть]
Использование эмулятора в конфигурации по-умолчанию. 3. Отладочная консоль.
Использование эмулятора в конфигурации по-умолчанию.
3. Отладочная консоль.
----------------------------
Выбрав в окне эмулятора, запущенного в конфигурации по-умолчанию, закладку Debug - можно увидеть содержимое отладочной консоли:
На эту консоль эмулятор процессора ( объект CPU типа 1801VM1 ) выводит информацию о всех обращениях к несуществующим адресам и о неопознанных кодах команд.
Узнав, обращение к какому именно отсутствующему адресу или коду команды вызвало ошибку запускавшейся в эмуляторе программы - можно сделать вывод о необходимых для работы такой программы аппаратных средствах.
При запущенном драйвере EM.SYS команды EIS и FIS эмулируются этим драйвером, но поскольку переход в драйвер осуществляется через вектор прерывания по резервной команде - полноценная работа программы, использующей команды EIS и FIS - может сопровождаться непрерывным выводом сообщений о неопознанных командах на отладочную консоль.
Изменение эмулируемой конфигурации. 2. Формат файлов конфигурации.
Изменение эмулируемой конфигурации.
Формат файлов конфигурации.
--------------------------------------------
Так как имеющихся в комплекте поставки эмулятора .cfg-файлов не достаточно "на все случаи жизни", то прежде чем копировать их под другими именами и затем изменять, или "с чистого листа" создавать новые - полезно в общих чертах уяснить, что именно и зачем там написано.
Все файлы конфигурации имеют ( в основном ) следующий формат:
Код:
[section]
key = value
; comment
основанный на формате MS PrivateProfile для .ini-файлов.
Символ ';' имеет особый смысл и исключает строку из рассмотрения ( превращая её в комментарий ) только в том случае, когда является первым непробельным символом в строке.
Три секции в каждом .cfg-файле ( обычно располагающиеся в начале файла ) имеют специальное назначение.
...
Секция [modules] содержит объявления используемых модулей в формате:
Код:
имя_модуля = путь_к_файлу_модуля
Модули эмулятора - это обычные файлы .dll, переименованные в .em
Поиск файла модуля ( если путь к файлу модуля не исключает такой возможности ) вначале осуществляется в каталоге встроенных модулей. В комплекте поставки "эмулятора ДВК" все поставляемые модули встроены в файл pdp11.exe.
В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем каталога встроенных модулей отсутствуют.
Чтобы экспортируемые модулем объекты могли быть использованы в эмулируемой конфигурации - модуль должен быть объявлен в секции [modules].
...
Секция [objects] содержит объявления используемых объектов в формате:
Код:
имя_объекта = имя_модуля:тип_экспортируемого_модулем_объекта
В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем списка экспортируемых модулем объектов отсутствуют.
В процессе загрузки файла конфигурации - объекты создаются в том порядке, в котором они объявлены в секции [objects], и если объект создаёт окно средствами модульного API - такие окна располагаются на панеле закладок объекта Config в порядке создания "владеющих" ими объектов ( слева направо ).
Все имена объектов, объявленных в секции [objects], должны быть уникальны (иначе эмулятор будет ругаться).
...
Секция [links] содержит строки ( несовместимые с форматом MS PrivateProfile для .ini-файлов ), описывающие способы динамического связывания созданных объектов на специальном языке описания связей ( который будет рассмотрен позже ).
В секции [links] "поведение" символа ';' отличается от других секций. В любых других секциях символ ';' "работает" ( превращая строку в комментарий ) только в самом начале строки, а в секции [links] - символ ';' означает начало комментария в любой позиции.
Это позволяет "отключать" несколько последних элементов в строке описания группового присоединения, без необходимости их полного удаления из строки.
...
Все остальные секции .cfg-файлов имеют формат:
Код:
[имя_объекта.ini]
параметр = значение
; комментарий
и автоматически размещаются там объектами при их первом создании ( в том случае, если объект имеет хотя бы одно хранимое состояние или хотя бы один хранимый параметр ).
Если изменить имя какого-либо из объектов, создаваемых в ранее загружавшемся файле конфигурации - в этом файле конфигурации появится новая секция, тогда как "старая и бесхозная" - никуда не денется. Это сделано для того, чтобы при временном "выкомментировании" объектов из конфигурации - секции с их настройками не пропадали.
Начальные значения всех параметров в "свежей" секции объекта - соответствуют их значениям по-умолчанию. Только что автоматически созданная "свежая" секция объекта не может содержать значений базовых параметров ( из глобального ini-файла класса ), однако при любом изменении базовых параметров экземпляра объекта в процессе эмуляции - их изменённые значения будут сохранены в секции этого объекта в файле конфигурации.
Изменение эмулируемой конфигурации. 3. Использование консолей.
Изменение эмулируемой конфигурации.
Свойства окон объектов.
-----------------------------------
Чтобы главное окно объекта попало в закладки конфига - оно должно быть создано при помощи модульного API. Все такие окна принадлежат к базовому классу Workfield, а автоматически создающие их объекты - к базовому классу WorkfieldOwner. Это обеспечивает универсальное единообразие свойств главных окон объектов модульного API.
Для выяснения этих свойств - создадим пустой файл, назовём его test.cfg и загрузим в эмулятор командой меню "Файл -> Открыть":
Открыв затем файл test.cfg в текстовом редакторе - можно обнаружить, что объект Config уже "прописал" туда свою секцию:
Код:
[Config.ini]
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
ExtendedStartLog=0
ActiveWindowHandle=
ActiveConfigID=
InitialStateOf[ControlBar]=0
SaveChangesFor[ControlBar]=0
InitialStateOf[StatusBar]=0
SaveChangesFor[StatusBar]=0
Изменим значения состояний ControlBar и StatusBar на 1:
Код:
[Config.ini]
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
ExtendedStartLog=0
ActiveWindowHandle=
ActiveConfigID=
InitialStateOf[ControlBar] = 1
SaveChangesFor[ControlBar] = 0
InitialStateOf[StatusBar] = 1
SaveChangesFor[StatusBar] = 0
и снова запустим эмулятор:
Сравнив результаты можно заметить, что выше и ниже окна закладок появились полосы для размещения виджетов ( верхняя называется ControlBar, а нижняя - StatusBar ).
Отключим верхнюю полосу, установив InitialStateOf[ControlBar] опять в 0 и добавим в файл test.cfg строки, необходимые для создания консоли:
Код:
[modules]
Main = Main_module.em
[objects]
Con = Main:Console
[Config.ini]
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
ExtendedStartLog=0
ActiveWindowHandle=
ActiveConfigID=
InitialStateOf[ControlBar] = 0
SaveChangesFor[ControlBar] = 0
InitialStateOf[StatusBar] = 1
SaveChangesFor[StatusBar] = 0
Снова запустим эмулятор:
Открыв ещё раз файл test.cfg в редакторе - можно обнаружить, что там появилась новая секция, размещённая созданным экземпляром консоли:
Код:
[Con.ini]
TabTitle=""
InitialStateOf[ControlBar]=1
SaveChangesFor[ControlBar]=0
InitialStateOf[StatusBar]=1
SaveChangesFor[StatusBar]=0
LeftDumpSeparator="«"
RightDumpSeparator="»"
InitialStateOf[Dump]=1
SaveChangesFor[Dump]=0
InitialStateOf[Log]=0
SaveChangesFor[Log]=0
Как видим - здесь состояния ControlBar и StatusBar имеют по умолчанию значения 1, поэтому, перейдя на закладку Con можно окончательно убедиться, что окно консоли имеет свои собственные полосы виджетов и что по умолчанию они включены:
То же справедливо и для окон "свежесозданных" объектов типа Terminal - у них верхняя и нижняя полосы главного окна также по умолчанию включены:
...
Все главные окна объектов ( кроме окна корневого конфига ) имеют параметр TabTitle, определяющий название закладки. По умолчанию этот параметр не задан и тогда название закладки главного окна объекта совпадает с именем объекта, указанным при его создании.
Однако, если в нашем тестовом файле конфигурации test.cfg изменить параметры TabTitle консоли и терминала на "Консоль", то результат может показаться довольно оригинальным: