gint result;
2. Инициализируйте как обычно библиотеки GNOME и затем создайте и отобразите на экране главное окно и диалоговое окно вашей регистрации:
gnome_program_init("CdDatabase", "0.1", LIBGNOMEUI_MODULE, argc, argv,
GNOME_PARAM_APP_DATADIR, "", NULL);
main_window = create_main_window();
gtk_widget_show_all(main_window);
login_dialog = create_login_dialog();
3. Вы ждете в цикле, пока пользователь не введет корректную комбинацию имени пользователя и пароля. Он может выйти из приложения, щелкнув мышью кнопку Cancel, причем в этом случае ему придется подтвердить свое действие:
while (1) {
result = gtk_dialog_run(GTK_DIALOG(login_dialog));
if (result != GTK_RESPONSE_ACCEPT) {
if (confirm_exit()) return 0;
else continue;
}
user_const = gtk_entry_get_text(GTK_ENTRY(username_entry));
pass_const = gtk_entry_get_text(GTK_ENTRY(password_entry));
strcpy(username, user_const);
strcpy(password, pass_const);
if (database_start(username, password) == TRUE) break;
4. Если функция database_start
завершается аварийно, вы выводите сообщение и диалоговое окно регистрации снова отображается на экране:
GtkWidget* error_dialog =
gtk_message_dialog_new(GTK_WINDOW(main_window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
"Could not log on! — Check Username and Password");
gtk_dialog_run(GTK_DIALOG(error_dialog));
gtk_widget_destroy(error_dialog);
}
gtk_widget_destroy(login_dialog);
gtk_main();
return 0;
}
5. Для компиляции этого приложения напишите make-файл. Как и в
-L/usr/lib/mysql
После опции -L
поместите каталог, в котором ваша система хранит библиотеки MySQL:
all: app
app: app_mysql.c callbacks.с interface.c main.с app_gnome.h app_mysql.h
gcc -o app -I/usr/include/mysql app_mysql.с callbacks.с interface.c main.с -lmysqlclient `pkg-config --cflags --libs libgnome-2.0 libgnomeui-2.0`
clean:
rm -f app
6. Теперь для компиляции приложения для работы с компакт-дисками просто воспользуйтесь командой make
:
make -f Makefile
Когда вы запустите приложение арр, то получите ваше приложение для работы с базой данных компакт-дисков в стиле GNOME (рис. 16.15)!
Рис. 16.15
Резюме
В этой главе вы узнали о программировании с помощью библиотек GTK+/GNOME для создания приложений с профессионально выглядящем интерфейсом GUI. Сначала вы рассмотрели с X Window System и научились применять комплекты инструментальных средств, а затем вкратце познакомились с принципами работы GTK+ под управлением системы объектов и механизма сигналов/обратных вызовов этого комплекта инструментов.
Далее вы перешли к API виджетов GTK+, продемонстрировав их применение на простых и более сложных примерах, приведенных в нескольких листингах программ. Рассмотрев виджет GnomeApp
, вы научились легко создавать меню с помощью вспомогательных макросов. В заключение вы узнали, как создавать модальные и немодальные диалоговые окна для взаимодействия с пользователем.
И в конце главы вы создали средствами GNOME/GTK+ интерфейс пользователя для вашей базы данных компакт-дисков, который позволяет регистрироваться в базе данных, искать компакт-диски и пополнять базу данных новыми CD.
В
Глава 17
Программирование в KDE с помощью Qt