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

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

Жанры

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;

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

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар

Лекарь Империи 3

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

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

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

Лекарь

Назимов Константин Геннадьевич
2. Травник
Фантастика:
фэнтези
5.25
рейтинг книги
Лекарь

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

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

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

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

Последний Паладин. Том 10

Саваровский Роман
10. Путь Паладина
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Последний Паладин. Том 10

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

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

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

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

Иной. Том 5. Адская работа

Amazerak
5. Иной в голове
Фантастика:
боевая фантастика
городское фэнтези
технофэнтези
рпг
5.00
рейтинг книги
Иной. Том 5. Адская работа

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

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

Викинг

Мазин Александр Владимирович
1. Викинг
Приключения:
исторические приключения
8.92
рейтинг книги
Викинг

Неучтенный элемент. Том 7

NikL
7. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 7

Древесный маг Орловского княжества 6

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