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

на главную - закладки

Жанры

Основы программирования в 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.с.

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

Слово воина

Прозоров Александр Дмитриевич
1. Ведун
Фантастика:
фэнтези
8.91
рейтинг книги
Слово воина

"Фантастика 2025-58". Компиляция. Книги 1-21

Альтмарк Лев
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2025-58. Компиляция. Книги 1-21

Новая хронология Греции

Фоменко Анатолий Тимофеевич
Научно-образовательная:
история
5.00
рейтинг книги
Новая хронология Греции

Чужой ребенок

Зайцева Мария
1. Чужие люди
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Чужой ребенок

Цикл романов "Целитель". Компиляция. Книги 1-17

Большаков Валерий Петрович
Целитель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цикл романов Целитель. Компиляция. Книги 1-17

Истина и красота. Всемирная история симметрии.

Стюарт Иэн
Элементы
Научно-образовательная:
математика
5.75
рейтинг книги
Истина и красота. Всемирная история симметрии.

«О» - значит омут

Графтон Сью
Кинси Милхоун
Детективы:
крутой детектив
5.00
рейтинг книги
«О» - значит омут

Налог на прибыль

Климова Маргарита Аркадьевна
Деловая литература:
бухучет и аудит
5.00
рейтинг книги
Налог на прибыль

Посольство

Уоллер Лесли
Детективы:
политические детективы
5.00
рейтинг книги
Посольство

Я царь. Книга XXVIII

Дрейк Сириус
28. Дорогой барон!
Фантастика:
боевая фантастика
аниме
попаданцы
5.60
рейтинг книги
Я царь. Книга XXVIII

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Ваше Сиятельство

Моури Эрли
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ваше Сиятельство

Сотворение миров (сборник)

Ларионова Ольга Николаевна
Фантастика:
научная фантастика
5.00
рейтинг книги
Сотворение миров (сборник)