Linux: Полное руководство
Шрифт:
domain = gtk_entry_get_text(GTK_ENTRY(edit[0]));
dns1 = gtk_entry_get_text(GTK_ENTRY(edit[1]));
dns2 = gtk_entry_get_text(GTK_ENTRY(edit[2]))?
Реакция на нажатие кнопки OK будет следующей:
void writetofile(GtkWidget *widget, gpointer data) {
/* С помощью функции gtk_entry_get_text мы получаем
введенный пользователем текст из полей ввода */
domain = gtk_entry_get_text(GTK_ENTRY(edit[0]));
dns1 = gtk_entry_get_text(GTK_ENTRY(edit[1]));
dns2 = gtk_entry_get_text(GTK_ENTRY(edit[2]));
/*
Выводим прочитанный текст на консоль */
g_print("Domain %s\n", domain);
g_print("DNS1 %s\n", dns1);
g_print("DNS2 %s\n", dns2);
/* Перезаписываем файл resolv.conf в текущем каталоге */
if ((resolv = fopen("resolv.conf","w")) == NULL) {
/* Наверное, нет места на диске или прав маловато... */
g_print("ERR: Cannot open resolve.conf file\n");
gtk_main_quit;
}
/* Запись в файл */
fprintf(resolv,"domain %s\n",domain);
fprintf(resolv, "nameserver %s\n",dns1);
fprintf(resolv,"nameserver %s\n*,dns2);
fclose(resolv);
}
Если ваше окно должно содержать много надписей, то я рекомендую вам поступать так: объявить всего одну переменную, затем создать надпись, поместить ее в контейнер, затем опять создать надпись с использованием этой же переменной, поместить ее в контейнер и т.д. Примерно так:
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);
Листинг 23.6 содержит полный код конфигуратора Resolver.
Листинг 23.6. Файл resolver.c
#include <gtk/gtk.h>
#include <stdlib.h>
#include <stdio.h>
gchar *domain, *dns1, *dns2;
/*
Массив из трех полей ввода. Первое предназначено для
ввода имени домена, два вторых - [1] и [2] - для ввода
IP-адресов серверов DNS */
GtkWidget *edit[3];
/* Наш файл */
FILE *resolv;
/* Функция записи в файл */
void writetofile(GtkWidget *widget, gpointer data) {
/* С помощью функции gtk_entry_get_text мы получаем
введенный пользователем текст из полей ввода */
domain = gtk_entry_get_text(GTK_ENTRY(edit[0]));
dns1 = gtk_entry_get_text(GTK_ENTRY(edit[1]));
dns2 = gtk_entry_get_text(GTK_ENTRY(edit[2]));
/* Выводим прочитанный текст на консоль */
g_print("Domain %s\n", domain);
g_print("DNS1 %s\n", dns1);
g_print("DNS2 %s\n", dns2);
/* Перезаписываем файл resolv.conf в текущем каталоге */
if ((resolv = fopen("resolv.conf","w")) == NULL) {
/* Наверное, нет места на диске или прав маловато... */
g_print("ERR: Cannot open resolve.conf file\n");
gtk_main_quit;
}
/* Запись в файл */
fprintf(resolv,"domain %s\n",domain);
fprintf(resolv,"nameserver %s\n",dns1);
fprintf(resolv,"nameserver %s\n",dns2);
fclose(resolv);
}
/* Эта функция будет запущена, когда пользователь нажмет
кнопку закрытия окна или кнопку Quit */
gint delete_event(GtkWidget *widget, GdkEvent *event,
gpointer data) {
/* Функция gtk_main_quit используется для завершения
работы GTK-программы. Не нужно для этого использовать
exit */
gtk_main_quit;
return(FALSE);
}
/* Когда пользователь введет текст и нажмет Enter,
введенный им текст будет выведен на консоль */
void enter_callback(GtkWidget *widget,
Поделиться:
Популярные книги
Газлайтер. Том 20
20. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.51
рейтинг книги
На границе империй. Том 10. Часть 10
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Сирийский рубеж 3
7. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Найденыш
2. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Дважды одаренный
1. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Запасная дочь
Фантастика:
фэнтези
6.40
рейтинг книги
Локки 5. Потомок бога
5. Локки
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Я еще граф. Книга #8
8. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Двойник короля 13
13. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Хозяин Стужи 3
3. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Ефрейтор. Назад в СССР. Книга 2
2. Второй шанс
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Солдат Империи
1. Страж
Фантастика:
попаданцы
альтернативная история
6.67
рейтинг книги
Гримуар темного лорда IV
4. Гримуар темного лорда
Фантастика:
фэнтези
боевая фантастика
попаданцы
аниме
5.00