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

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

Жанры

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,

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

Князь Медведев. Дилогия

Вяч Павел
Медведев
Фантастика:
аниме
фэнтези
попаданцы
5.67
рейтинг книги
Князь Медведев. Дилогия

Обитатели холмов

Адамс Ричард
1. Обитатели холмов
Фантастика:
фэнтези
8.78
рейтинг книги
Обитатели холмов

Печать Пожирателя 3

Соломенный Илья
3. Пожиратель
Фантастика:
городское фэнтези
аниме
сказочная фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Печать Пожирателя 3

Том 9. Новь. Повести и рассказы 1874-1877

Тургенев Иван Сергеевич
9. Собрание сочинений в двенадцати томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 9. Новь. Повести и рассказы 1874-1877

Город древних

Муравьёв Константин Николаевич
2. Вселенная EVE Online
Фантастика:
фэнтези
боевая фантастика
попаданцы
8.20
рейтинг книги
Город древних

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

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

Мессия. Том 1

Раджниш Бхагаван Шри
Религия и эзотерика:
самосовершенствование
эзотерика
5.00
рейтинг книги
Мессия. Том 1

Избранное. Компиляция. Книги 1-11

Пулман Филип
Фантастика:
фэнтези
героическая фантастика
5.00
рейтинг книги
Избранное. Компиляция. Книги 1-11

Вечный. Книга I

Рокотов Алексей
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.50
рейтинг книги
Вечный. Книга I

Колдуны и капуста

Уланов Андрей Андреевич
2. Однажды на Диком западе
Фантастика:
фэнтези
7.54
рейтинг книги
Колдуны и капуста

Земноморье (сборник)

Ле Гуин Урсула Кребер
Фантастика:
фэнтези
9.11
рейтинг книги
Земноморье (сборник)

«Тихий Дон»: судьба и правда великого романа

Кузнецов Феликс Феодосьевич
Научно-образовательная:
история
литературоведение
5.00
рейтинг книги
«Тихий Дон»: судьба и правда великого романа

Голос ночной птицы

МакКаммон Роберт Рик
1. Мэтью Корбетт
Детективы:
исторические детективы
8.97
рейтинг книги
Голос ночной птицы

Пойманная

Андерсон Эвангелина
2. Невесты Киндред
Любовные романы:
любовно-фантастические романы
эро литература
4.25
рейтинг книги
Пойманная