Менеджеры

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

Класс Motif виджетов XmManager является суперклассом для всех менеджеров. XmManager является подклассом от Core. Аналогично XmPrimitive XmManager содержит ресурсы для управления цветом или пиксельным изображением используемыми для изображения, теней и прямоугольника подсветки. Большинство менеджеров не имеют тени или прямоугольника подсветки, но гадгет потомки наследуют эти параметры. Менеджеры также имеют ресурсы для управления клавиатурным переходом и они предоставляют процедуры обратного вызова для обработки запроса пользователя на помощь. В дополнение они содержат трансляции и действия для диспетчеризации событий ввода для гадгет потомков, обычно для потомки содержащего текущий фокус клавиатурных событий.

XmManager не может использоваться для создания экземпляров в программе, он предназначен только для использования в качестве суперкласса для других классов виджетов. Motif содержит несколько специализированных подклассов менеджеров, обобщаемых в последующих разделах.

Рамки

Рамка (Frame) это простой менеджер который окружает единственного потомка тенью и свободным полем. Рамка также может иметь другого потомка который отображается как название рамки.

Рамки более подробно описываются в главе 8.

Регуляторы

Регуляторы (Scale) это менеджеры, выполняющие функции управляющих элементов. Они отображают значение в пределах некоторого диапазона и дополнительно позволяют пользователю установить новое значение. Их внешний вид и поведение аналогичны полосе прокрутки без стрелочек. Они также имеют заголовок и могут отображать текущее значение рядом с бегунком. Если приложение добавит дополнительные потомки к регулятору, то он расположит их строго напротив прямоугольной области представляющей даипазон значений, и эти потомки могут быть использоваться как щкалы или метки значений.

Подробнее регуляторы рассмотрены в главе 5.

Окна панелей

Окна панелей (PanedWindow) распологают своих потомков вертикально сверху вниз или горизонтально и устанавливают всем им одинаковую ширину. Каждый потомок является панелью. Между каждой парой парелей окно панелей вставляет необязательный разделитель и орган управления называемый сэшем. Манипулируя сэшем с помощью мыши или клавиатуры пользователь может увеличить или уменьшить высоту примыкающих панелей. Окно панелей содержит ресурсы для для управления свободых полей, пробелов между панелями и внешним видом сэша. Каждая панель окна панелей содержит ресурсы указывающие максимальную и минимальную высоту и может или нет панель самостоятельно, иначе говоря должно ли окно панелей позволять, изменять размер без вмешательства пользователя.

Дополнительную информацию об окнах пнелей можно найти в главе 8.

Окна прокрутки и главные окна

Окна прокрутки (ScrolledWindow) управляют окном просмотра и полосами прокрутки для реализации окна в виртуальный прокручиваемый элемент. Пользователь может перемещать окно просмотра для отображения различных частей прокручиваемого элемента с использованием полос прокрутки или клавиатурных команд прокрутки.

Окно прокрутки способно автоматически проиводить операции прокрутки. В этом режиме приложение создает виджет, который представляет прокручиваемый элемент, как потомкаокна прокрутки. Окно прокрутки затем создает окно отсечения для выполнения функций окна просмотра, создает и берет на управление полосы прокрутки и изменяет содержимое окна просмотра в ответ на команды прокрутки выдаваемые пользователем.

Окно прокрутки также может позволять приложению выполнять операции прокрутки. В этом режиме приложени само может создать и взять на управление полосы прокрутки и должно изменять содержимое окна просмотра в ответ на действия пользователя.

Списки и текстовые виджеты обычно используются в качестве прокручиваемых элементов. Motif содержит соответствующие процедуры для создания списков и тескстовых виджетов внутри окна прокрутки, о получающиеся прокручиваемые списки (ScrolledList) и прокручиваемые текстовые (ScrolledText) виджеты выполняющие операции прокрутки без участия приложения.

Главное окно (MainWindow) является подклассом окна прокрутки которое предназначено для использвание как главное окно приложения. В дополнение к окну просмотра и полосам прокрутки главное окно содержит необязательные полосу меню (MenuBar), командное окно и окно сообщений.

Более подробно виджеты Окно Прокрутки и Главное окно описываются в главе 8.

Строки-Столбцы

Строки-Столбцы (RowColumn) реализуют как меню так и Рабочие Области (WorkAreas). Меню это виджеты которые позволяют пользователю сделать выбор из действий или состояний. Motif поддерживает четые базовые вида меню:

Одно из применений режима Рабочей Области виджета Строки-Столбцы состоит в содержании набора кнопок ToggleButton для образования наборов кнопок RadioBox и CheckBox. Когда пользователь выберет кнопку ToggleButton ее состояние изменится с включено на выключено или с выключено на включено. Другим применением является расположение некоторого набора виджетов в строки, колонки и двухмерные структуры.

RowColumn описан более подробно в главе 6.

BulletinBoard (Доска Объявлений), Form (Форма), MessageBox (Поле Сообщения), SelectionBox (Поле Выбора)

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

Обычно суперклассом для диалоговых виджетов является XmBulletinBoard. Диалоговый виджет может быть как непосредственно BulletinBoard, так и одним из более специализированных подклассов. BulletinBoard является контейнером без автоматически создаваемых потомков, он предоставляет обобщенное поведение необходимое для большинства диалогов. Его подклассы предоставляют дочерние виджеты и специфическое поведение специфичное для некоторых типов диалогов:

Диалоги описываются более подробно в Главе 7.

DrawingArea (Область Рисования)

DrawingArea является менеджером предназначенным для использования в качестве области, содержащей графические объекты. Приложение должно взаимодействовать с DrawingArea на значительно более низком уровне чем с другими Motif виджетами, но DrawingArea предоставляет приложения более мелкоуровневую информацию о событиях. DrawingArea содержит процедуры обратного вызова для оповещения приложения когда выставляется или изменяет размер и когда он принимает ввод с клавиатуры или от мыши. Приложение обычно должно использовать подпрограммы Xlib для отрисовки в DrawingArea и приложение отвечает за обновление содержимого когда это необходимо. Гибкость DrawingArea делает его часто используемым видетом для реализации как графических так и текстовых возможностей, не предоставляемых другими Motif виджетами.

DrawingArea описывается более подробно в Главе 15.

ComboBox (Поле со Списком)

Виджет ComboBox совмещает возможности виджета TextField и виджета List. Он позволяет пользователю вводить информацию через TextField и также предоставляет список возможных значений через List для завершения ввода в текстовое поле. Приложение предоставляет массив композитных строк которые заполняют этот список и также устанавливет количество видимых элементов списка. Если в списке содержится большее число элементов чем может быть видно (определяется значением ресурса \textbl{XmNvisibleItemCount}), то отображается вертикальная полоса прокрутки позволяющая пользователю прокручивать содержимое списка. Список может отображаться все время, или он может выводиться пользователем посредством нажатия на кнопку вниз при "выпадающем вниз" стиле ComboBox.

Текстовое поле в ComboBox может быть редактируемым или нередактируемым. Если TextField является редактируемым, то пользователь может непосредственно произвести набор в поле для ввода вюбора. Если оно не редактируемо, то печать текста может вызвать алгоритм поиска который позволит сделать выбор из списка используя символы, набранные пользователем. В обоих случаях элемент списка может быть выбран с помощью клавиатуры или мыши. Когда элемент является выбранным, он отображается в реверсных цветах и списке и отображается в текстовом поле ComboBox.

ComboBox более подробно описан в Главе 6.

Spin Boxes (Счетчик)

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

SimpleSpinBox является "готовым к использованию" подклассом от SpinBox. Текстовое поле для SimpleSpinBox создается автоматически.

SpinBox и SimpleSpinBox более подробно описаны в Главе 6.

Container (Контейнер)

Container является менеджером, который принимает потомков только класса XmIconGadget или его подклассов. Он выстраивает этох потомков в различных форматах и просматривать в зависимости от установок их ресурсов, и позволяющий производить выделение и манипулирование потомками.

Более подробно Container описан в Главе 8.

Notebook (Записная книжка)

Notebook является менеджером который отображает только одного потомка в одно время. Каждый потомок имеет назначенный ему номер страницы в Notebook и отображается пользователем посредством нажатия клавиши табуляции или прокрутчиков странжиц в Notebook.

Подробнее Notebook описан в главе 8.