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

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

Жанры

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

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

Шрифт:

 GtkWidget *entry) {

 domain = gtk_entry_get_text(GTK_ENTRY(entry));

 printf("Domain: %s\n", domain);

}

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

 GtkWidget *window; /* Окно */

 GtkWidget *button; /* Кнопка */

 GtkWidget *table; /* Таблица для размещения виджитов */

 GtkWidget *label; /* Надпись */

 /* Как видите, все виджиты одного типа — GtkWidget,

поэтому мы могли бы обойтись даже тремя виджитами — для

окна, таблицы и для всех остальных элементов GUI*/

 int i;

 /* Инициализация любой GTK-программы */

 gtk_init (&argc, &argv);

 /* Создаем новое окно */

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

 /* Устанавливаем заголовок окна */

 gtk_window_set_title (GTK_WINDOW(window), "Resolver");

 /* Устанавливаем реакцию на кнопку закрытия окна.

Сигнал - delete_event. Вызываем функцию delete_event,

которая описана выше */

 gtk_signal_connect (GTK_OBJECT (window), "delete_event",

GTK_SIGNAL_FUNC(delete_event), NULL);

 /* Устанавливаем рамку окна */

 gtk_container_set_border_width(GTK_CONTAINER (window), 20);

 /* Создаем таблицу 3x3 */

 table = gtk_table_new (3, 3, TRUE);

 /* Помещаем таблицу в контейнер. Обязательно! */

 gtk_container_add(GTK_CONTAINER (window), table);

 /* Рисуем надписи, помещаем их в таблицу и отображаем.

Обратите внимание, что в этом случае нам не нужно объявлять

отдельную переменную для каждой надписи */

 label = gtk_label_new("Domain: ");

 /* О координатах ячеек поговорим после этого листинга */

 gtk_table_attach_defaults(GTK_TABLE(table),

label, 0, 1, 0, 1);

 gtk_widget_show(label);

 label = gtk_label_new("DNS #1: ");

 gtk_table_attach_defaults(GTK_TABLE(table),

label, 0, 1, 1, 2);

 gtk_widget_show(label);

 label = gtk_label_new("DNS #2: ");

 gtk_table_attach_defaults(GTK_TABLE(table),

label, 0, 1, 2, 3);

 gtk_widget_show (label);

 /* Заполняем наш массив полей ввода. По аналогии с Delphi,

я назвал массив edit[]*/

 for (i=0; i<3; i++) {

/* Новое поле */

edit[i] = gtk_entry_new;

/* Если забыть этот оператор, пользователь ничего не

сможет ввести */

gtk_entry_set_editable(GTK_ENTRY(edit[i]), 1);

/* Определяем одну для всех реакцию на сигнал activate -

нажатие Enter*/

gtk_signal_connect(GTK_OBJECT(edit[i]), "activate",

GTK_SIGNAL_FUNC(enter_callback), edit[i]);

/* Помещаем edit[i] в таблицу */

gtk_table_attach_defaults (GTK_TABLE(table),

edit[i], 1, 2, i, i+1);

/* Показываем */

gtk_widget_show(edit[i]);

 }

 /* Создаем кнопку "OK", помещаем в таблицу,

определяем реакцию на нажатие и показываем */

 button = gtk_button_new_with_label("OK");

 gtk_table_attach_defaults(GTK_TABLE(table),

button, 2, 3, 0, 1);

 gtk_signal_connect(GTK_OBJECT(button), "clicked",

GTK_SIGNAL_FUNC(writetofile), NULL);

 gtk_widget_show(button);

 /* То же самое для кнопки Quit */

 button = gtk_button_new_with_label("Quit");

 gtk_table_attach_defaults(GTK_TABLE(table),

button, 2, 3, 2, 3);

 gtk_signal_connect(GTK_OBJECT(button),"clicked",

GTK_SIGNAL_FUNC(delete_event), NULL);

 gtk_widget_show(button);

 gtk_widget_show(table); /* Показываем таблицу */

 gtk_widget_show(window); /* Показываем окно */

 /* Запускаем GTK-программу */

 gtk_main;

 return 0;

}

Я старался писать подробные комментарии, но все же кое-что осталось в тумане. Это координаты ячеек. Рассмотрим нашу таблицу 3×3:

table = gtk_table_new(3, 3, TRUE);

0 1 2 3

 Domain Поле OK

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

Первый среди равных. Книга VII

Бор Жорж
7. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Первый среди равных. Книга VII

Наномашины, демоненок! Том 3

Новиков Николай Васильевич
3. Чего смотришь? Иди книгу читай
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наномашины, демоненок! Том 3

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

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

Менталист. Трансформация

Еслер Андрей
4. Выиграть у времени
Фантастика:
фэнтези
альтернативная история
7.28
рейтинг книги
Менталист. Трансформация

Крепость над бездной

Лисина Александра
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Крепость над бездной

Мастер големов

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

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

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

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

Санин (сборник)

Арцыбашев Михаил Петрович
Русская классика XX века
Проза:
русская классическая проза
роман
повесть
рассказ
5.80
рейтинг книги
Санин (сборник)

Тень воина

Прозоров Александр Дмитриевич
7. Ведун
Фантастика:
фэнтези
8.94
рейтинг книги
Тень воина

Приказано выжить!

Малыгин Владимир
1. Другая Русь
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.09
рейтинг книги
Приказано выжить!

Новое восстание

Раш Кристин Кэтрин
139. Звездные войны
Фантастика:
боевая фантастика
5.00
рейтинг книги
Новое восстание

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

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

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