The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Глава 2. Модель программирования на Motif

Содержание
Ориентированная на пользователя модель
Отделение интерфейса пользователя от приложения
Строительные блоки: виджеты-примитивы и гадгеты
Менеджеры
Оболочки
Приложения, виджеты верхнего уровня и диалоги
Ресурсы: настройки пользователя и программы
Обработка ввода и вывода

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

Следующие общие принципы позволяют понять как писать любые Motif программы:

Ориентированная на пользователя модель

Базовым принципом программирования в Motif и Xt является забота приложения о пользователе. За исключением редких случаев программа выполняет действия в ответ на команды или другой вводимые пользователем данные. Как факт, типичная Motif программа проводит большую часть времени в ожидании ввода информации пользователем.

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

Motif и Xt определяет набор типов или классов виджетов. Класс видета может быть подклассом другого класса; в этом случае он наследует некоторые атрибуты и поведение от суперкласса. Motif имеет три базовых класса виджетов:

Определение иерархии виджетов является одной из двух основных задач Motif приложения. Другая задача - определение набора процедур обратного вызова. Процедуры обратного вызова являются основным механизмом посредством которого приложение реагирует на ввод пользователя. Когда пользователь совершает действие типа нажатия на клавишу или кнопку мыши X сервер отправляет приложению событие. Xt распределяет зто событие соответствующему виджету, обычно тому которому пользователь направил ввод. Xt отображает события на одну или более подпрограмм действий виджета. Действие может изменить состояние виджета и, если приложение запросило оповещение об этом действии, может произвести "обратный вызов" программы посредством вызова процедур обратного вызова приложения.

Многие Motif виджеты ресурсы, являющиеся списками процедур обратного вызова. Motif вызывает процедуры из этого списка когда пользователь производит действие некоторого вида. Например, большинство кнопок имеют процедуры обратного вызова вызываемые Motif когда пользователь актвизирует кнопку. Пользователь может активировать кнопку несколькими способами, такими как нажатием клавиши osfSelect или кнопки Btn1 мыши. События, составляющие активизацию и другие значащие действия пользователя определены в общем виде в Руководстве по стилю Motif и описаны для каждого виджета в Справочнике программиста Motif.

Действия пользователя могут заставить Motif изменить состояние и внешний вид виджета. Например, когда пользователь нажимает osfSelect на PushButton, Motif может изменить внешний вид кнопки как будто она была нажата, а затем отпущена, аналогично обычной механической кнопке. Действие может иметь и другой эффект в зависимости от контекста. Например, Motif содержит диалоговый виджет называемый FileSelectionBox, используемый для поиска и выбора файла. Когда пользователь активизирует PushButton кнопку Фильтр в FileSelectionBox, Motif производит поиск и отображает имена файлов которые совпадают с шаблоном отображаемым в другом месте FileSelectionBox.

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

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

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




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру