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;
setlocale(LC_ALL, "ru_RU.KOI8-R");
caption = g_strdup_printf("Доброго времени суток!");
gtk_init(&argc, &argv);
window = gtk_window_new( GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window), "delete_event",
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии