Библиотека программиста на рабочей станции.

UNIX
X Window
Motif

АО "Аналитик"
Москва 1994 год

Пособие подготовлено коллективом в составе :
Доценко А.В., Исаков А.Б., Рябов А.Ю.

Под редакцией Рябова А.Ю. - М., АО "Аналитик", 1994 г.

Оригинал: www.sensi.org/~alec/x/

    Содержит описание основных методов и приемов программирования в системе X Window и пакетах, базирующихся на ней. При подготовке издания использовались материалы из доступных зарубежных и российских монографий. Иллюстрирующие программы написаны авторами и приведены для закрепления навыков программирования в данной системе. Книга предназначена для разработчиков системных и прикладных программных средств в системе UNIX и X Window на рабочих станциях и других персональных компьютерах. издание может быть полезно аспирантам и студентам ВУЗов, специализирующихся по информатике и программированию.


АННОТАЦИЯ

    В данном издании делается попытка дать начальное представление об основных аспектах программирования в системе X Window, работающей под управлением операционной среды UNIX. Книгу можно рассматривать как логическое продолжение ранее изданных брошюр ("Windows 3.0. Справочник для программистов", "Windows 3.0. Пособие по программированию", ("Windows 3.0. Программирование. Дополнительные главы") посвященных программированию в объектно-ориентированной среде MS WINDOWS. В настоящем издании основное внимание уделяется описанию общего устройства другой объектно-ориентированной системе - X Window, ее связи с UNIX, возможностях, предоставляемых программисту и пользователю. Много места уделено описанию и объяснению двух пакетов X Toolkit Intrinsic (Xt) и OSF/Motif, которые базируются на X Window и с успехом используются для созданию графических интерфейсов. Наша книга в основном адресована программистам, т.к. содержит описание и разъяснение функционирования базовых механизмов, применяемых в UNIX, X Window, Xt и Motif как для работы со своими внутренними объектами, так и для связи с пользовательскими приложениями. Книга содержит большое количество справочной информации, которая является необходимой и полезной не только для пользователей, начинающих изучать UNIX и X Window, но и для более опытных программистов. Для эффективного понимания и усвоения материала приводятся многочисленные примеры, иллюстрирующие описываемые функции и механизмы.

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

    Одним из главных достоинств издания является то, что представленная подборка содержит базовые знания, позволяющие Вам успешно начать программировать на рабочих станциях Sun, HP, Apollo, DEC Alpha и др., на которых основной является система UNIX, а графической оболочкой - X Window.

    Надеемся также, то данная книга положит начало созданию целой серии изданий, посвященных различным аспектам программирования в системе X Window.


Введение.

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

    В нашей стране UNIX был не очень распространен, и тому были свои причины. Во-первых, это существовавшая направленность на использование небольшого количества типов ЭВМ. В основном это были ЕС и СМ, на которых функционировали специально, под конкретную архитектуру разработанные, ОС, такие как ОС ЕС (IВМ 360/370), ОС РВ (RSХ-11) и РАФОС (RТ-11). Во-вторых, созданные, наконец, у нас во второй половине 80-х версии UNIX (МОС для ЕС, ИНМОС и ДЕМОС для СМ) несколько запоздали. Аппаратура, на которой предполагалась их эксплуатация, морально устарела и в настоящее время практически не используется. В-третьих, родные просторы заполонили компьютеры IBM PC - маломощные (до недавнего времени) машины, на которых установка такой среды, как UNIX, просто не оправдана.

    Но ситуация меняется. РС выросли и стали не просто игрушкой для ввода и распечатки текстов, а компьютером, на котором можно решать серьезные задачи. Кроме того, появился, пока еще, ручеек, но очень много обещающий, по которому в страну "потекли" более мощные машины, так называемые "рабочие станции", для которых UNIX является основной операционной системой. Нет сомнений в том, что, как и в случае IВМ РС, производство станций будет налажено и в пределах России. Подводя итог, и учитывая так же и то обстоятельство, что для "любимых" народом РС так и не появилось "нормальной" ОС (OS/2 так и осталась чем-то, о чем многие слышали, но ни разу не видели, а новинка - Windows NT еще та "темная" лошадка), следует ожидать повышение (если не взрыв) интереса к UNIX в нашей державе.

    Но, как и все во вселенной, UNIX имеет не только достоинства, но и недостатки, основными из них, до недавнего времени, было неудобство общения со средой пользователя и то, что система плохо поддерживает работу с привычной по миру РС графикой. Лет десять назад появились первые программные разработки, призванные поправить положение. Стандартом стала система X Window. Она позволяет рисовать на экране дисплея графические изображения, поддерживает концепцию окон и унифицирует работу с различными устройствами ввода-вывода. Для того чтобы облегчить программирование с применением X Window и упростить создание пользовательских интерфейсов существует несколько пакетов, из которых наиболее широко распространено X Toolkit Intrinsics ( Xt ) и Motif.

    Именно об этой четверке UNIX+X Window+Xt+Motif и идет речь в предлагаемой читателю книге. Учитывая сложность всех этих программных продуктов, ясно, что в столь небольшом издании мы смогли привести лишь основы их построения и базу, необходимую для программирования с их использованием. Перечень литературы, приведенный в конце книги, позволит заинтересованным читателям получить более детальную информацию.

    Книга рассчитана на программистов, имеющих опыт работы в несложных операционных средах (например, МS DOS) и знающих язык Си. Предполагается также, что читателю известны основы компьютерной архитектуры.

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

Структура издания.

Книга состоит из введения, четырех глав и четырех приложений.

В главе 1 кратко описывается устройство ОС UNIX и основные выполняемые ею операции. Приводится описание средств, применяемых при построении программного обеспечения.

Глава 2 посвящена системе X Window. Рассказывается, что она из себя представляет. Перечислены и объяснены приемы программирования.

В главе 3 объясняется назначение пакета X Toolkit Intrinsics. Рассказывается о том, как использовать его для того, чтобы строить эффективное прикладное обеспечение, работающее в среде X Window под управлением ОС UNIX.

Глава 4 содержит описание основных объектов, предоставляемых программисту пакетом Motif .

Приложение 1 содержит справочник по типам данных, структурам и функциям X Window.

Приложение 2 содержит справочник по типам данных, структурам и функциям X Window.

Приложения 3 и 4 содержат справочник по типам данных, структурам и функциям пакета Motif .

Материал иллюстрируется многочисленными примерами программ.

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

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


Содержание :

  1. Программирование в среде UNIX.
    1. История создания и развития системы UNIX.
    2. Основные понятия системы UNIX.
    3. Начальная загрузка UNIX. Вход пользователя в систему.
    4. Файловая система.
      1. Соединение многих файловых систем в одну ("монтирование").
      2. Работа с каталогами.
      3. Создание и уничтожение файлов. Получение информации о файлах.
      4. Ввод-вывод данных.
    5. Процессы.
    6. Сигналы.
    7. Обмен данными между процессами.
      1. Разделяемые файлы.
      2. Каналы межпроцессорного обмена.
      3. Другие способы обмена данными.
        1. Очереди сообщений.
        2. Семафоры.
        3. Разделяемая память.
    8. Распределение памяти.
    9. Инструментальные средства программирования в системе UNIX.
      1. Получение подсказки. Программа man.
      2. Файлы системы UNIX, используемые при компиляции и компоновке программ.
      3. Компилятор языка Си.
      4. Создание библиотек файлов. Программа ar.
      5. Программа make.
      6. Системы контроля исходного кода.
    10. Проблемы переносимости программного обеспечения.
  2. Основы программирования в системе X Window.
    1. Основы.
      1. Общее устройство X Window.
      2. X окно.
      3. Управление окнами.
      4. Графические возможности X Window.
      5. "Свойства" и атомы.
      6. Первый пример.
      7. События.
      8. Атрибуты окна.
    2. Текст и графика.
      1. Графический контекст.
      2. Характеристики графического контекста.
      3. Вывод текста.
        1. Функции, рисующие текст.
        2. Шрифты.
        3. Загрузка шрифтов.
      4. Рисование графических примитивов.
      5. Изображение областей.
        1. Работа с областями простой формы.
        2. Работа с областями сложной формы.
      6. Очистка и копирование окон или из частей.
      7. Работа со структурой XImage
      8. Работа с цветом.
        1. Структура XVisualInfo.
        2. Создание и использование цветовых палитр.
        3. Именование цветов.
        4. Выделение цветов программами - клиентами.
    3. Работа с внешними устройствами.
      1. Клавиатура.
        1. События, соответствующие сигналам, посылаемым клавиатурой.
        2. Физические и логические коды клавиш.
        3. Символы и ASCII строки.
        4. Пример программы, работающей с клавиатурой.
        5. Задание параметров клавиатуры.
      2. Мышь.
        1. События, порождаемые мышью.
        2. Работа с курсором мыши.
        3. Задание параметров мыши.
      3. "Захват" клавиатуры и/или мыши.
    4. Программы и их ресурсы.
      1. Формат файла ресурсов.
      2. Доступ к ресурсам программ.
    5. Передача данных между программами.
      1. Механизм "свойств".
      2. Общение с менеджером окон.
  3. Программирование с использованием библиотеки X Toolkit Intrnsics (Xt).
    1. Основы Xt.
      1. Что такое объекты Xt.
      2. Инициализация программы. Контекст программы.
      3. Первый пример.
    2. Объекты Xt и взаимодействие с ними.
      1. Классы объектов.
      2. Атрибуты (ресурсы) объектов.
      3. Управление объектами.
      4. Модификация и чтение ресурсов объекта.
      5. "Динамические" ресурсы объектов.
        1. Процедуры обратного вызова (callback).
        2. Использование action-процедур.
        3. Обработчики событий.
    3. Дополнительные возможности Xt.
      1. Ввод данных из файла или из внешнего устройства.
      2. Таймер.
      3. "Рабочие" (work) процедуры.
      4. Управление очередью событий.
      5. Акселераторы.
      6. Процедуры, предназначенные для работы с окнами объектов.
      7. Программы, имеющие много объектов (окон) верхнего уровня.
    4. Xt и ресурсы программ.
      1. Формат файла описания ресурсов.
      2. Создание базы данных ресурсов программы.
      3. Получение ресурсов программы.
      4. Процедуры, преобразующие значения ресурсов от одного типа к другому ("Конверторы").
  4. Множество widget OSF/Motif.
    1. Основные обозначения и файлы-заголовки Motif
    2. Основные классы объектов Motif.
      1. Класс XmPrimitive.
        1. Класс
        2.  
      2. Класс XmManager.
        1.  
      3. Класс XmMenuShell.
      4. Класс XmDialogShell.
      5. Класс XmGadget и его подклассы.
    3. Создание и использование меню.
    4. Диалоги.
    5. Вывод текста.