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

на главную

Жанры

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

 GtkButtonsType buttons, const gchar *message_format, ...);

Эта функция создает диалоговое окно, снабженное пиктограммами, заголовком и настраиваемыми кнопками.

Параметр
type задает готовую пиктограмму и заголовок диалогового окна в соответствии с его предполагаемым назначением; например, окно с предупреждением содержит пиктограмму предупреждения в виде треугольника. Существует четыре возможных варианта для простых диалоговых окон, с которыми вы будете сталкиваться чаще всего:

GTK_MESSAGE_INFO
;

GTK_MESSAGE_WARNING
;

GTK_MESSAGE_QUESTION
;

GTK_MESSAGE_ERROR
.

Вы

также можете выбрать значение
GTK_MESSAGE_OTHER
, применяемое в тех случаях, когда не используются перечисленные типы. Для окна типа
GtkMessageDialog
можно передать тип
GtkButtonsType
(табл. 16.4) вместо перечисления всех кнопок по очереди.

Таблица 16.4

Тип
GtkButtonsType
Описание
GTK_BUTTONS_OK
Кнопка OK
GTK_BUTTONS_CLOSE
Кнопка Close
GTK_BUTTONS_CANCEL
Кнопка Cancel
GTK_BUTTONS_YES_NO
Кнопки Yes и No
GTK_BUTTONS_OK_CANCEL
Кнопки OK и Cancel
GTK_BUTTONS_NONE
Нет кнопок

Теперь остается только текст диалогового окна, который можно создать из строки подстановки, формируемой так же, как в функции

printf
. В данном примере вы спрашиваете пользователя, настаивает ли он на своем требовании удалить файл:

GtkWidget *dialog = gtk_message_dialog_new(main_window,

 GTK_DIALOG_DESTROY_WITH_PARENT,

 GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,

 "Are you sure you wish to delete %s?", filename);

result = gtk_dialog_run(GTK_DIALOG(dialog));

gtk_widget_destroy(dialog);

Это диалоговое окно будет отображаться так, как показано на рис. 16.14.

Рис. 16.14

Окно типа

GtkMessageDialog
— простейший способ обмена информацией или получения ответов на вопросы типа "да/нет". Вы воспользуетесь им в следующем разделе, когда примените полученные знания для создания GUI вашего приложения для работы с базой данных компакт-дисков.

Приложение для работы с базой данных компакт-дисков

В предыдущих главах вы разрабатывали базу данных компакт-дисков с помощью MySQL и интерфейса на языке С. Теперь вы увидите, как просто вставить внешний GUI средствами GNOME/GTK+ и создать пользовательский интерфейс с богатыми функциональными возможностями. 

Примечание

Для проверки примера приложения для работы с базой данных компакт-дисков у вас должны быть установлены СУБД MySQL и библиотеки разработки, т.е. должны выполняться те же самые требования, что и к аналогичному приложению в главе 8.

Из соображений простоты и ясности мы создадим базовый скелетный интерфейс, в котором реализовано лишь подмножество функций — к примеру, вы не сможете добавлять информацию о дорожках в компакт-диски или удалять CD. Но вы увидите в вашем приложении в действии виджеты, обсуждавшиеся в этой главе, и поймете, как они применяются в реальных программах.

Будет написан программный код для следующих ключевых действий:

 регистрация в базе данных из GUI;

 поиск компакт-диска;

 отображение сведений о компакт-диске и его дорожках;

 вставка компакт-диска в базу данных;

 создание окна About (О программе);

 формирование подтверждения при завершении работы пользователя.

Разделим код на три файла, совместно использующие заголовочный файл cdapp_gnome.h. В исходных файлах функции создания окон и диалоговых окон — функции формирования интерфейса — отделены от функций обратного вызова (упражнения 16.11-16.14).

Упражнение 16.11. Файл cdapp_gnome.h

Сначала рассмотрим файл cdapp_gnome.h и функции, которые вы должны реализовать.

1. Включите в исходный текст программы заголовочные файлы среды GNOME и заголовочный файл для функций интерфейса, разработанного вами в главе 8. В данном примере программы используются файлы app_mysql.h и app_mysql.c из главы 8 и созданная там же база данных.

#include <gnome.h>

#include "app_mysql.h"

2. В типе

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

enum {

 COLUMN_TITLE,

 COLUMN_ARTIST,

 COLUMN_CATALOGUE,

 N_COLUMNS

};

3. У вас есть три функции создания окна в файле interface.c.

GtkWidget *create_main_window;

GtkWidget *create_login_dialog;

GtkWidget *create_addcd_dialog;

4. Функции обратного вызова для пунктов меню, панели инструментов, кнопок диалогового окна и кнопки поиска находятся в файле callbacks.с.

Поделиться:
Популярные книги

Око василиска

Кас Маркус
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска

Ученичество. Книга 1

Понарошку Евгений
1. Государственный маг
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ученичество. Книга 1

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV

Кодекс Охотника. Книга IV

Винокуров Юрий
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга IV

Жребий некроманта 3

Решетов Евгений Валерьевич
3. Жребий некроманта
Фантастика:
боевая фантастика
5.56
рейтинг книги
Жребий некроманта 3

Идеальный мир для Лекаря 11

Сапфир Олег
11. Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 11

Хочу тебя навсегда

Джокер Ольга
2. Люби меня
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Хочу тебя навсегда

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Мимик нового Мира 8

Северный Лис
7. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 8

Расческа для лысого

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
8.52
рейтинг книги
Расческа для лысого

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Заход. Солнцев. Книга XII

Скабер Артемий
12. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Заход. Солнцев. Книга XII

Барон не играет по правилам

Ренгач Евгений
1. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон не играет по правилам