Чтение онлайн

ЖАНРЫ

Основы программирования в Linux
Шрифт:

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

Результаты их стараний очевидны: среда GNOME — основа стандартного рабочего стола Linux в дистрибутивах Fedora, Red Hat, Ubuntu, openSUSE и др. (рис. 16.1).

Первоначально название GNOME означало GNU Network Object Model Environment (среда сетевых объектных моделей GNU), что отражает одну из ранее поставленных задач, внедрение в систему Linux объектной интегрированной системы, такой как Microsoft OLE, для того,

чтобы вы могли, например, встроить электронную таблицу в документ текстового процессора. Теперь поставлены новые задачи, и то, что сегодня нам известно как GNOME, — это законченная среда рабочего стола, содержащая панель для запуска приложений, комплект программ и утилит, библиотеки программирования и средства поддержки разработчиков.

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

Рис. 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).

$ gtk-demo

Рис. 16.3 

Примечание

Для каждого виджета отображаются вкладки Info (Информация) и Source (Исходный код). На вкладке Source (Исходный код) приведен программный

код на языке С для применения данного виджета. На ней может быть представлено множество примеров.

Выполните упражнение 16.1.

Упражнение 16.1. Обычное окно

GtkWindow

Давайте начнем программирование средствами GTK+ с простейшей из программ GUI — отображения окна. Вы увидите библиотеки GTK+ в действии и большой набор функциональных возможностей, получаемых из очень короткого программного кода.

1. Введите программу и назовите ее gtk1.с:

#include <gtk/gtk.h>

int main(int argc, char *argv[]) {

 GtkWidget *window;

 gtk_init(&argc, &argv);

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

 gtk_widget_show(window);

 gtk_main;

 return 0;

}

2. Для компиляции gtk1.c введите следующую команду:

$ gcc gtk1.c -о gtk1 `pkg-config --cflags --libs gtk+-2.0`

Примечание

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

Когда вы выполните программу с помощью следующей команды, ваше окно должно раскрыться (рис. 16.4).

$ ./gtk1

Рис. 16.4 

Учтите, что вы можете перемещать окно, изменять его размер, сворачивать и раскрывать его на весь экран.

Как это работает

Включить заголовочные файлы, необходимые для библиотек GTK+ и связанных с ними библиотек, можно с помощью одного оператора

#include <gtk/gtk.h>
. Далее вы объявляете окно как указатель на объект
GtkWidget
.

Затем для инициализации библиотек GTK+ следует выполнить вызов

gtk_init
, передав аргументы командной строки
argc
и
argv
. Это дает возможность GTK+ выполнить синтаксический анализ любых параметров командной строки, о которых комплект должен знать. Учтите, что вы всегда должны инициализировать GTK+ таким способом перед вызовом любых функций GTK+.

Суть примера заключается в вызове функции

gtk_window_new
. Далее приведен ее прототип:

GtkWidget* gtk_window_new(GtkWindowType type);

Параметр type может принимать в зависимости от назначения окна одно из двух значений:

 

GTK_WINDOW_TOPLEVEL
— стандартное окно с рамкой;

 

GTK_WINDOW_POPUP
— окно без рамки, подходящее для диалогового окна.

Почти всегда вы будете применять значение

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

Вызов

gtk_window_new
создает окно в памяти, таким образом у вас появляется возможность перед реальным выводом окна на экран заполнить его виджетами, изменить размер окна, его заголовок и т.д. Для того чтобы окно появилось на экране, выполните вызов функции
gtk_widget_show
:

Поделиться с друзьями: