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

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

Жанры

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

 search_button = gtk_button_new_with_label("Search");

8. Окно

gtk_scrolled_window
предоставляет полосы прокрутки, позволяя виджету (в данном случае
GtkTreeView
) превышать размеры окна:

 scrolledwindow = gtk_scrolled_window_new(NULL, NULL);

 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow),

GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

9. Далее скомпонуйте интерфейс, применяя стандартным способом виджеты-контейнеры:

 vbox = gtk_vbox_new(FALSE, 0);

 hbox = gtk_hbox_new(FALSE, 0);

 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 6);

 gtk_box_pack_start(GTK_BOX(hbox), search_button, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(vbox), scrolledwindow, TRUE, TRUE, 0);

10. Затем создайте виджет

GtkTreeView
, вставьте три столбца и поместите его в окно
GtkScrolledWindow
:

 treeview = gtk_tree_view_new;

 renderer = gtk_cell_renderer_text_new;

 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview),

COLUMN_TITLE, "Title", renderer, "text", COLUMN_TITLE, NULL);

 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview),

COLUMN_ARTIST, "Artist", renderer, "text", CQLUMN_ARTIST, NULL);

 gtk_tree_view_insert_column_with_attrihutes(GTK_TREE_VIEW(treeview),

COLUMN_CATALOGUE, "Catalogue", renderer, "text", COLUMN_CATALOGUE, NULL);

 gtk_tree_view_set_search_column(GTK_TREE_VIEW(treeview),

COLUMN_TITLE);

 gtk_container_add(GTK_CONTAINER(scrolledwindow), treeview);

11. В заключение задайте содержимое главного окна, вставьте строку состояния

GnomeApp
и подсоедините нужные обратные вызовы:

 gnome_app_set_contents(GNOMEAPP(app), vbox);

 appbar = gnome_appbar_new(FALSE, TRUE, GNOME_PREFERENCES_NEVER);

 gnome_app_set_statusbar(GNOME_APP(app), appbar);

 gnome_app_install_menu_hints(GNOME_APP(app), menubar);

 g_signal_connect(GTK_OBJECT(search_button), "clicked",

GTK_SIGNAL_FUNC(on_search_button_clicked), entry);

 g_signal_connect(GTK_OBJECT(app), "delete_event",

GTK_SIGNAL_FUNC(delete_event_handler), NULL);

 g_signal_connect(GTK_OBJECT(app), "destroy",

GTK_SIGNAL_FUNC(quit_app), NULL);

 return app;

}

12. Следующая функция создает простое диалоговое окно, позволяющее добавлять новый компакт-диск в базу данных. Оно состоит из полей ввода для исполнителя, названия и полей каталога, а также кнопок OK и Cancel:

GtkWidget *create_addcd_dialog {

 artist_entry = gtk_entry_new;

 title_entry = gtk_entry_new;

 catalogue_entry = gtk_entry_new;

 GtkWidget* dialog = gtk_dialog_new_with_buttons("Add CD",

app,

GTK_DIALOG_DESTROY_WITH_PARENT,

GTK_STOCK_OK,

GTK_RESPONSE_ACCEPT,

GTK_STOCK_CANCEL,

GTK_RESPONSE_REJECT,

NULL);

 add_widget_with_label(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),

"Artist", artist_entry);

 add_widget_with_label(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),

"Title", title_entry);

 add_widget_with_label(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),

"Catalogue", catalogue_entry);

 g_signal_connect(GTK_OBJECT(dialog), "response",

GTK_SIGNAL_FUNC(addcd_dialog_button_clicked), NULL);

 return dialog;

}

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

GtkWidget *create_login_dialog {

 GtkWidget* dialog = gtk_dialog_new_with_buttons("Database Login",

app, GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,

GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL);

 username_entry = gtk_entry_new;

 password_entry = gtk_entry_new;

 gtk_entry_set_visibility(GTK_ENTRY(password_entry), FALSE);

 add_widget_with_label(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),

"Username", username_entry);

 add_widget_with_label(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),

"Password", password_entry);

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

Горячий старт. Часть 2

Глазачев Георгий
2. Бесконечная Империя Вечности
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Горячий старт. Часть 2

Система Возвышения. (цикл 1-8) - Николай Раздоров

Раздоров Николай
Система Возвышения
Фантастика:
боевая фантастика
4.65
рейтинг книги
Система Возвышения. (цикл 1-8) - Николай Раздоров

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

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

Сапфир Олег
39. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника. Книга XXXIX

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами

Газлайтер. Том 29

Володин Григорий Григорьевич
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 29

Боярич Морозов

Шелег Дмитрий Витальевич
3. Наследник старого рода
Фантастика:
героическая фантастика
боевая фантастика
альтернативная история
7.12
рейтинг книги
Боярич Морозов

Цеховик. Книга 1. Отрицание

Ромов Дмитрий
1. Цеховик
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Цеховик. Книга 1. Отрицание

Боярышня Дуняша 2

Меллер Юлия Викторовна
2. Боярышня
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Боярышня Дуняша 2

Жена неверного ректора Полицейской академии

Удалова Юлия
Любовные романы:
любовно-фантастические романы
4.25
рейтинг книги
Жена неверного ректора Полицейской академии

Глэрд IX: Легионы во Тьме

Владимиров Денис
9. Глэрд
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Глэрд IX: Легионы во Тьме

Дважды одаренный. Том II

Тарс Элиан
2. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Дважды одаренный. Том II

На границе империй. Том 10. Часть 6

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 6