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

на главную

Жанры

Linux: Полное руководство

Аллен Питер В.

Шрифт:

 gtk_clist_get_text(GTK_CLIST(clist), row, column, &text);

 /* Просто выводим информацию на консоль */

 g_print(

"Вы выбрали ряд %d. Колонка %d, текст в ячейке %s\n\n",

row, column, text);

 return;

}

int main(int argc, gchar *argv[]) {

 GtkWidget *window;

 GtkWidget *vbox, *hbox;

 GtkWidget *scrolled_window, *clist;

 GtkWidget *button_add, *button_clear, *button_hide_show;

 gchar *titles[2] = { "Номер", "Дистрибутив" };

 setlocale(LC_ALL, "ru_RU.KOI8-R");

 //
Нужно вызвать ДО gtk_init

 gtk_init(&argc, &argv);

 window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

 gtk_widget_set_usize(GTK_WIDGET(window), 300, 150);

 gtk_window_set_title(GTK_WINDOW(window), "Список");

 gtk_signal_connect(GTK_OBJECT(window), "destroy",

GTK_SIGNAL_FUNC(gtk_main_quit), NULL);

 vbox=gtk_vbox_new(FALSE, 5);

 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);

 gtk_container_add(GTK_CONTAINER(window), vbox);

 gtk_widget_show(vbox);

 /* Создаем окно с полосками прокрутки и упаковываем в

него список */

 scrolled_window = gtk_scrolled_window_new(NULL, NULL);

 gtk_scrolled_window_set_policy(

GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC,

GTK_POLIСY_ALWAYS);

 gtk_box_pack_start(GTK_BOX(vbox), scrolled_window,

TRUE, TRUE, 0);

 gtk_widget_show(scrolled_window);

 /* Создаем список с двумя колонками */

 clist = gtk_clist_new_with_titles(2, titles);

 /* Обработка выделения */

 gtk_signal_connect(GTK_OBJECT(clist), "select_row",

GTK_SIGNAL_FUNC(selection_made), NULL);

 /* Устанавливаем тень для рамки списка */

 gtk_clist_set_shadow_type(GTK_CLIST(clist),

GTK_SHADOW_OUT);

 /* Устанавливаем ширину для колонки. Колонки нумеруются

с 0 */

 gtk_clist_set_column_width(GTK_CLIST(clist), 0, 150);

 /* Помещаем список в контейнер */

 gtk_container_add(GTK_CONTAINER(scrolled_window), clist);

 gtk_widget_show(clist);

 /*
Создаем и размещаем кнопки Добавить список,

Очистить, Спрятать/отобразить заголовок */

 hbox = gtk_hbox_new(FALSE, 0);

 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);

 gtk_widget_show(hbox);

 button_add = gtk_button_new_with_label("Добавить");

 button_clear = gtk_button_new_with_label("Очистить");

 button_hide_show = gtk_button_new_with_label("Спрятать/отобразить");

 gtk_box_pack_start(GTK_BOX(hbox), button_add,

TRUE, TRUE, 0);

 gtk_box_pack_start(GTK_BOX(hbox), button_clear,

TRUE, TRUE, 0);

 gtk_box_pack_start(GTK_BOX(hbox), button_hide_show,

TRUE, TRUE, 0);

 /* Связываем обработчики */

 gtk_signal_connect_object(GTK_OBJECT(button_add),

"clicked",

GTK_SIGNAL_FUNC(button_add_clicked), (gpointer) clist);

gtk_signal_connect_object(GTK_OBJECT(button_clear),

"clicked",

GTK_SIGNAL_FUNC(button_clear_clicked),(gpointer)clist);

 gtk_signal_connect_object(GTK_OBJECT(button_hide_show),

"clicked", GTK_SIGNAL_FUNC(button_hide_show_clicked),

(gpointer)clist);

 gtk_widget_show(button_add);

 gtk_widget_show(button_clear);

 gtk_widget_show(button_hide_show);

 gtk_widget_show(window);

 gtk_main;

 return(0);

}

Программа работает так: при нажатии кнопки Добавить создается список, состоящий из названий четырех популярных дистрибутивов Linux. Кнопка Очистить очищает список, а Спрятать/отобразить прячет или отображает заголовки списка. При щелчке на определенной ячейке списка на консоль выводится соответствующее сообщение — координаты ячейки и ее текст.

Рис 23.5.

< … стр. 639–640 … >

void destroy(GtkWidget *widget, gpointer data);

static void button_click(GtkWidget *widget, gpointer data);

int main(int argc, char *argv[]) {

 GtkWidget *window;

 GtkWidget *button;

 GtkWidget *label;

 w_ctrl ctrl;

 gchar *caption;

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

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

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

Наследник Четырех

Вяч Павел
5. Игра топа
Фантастика:
героическая фантастика
рпг
6.75
рейтинг книги
Наследник Четырех

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

В ожидании осени 1977

Арх Максим
2. Регрессор в СССР
Фантастика:
альтернативная история
7.00
рейтинг книги
В ожидании осени 1977

Мое ускорение

Иванов Дмитрий
5. Девяностые
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Мое ускорение

Энфис 5

Кронос Александр
5. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 5

Великий род

Сай Ярослав
3. Медорфенов
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Великий род

Не грози Дубровскому!

Панарин Антон
1. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому!

Император поневоле

Распопов Дмитрий Викторович
6. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Император поневоле

Темный Охотник 5

Розальев Андрей
5. КО: Темный охотник
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Охотник 5

Начальник милиции

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

Чемпион

Демиров Леонид
3. Мания крафта
Фантастика:
фэнтези
рпг
5.38
рейтинг книги
Чемпион

Черный Маг Императора 4

Герда Александр
4. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 4

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12