Основы программирования в Linux
Шрифт:
Группа GNOME намеревалась создать рабочий стол для ОС Linux с лицензией GPL, разрабатывая утилиты и программы настройки в едином согласованном стиле, одновременно способствуя развитию стандартов для взаимодействия приложений, печати, управления сеансами и лучших приемов в программировании GUI приложений.
Результаты их стараний очевидны: среда GNOME — основа стандартного рабочего стола Linux в дистрибутивах Fedora, Red Hat, Ubuntu, openSUSE и др. (рис. 16.1).
Первоначально название GNOME означало GNU Network Object Model Environment (среда сетевых объектных моделей GNU), что отражает одну из ранее поставленных задач, внедрение в систему Linux объектной интегрированной системы, такой как Microsoft OLE, для того,
Перед тем как начать программировать, следует убедиться в том, что все библиотеки установлены.
Рис. 16.1
Установка библиотек разработки GNOME/GTK+
Полный рабочий стол GNOME со своими стандартными приложениями и библиотеками разработки GNOME/GTK+ включает в себя более 60 пакетов, поэтому установка GNOME с нуля вручную или из исходного кода — устрашающая перспектива. К счастью, в современных дистрибутивах Linux есть отличные утилиты управления пакетами, превращающие установку GNOME/GTK+ и библиотек разработки в пустяковое дело.
В дистрибутивах Linux Red Hat и Fedora вы открываете средство Package Management (Управление пакетами), щелкнув мышью кнопку меню Applications (Приложения) и выбрав команду Add/Remove Software (Добавить/удалить программы). Когда появится Package Management (рис. 16.2), убедитесь в том, что установлен флажок GNOME Software Development (Разработка программ GNOME). Загляните в область Development (Разработка) для этого установочного параметра.
В этой главе вы будете работать с GNOME/GTK+ 2, поэтому убедитесь в том, что установлены библиотеки версии 2.x.Рис. 16.2
В случае дистрибутивов, применяющих RPM-пакеты, у вас должны быть установлены как минимум следующие RPM-пакеты:
gtk2-2.10.11-7.fc7.rpm;
gtk2-devel-2.10.11-7.fc7.rpm;
gtk2-engines-2.10.0-3.fc7.rpm;
libgnome-2.18.0-4.fc7.rpm;
libgnomeui-2.18.l-2.fc7.rpm;
libgnome-devel-2.18.0-4.fc7.rpm;
libgnomeui-devel-2.18.1-2.fc7.rpm.
В этом примере комбинация символов fc7 указывает на дистрибутив Linux Fedora 7. В вашей системе могут быть слегка отличающиеся имена.
В дистрибутиве Debian и основанных на Debian системах, таких как Ubuntu, вы можете использовать программу apt-get для установки пакетов GNOME/GTK+ с разных сайтов-зеркал (mirrors). Для выяснения подробностей следуйте по ссылкам Web-сайта http://www.gnome.org.
Опробуйте также демонстрационное приложение GTK+, в котором показаны все виджеты и их оформление (рис. 16.3).
Рис. 16.3
Для каждого виджета отображаются вкладки Info (Информация) и Source (Исходный код). На вкладке Source (Исходный код) приведен программный
код на языке С для применения данного виджета. На ней может быть представлено множество примеров.Выполните упражнение 16.1.
Упражнение 16.1. Обычное окно
Давайте начнем программирование средствами GTK+ с простейшей из программ GUI — отображения окна. Вы увидите библиотеки GTK+ в действии и большой набор функциональных возможностей, получаемых из очень короткого программного кода.
1. Введите программу и назовите ее gtk1.с:
2. Для компиляции gtk1.c введите следующую команду:
Будьте внимательны и набирайте обратные апострофы, а не обычные апострофы — помните о том, что обратные апострофы — это инструкции, заставляющие оболочку выполнить заключенную в них команду и добавить ее вывод в конец строки.
Когда вы выполните программу с помощью следующей команды, ваше окно должно раскрыться (рис. 16.4).
Рис. 16.4
Учтите, что вы можете перемещать окно, изменять его размер, сворачивать и раскрывать его на весь экран.
Как это работает
Включить заголовочные файлы, необходимые для библиотек GTK+ и связанных с ними библиотек, можно с помощью одного оператора
Затем для инициализации библиотек GTK+ следует выполнить вызов
Суть примера заключается в вызове функции
Параметр type может принимать в зависимости от назначения окна одно из двух значений:
Почти всегда вы будете применять значение
Вызов