Приложения, виджеты верхнего уровня и диалоги

Примитивы, менеджеры и оболочки являются компонентами Motif предоставляемыми для построения интерфейса. Разработчик собирает эти компоненты в основные модули программы: диалоги, виджеты верхнего уровня и приложения.

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

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

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

Приложения

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

Виджетом, который представляет приложение обычно является MainWindow. Для большинства приложений необходимые операции должны быть доступны из Полосы Меню, находящейся вверху Главного Окна. Посредством просмотра Полосы Меню пользователь быстро определяет какие основные функции предоставляет приложение. Процедуры обратного вызова активации кнопок в меню которые выпадают из Полосы Меню инициируют выполнение операций в приложении. Руководство по стилю Motif содержит описание необходимых и рекомендуемых компонентах для заполнения Полосы Меню приложения и его Выпадающих Меню.

Главное Окно обычно содержит большую прокручиваемую рабочую область. Однокомпонентное приложение обычно производит большую часть своей работы используя эту область. Другие приложения могут потребовать более одной рабочей области.

ApplicationShell заключает главный виджет приложения. Разработчик должен использовать функцию Xt XtAppCreateShell для непосредственного создания ApplicationShell или дать Xt возможность самостоятельно создать оболочку в процессе вызова XtAppInitialize.

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

Виджеты верхнего уровня

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

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

Множественные виджеты верхнего уровня описаны более подробно в Главе 3.

Диалоги

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

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

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