Оболочки

Пользователи приложений системы X Window обычно используют менеджер окон, специальное приложение которое может управлять положением, размером и декорациями рамки окон верхнего уровня на дисплее. Motif предоставляет свой собственный менеджер окон, Motif Window Manager (MWM), но Motif приложение может также взаимодействовать с другими менеджерами окон.

Менеджер окон взаимодействует с другими приложениями посредством протокола определенного документом системы X Window Inter Clinet Communication Conventions Manual (ICCCM). Xt и Motif определяют группу виджетов чья основная задача окружение других виджетов и взаимодействие с менеджером окон. Такие виджеты называются оболочками.

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

Каждый виджет с окном верхнего уровня -- т.е. окном, чьим предком является корневое окно экрана -- нуждается в заключение в оболочку. Motif предоставляет три класса оболочек: VendorShell, DialogShell и MenuShell.

VendorShell (Оболочка Производителя)

VendorShell является классом оболочек предоставляющим Motif-специализированное поведение для оболочек кроме тех, которые окружают меню. Он отвечает за взаимодействие между приложением и MWM. VendorShell является суперклассом для других подклассов. TopLevelShell является Xt подклассом VendorShell который окружает виджеты верхнего уровня в приложении. ApplicationShell это другой Xt подкласс от VendorShell который окружает главный виджет в приложении.

Многие приложения создают только один ApplicationShell. Программа должна создать эту оболочку непосредственно или использовать удобную Xt подпрограмму XtAppInitialize для инициализации приложения и автоматического создания ApplicationShell. (От автора перевода: в версии X Window X11R6.3 введена более обобщенная подпрограмма инициализации приложения XtOpenApplication, а подпрограмма XtAppInitialize считается устаревшей.)

DialogShell (Оболочка диалога)

DialogShell является подклассом VendorShell который окружает диалоги. Поскольку менеджер окон учитывает обобенности диалогов, которые обычно являются временными; они обычно появляются для предоставления пользователю информации или запроса информации от пользователя, а затем они исчезают. DialogShell является подклассом от Xt класс TransientShell, который отслеживает приложение к которому отностися диалог. Пользователь не может свернуть диалог в иконку отдельно от главного окна приложения.

DialogShell разработан для содержания потомка который является подклассом от BulletinBoard. Большинство удобных подпрограмм Motif которые создают диалоги автоматически создают и DialogShell как предка.

MenuShell (Оболочка Меню)

MenuShell является классом оболочек, предназначенным для окружения PopupMenu (Всплывающих меню) и PulldownMenu (Выпадающих Меню). MenuShell является подклассом Xt класса XtOverrideShell. Этот класс позволяет оболочке обходить менеджер окон. Большинство удобных подпрограмм Mofit которые создают PopupMenus и PulldownMenus автоматически создают предка класса MenuShell.