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

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

Жанры

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;

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

Север помнит

SilverRavenStar
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Север помнит

Путь к бессмертию 1

Покинтелица Евгений
1. Девятихвостый Богатырь
Фантастика:
попаданцы
сказочная фантастика
фэнтези
5.00
рейтинг книги
Путь к бессмертию 1

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

Винокуров Юрий
20. Кодекс Охотника
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга ХХ

Курс 1. Октябрь

Фокс Гарри
2. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Октябрь

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

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

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

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

Князь Андер Арес 5

Грехов Тимофей
5. Андер Арес
Фантастика:
историческое фэнтези
фэнтези
героическая фантастика
5.00
рейтинг книги
Князь Андер Арес 5

Законы Рода. Том 8

Мельник Андрей
8. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 8

Двойник Короля

Скабер Артемий
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля

Кукловод

Майерс Александр
4. Династия
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кукловод

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Неудержимый. Книга XXIX

Боярский Андрей
29. Неудержимый
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Неудержимый. Книга XXIX

Вернувшийся: Новая жизнь. Том I

Vector
1. Вернувшийся
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Новая жизнь. Том I

Орленев

Мацкин Александр Петрович
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Орленев