□ 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
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
. Далее вы объявляете окно как указатель на объект 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
:
gtk_widget_show(window);
Эта функция принимает указатель типа GtkWidget
, поэтому вы просто предоставляете ссылку на свое окно.
Последним вы выполняете вызов функции gtk_main
. Эта основная функция запускает процесс обмена информацией (interactivity process), передавая управление GTK+, и не возвращает его до тех пор, пока не будет выполнен вызов функции gtk_main_quit
. Как видно в программе gtk1.с, этого никогда не происходит, поэтому приложение не завершается даже после закрытия окна. Проверьте это, щелкнув кнопкой мыши пиктограмму закрытия окна и убедившись в отсутствии строки, приглашающей вводить команду. Вы исправите это поведение после того, как познакомитесь с сигналами и обратными вызовами в следующем разделе. Сейчас завершите приложение, нажав комбинацию клавиш + в окне командной оболочки, которое вы использовали для запуска программы gtk1.
Читать дальше