Inferno Programmer's Guide / Руководство программиста по ОС Inferno: Chapter 3 - Limbo Programming
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Модуль Prefab (prefab.m) содержит компоненты для создания высокоуровневых графических объектов. Он расчитан на применение в устройствах, которые не похожи на обычные компьютеры с клавиатурами и мышами. Он специально предназначен для создания приложений интерактивного телевидения (ITV), управляемых с помощью инфрокрасных пультов. j1m 05.05.09 в 08:16 |
|
|
Концепция и Терминология j1m 30.04.09 в 10:53 |
||
|
Модуль prefab, как графический "тулкит" предоставляет высокоуровневые графические возможности, сравнимые с модулем Draw. j1m 13.05.09 в 11:14 |
||
|
Compound j1m 30.04.09 в 10:54 |
||
|
Тип Compound определяет боксы, рисуемые на экране. Каждый из них появляется в новом окне Compound.image и содержит (возможно nil) заголовок и содержимое. Он занимает место на экране, определенное в Compound.r. Процесс размещение ресурсов для Compound создает окно, но не отрисовывает его. j1m 13.05.09 в 11:19 |
||
|
После того, как Compound будет создан, функция Compound.draw() должна быть вызвана чтобы сделать его видимым. Compound имеет обрамление вокруг себя, определенное в Style.edgecolor и соержащее (сверху вниз): j1m 13.05.09 в 11:22 |
||
|
приложения должны выдеять ресурсы для Compound с помощью его же методов. j1m 13.05.09 в 11:23 |
||
|
Элементы j1m 30.04.09 в 10:54 |
||
|
Модуль Prefab определяет элементы как графические компоненты. Существует шесть типов элементов Prefab: j1m 13.05.09 в 18:07 |
||
|
* EText. Единичная текстовая строка. Текст этого элемента отрисовывается с использованием style.textfont и style.textcolor. j1m 13.05.09 в 18:13 |
||
|
Объекты на экране типа Compound, каждый из которых занимает уникальное окно на экране и содержит объекты типа Element. Element может быть единственным объектом или списком экземпляров Element, которые могут быть использованы для создания структурных компонентов. j1m 14.05.09 в 09:15 |
||
|
Приложения должны выделять ресурсы для объектов типа Element только через его же методы. j1m 14.05.09 в 09:16 |
||
|
Environ j1m 30.04.09 в 10:54 |
||
|
Тип Environ указывает тип и стиль элемента. rapidfx 14.05.09 в 13:20 |
||
|
Цвет членов elemcolor, edgecolor, titlecolor, textcolor и highlightcolor обычно ссылаются на константу ц\занчения цвета (единственную копию цвета пикселя). Все они имеют тип ref Draw->lmage, и все они могут быть любым изображением. rapidfx 14.05.09 в 15:04 |
||
|
Стили выделяются обычными Limbo-выражениями. Не существует специальных функций. Все члены Style должны быть определены. Тем не менее, не вызовет ошибок модификация членов Style после того, как как они были созданы и переданы в функцию Prefab, результвты могут быть непредсказыемыми. rapidfx 16.05.09 в 19:18 |
||
|
Пример j1m 30.04.09 в 10:54 |
||
|
Листинг 3-15 prefabgreet.b
rapidfx 14.05.09 в 17:51 |
||
|
Строки с 34 по 41 определяют цвет и шрифт информации которая будет отображена в окне. rapidfx 16.05.09 в 19:20 |
||
|
строка 43 создает оконное окружение (??), базирующееся на ранее определенном screen и стиле. rapidfx 16.05.09 в 19:21 |
||
|
Строка 52 задает заголовок окна. Строки 53 и 54 задают иконку и текст для отображения. Строка 55 определяет пространство которое будет использовано для размещения элементов. rapidfx 16.05.09 в 19:23 |
||
|
Строка 56 устанавливает размещение элементов по горизонтальной линии. Строки с 57 по 59 добавляют элементысписка в соответствующем порядке. Строка 60 форматирует элементы. rapidfx 16.05.09 в 19:25 |
||
|
Строка 62 задает прямоугольник или окно, которое будет отображено. Оно содержит заголовок и содержимое. Строка 63 фактически отрисовывает окно. rapidfx 16.05.09 в 19:27 |
||
|
// Тут рисунок со страницы 128 j1m 30.04.09 в 10:54 |
||
|
Модули Limbo/Tk j1m 30.04.09 в 10:55 |
||
|
Модули Limbo/Tk содержат общие компоненты GUI, подобные таковым в тулките Tk (меню, кнопки и другие виджеты). Они используются для конструирования графического интерфейса пользователя без прямого вызова примитивов модуля Draw. j1m 05.05.09 в 08:30 |
||
|
Концепция и Терминология j1m 30.04.09 в 10:55 |
||
|
Те, кто знаком со связкой Tcl/Tk, найдут Limbo/Tk очень похожим. Однако, Limbo/Tk не поддерживает всех возможностей Tk 4.0. j1m 13.05.09 в 18:18 |
||
|
Важно отметить, тем не менее, что для приложений Limbo/Tk, язык Limbo используется для создания и управления компонентов Tk (виджетов), а не Tcl. rapidfx 16.05.09 в 19:31 |
||
|
Функция toplevel() j1m 30.04.09 в 10:55 |
||
|
Функция toplevel() создает окно. Она возвращает объект типа Toplevel, который можно передавать другим функциям Limbo/Tk. j1m 14.05.09 в 09:18 |
||
|
Функция cmd() j1m 30.04.09 в 10:56 |
||
|
Функция cmd принимает команды Limbo/Tk как строки для создания и управления графическими объектами Tk. rapidfx 16.05.09 в 19:40 |
||
|
Wmlib j1m 30.04.09 в 10:56 |
||
|
В стандартную поставку Inferno входит менеджер окон wm и модуль Wmlib (wmlib.m), который упрощает обработку команд Limbo/Tk и создание грфических приложений. j1m 14.05.09 в 09:20 |
||
|
Смотри Inferno User s Guide для подробной информации о wm. Смотри Inferno Reference Manual для дополнительной информации о модуле Wmlib. rapidfx 16.05.09 в 19:41 |
||
|
Пример j1m 30.04.09 в 10:56 |
||
|
Слудющая версия программы Greet иллюстрирует использование модулей Limbo/Tk: j1m 14.05.09 в 09:23 |
||
|
1 implement TkGreet; j1m 14.05.09 в 09:25 |
||
|
: // FIXME: Что это? =) j1m 14.05.09 в 09:26 |
||
|
Строка 21 инициализирует дисплей для подготовки к рисованию. rapidfx 16.05.09 в 19:44 |
||
|
Строки с 28 по 36 задают конфигурацию окна для отображения. Это массив строковых элементов, которые похожи на команды Tcl. Создание массивы удобный способ компиляции виджетов, которые формируют окно или часть дисплея. rapidfx 16.05.09 в 19:47 |
||
|
Строка 38 определяет текст и кнопки отображаемые в заголовке и также начальные координаты (как командную строку). rapidfx 16.05.09 в 19:49 |
||
|
Функция Wmlib. titlebar возвращает кортеж (тьюпл) содержащий ссылку на виджет верхнего уровня и канал используемый для уведомления программы о событиях от мыши на заголовке окна. rapidfx 16.05.09 в 19:52 |
||
|
Строки 40 и 41 устанавливают канал используемый для сообщения между виджетами и программой. Он позволяет программам Limbo принимать уведомления о событиях. rapidfx 16.05.09 в 19:53 |
||
|
Строка 43 создает окно при помощи массива строк которые задают окно как команды. rapidfx 16.05.09 в 19:54 |
||
|
Строки с 45 по 56 это бесконечный цикл который обрабатывает события от виджетов. Оператор alt выбирает между двумя каналами: menubut - события от заголовка окна, и cmd - команды от других виджетов (в нашем случае, кнопка OK). rapidfx 16.05.09 в 19:57 |
||
|
После компиляции этой программы, вы можете запустить ее в интерпретаторе Inferno в Window Manager (wm): rapidfx 16.05.09 в 19:58 |
||
|
// Тут рисунок со страницы 133 j1m 30.04.09 в 10:56 |
