дальше выше обратно Содержание
Следующий пункт: Дополнительные возможности Xt Надпункт: Программирование с использованием библиотеки Xt Предыдущий пункт: Основы Xt

Объекты Xt, их классификация

Xt предоставляет набор средств для создания объектов, которые используются программами для общения с пользователем, а в общем случае и с остальным внешним миром.

Каждый создаваемй программой widget есть представитель того или иного класса. Xt и пакеты, на нём основывающиеся, такие как OSF/Motif, Athena, Tk/tcl, Open Look, etc., имеют большое количество таких классов. Создание новых widget, не предусмотренных в стандартных библиотеках, требует и создания (определения) соответствующего класса, что, обычно, является трудоёмкой задачей.

Каждый класс имеет ряд фиксированных характеристик, являющихся общими для всех его экземпляров (например, список callback-процедур). Значения этих характеристик у самих объектов могут различаться.

Все классы Xt образуют иерархию (см. рисунок). Если класс B ближе к вершине иерархии, чем класс D, то B называется базовым для D, а D называется производным классом (или подклассом) для B.

Подклассы наследуют характеристики всех своих базовых классов. Это означает, экземпляр класса имеет характеристики не только своего класса, но и атрибуты всех базовых классов.

Иерархия классов Xt.

В программах каждый класс идентифицируется переменной, которая указывает на соответствующую структуру данных. Эту переменную называют указателем на класс. Данные этой структуры заполняются при инициализации Xt.

Основные классы widget:

Object.
Абстрактный класс (класс, не порождающий собственного объекта), который используется в качестве корня дерева всех объектов. Он содержит единственный подкласс:
RectObj.
Абстрактный класс, который используется для определения некоторых общих характеристик, необходимых для функционирования различных типов объектов (например, для объектов, не имеющих окна). Он содержит подкласс:
Core.
Корень дерева классов widget, имеющих окна. Этот класс определяет характеристики, общие для всех объектов, например такие, как размер окна widget и его положение на экране. Содержит подкласс:
Composite.
Widget, относящиеся к данному классу, могут быть родительскими по отношению к другим объектам. Экземпляры класса Composite определяют следующие особенности поведения своих подобъектов:
  • задаёт местоположение ``дочерних'' widget согласно тем или иным ограничениям;
  • при уничтожении освобождает память, используемую подобъектами (при уничтожении widget класса Composite сначала будут уничтожены все её ``потомки'');
  • управляет появлением на экране окон своих дочерних widget;
  • управляет передачей фокуса ввода между объектами.
Класс Composite содержит подклассы:
Constraint.
Это класс представляет собой дальнейшее расширение базового класса. Его экземпляры имеют дополнительные возможности для управления размером и местоположением своих потомков. Например, подобъекты могут размещаться в специальном порядке: в ряд, в столбец и т.д.
Shell.
Это специальный класс, предназначенный для взаимодействия с менеджером окон. Widget из этого класса может иметь только одного потомка. Класс Shell содержит подклассы:
OverrideShell.
Это важный подкласс класса Shell. Для окна widget данного класса атрибут override_redirect устанавливается в значение True, т.е. менеджер окон его не контролирует. Как правило, окна объектов этого класса не имеют аксессуаров, добавляемых менеджером окон (заголовок, рамка, стандартные кнопочки), и используются в основном для создания меню различного типа.
WMShell.
Это специальный подкласс класса Shell, содержащий дополнительные поля, необходимые для взаимодействия с менеджером окон. Содержит:
VendorShell.
Этот класс предназначен для того, чтобы дать возможность взаимодействия со специальными менеджерами окон. Этот класс содержит подклассы:
TopLevelShell.
Widget данного класса, как правило, используются как shell-объекты дерева объектов программы. Он содержит:
ApplicationShell.
Программа может иметь, как правило, только один экземпляр, принадлежащий классу ApplicationShell.

TransientShell.
Этот класс отличается от предыдущего только особенностями взаимодействия с менеджером окон. Окна widget данного класса не могут быть минимизированы (превращены в пиктограмму). Но если в пиктограмму превращается родитель объекта класса TransientShell, то окно widget убирается с экрана. Класс TransientShell используется для создания диалогов.

Каждый из классов widget, а следовательно, и создаваемые на его основе объекты, имеют достаточно большое количество параметров. В терминах Xt они называются ``ресурсы''. Xt предоставляет широкий выбор средств для работы с ними.


дальше выше обратно Содержание
Следующий пункт: Дополнительные возможности Xt Надпункт: Программирование с использованием библиотеки Xt Предыдущий пункт: Основы Xt

WebMaster at Bolizm
Sat Oct 5 20:29:45 MSD 1996