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
Поделиться:
Популярные книги
Компас желаний
8. Артефактор
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Технарь
1. Технарь
Фантастика:
космическая фантастика
попаданцы
7.13
рейтинг книги
Я до сих пор не князь. Книга XVI
16. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Геном хищника. Книга четвертая
4. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Законы Рода. Том 12
12. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 10
10. Граф Берестьев
Фантастика:
юмористическая фантастика
аниме
фэнтези
5.00
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Локки 7. Потомок бога
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Мастер 2
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Требую развода! Что значит- вы отказываетесь?
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Глава рода
5. Живой лёд
Фантастика:
боевая фантастика
6.55
рейтинг книги
Сын Тишайшего 3
3. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Гримуар темного лорда III
3. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
На границе империй. Том 5
5. Фортуна дама переменчивая
Фантастика:
боевая фантастика
попаданцы
7.50