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
рейтинг книги
Тихие ночи
2. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Охотника XXXI
31. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Звездная Кровь. Изгой VII
7. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
технофэнтези
рпг
фантастика: прочее
попаданцы
5.00
рейтинг книги
Лейтенант космического флота
1. Звезды на погонах
Фантастика:
боевая фантастика
космическая фантастика
космоопера
рпг
фэнтези
фантастика: прочее
5.00
рейтинг книги
Имперец. Том 4
3. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Законник Российской Империи. Том 2
2. Словом и делом
Фантастика:
городское фэнтези
альтернативная история
аниме
дорама
6.40
рейтинг книги
Император Пограничья 5
5. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Авиатор: назад в СССР
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Орден Багровой бури. Книга 1
1. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Точка Бифуркации VIII
8. ТБ
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Шайтан Иван 4
4. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
8.00
рейтинг книги
Санек 3
3. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Неучтенный элемент. Том 2
2. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00