My-library.info
Все категории

Денис Колисниченко - Linux: Полное руководство

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Денис Колисниченко - Linux: Полное руководство. Жанр: Программное обеспечение издательство -, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Linux: Полное руководство
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
17 сентябрь 2019
Количество просмотров:
474
Читать онлайн
Денис Колисниченко - Linux: Полное руководство

Денис Колисниченко - Linux: Полное руководство краткое содержание

Денис Колисниченко - Linux: Полное руководство - описание и краткое содержание, автор Денис Колисниченко, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Данная книга представляет собой великолепное руководство по Linux, позволяющее получить наиболее полное представление об этой операционной системе. Книга состоит из трех частей, каждая из которых раскрывает один из трех основных аспектов работы с Linux: Linux для пользователя, сетевые технологии Linux (и методика настройки Linux-сервера), программирование Linux. В книге охвачен очень широкий круг вопросов, начиная с установки и использования Linux «в обычной жизни» (офисные пакеты, игры, видео, Интернет), и заканчивая описанием внутренних процессов Linux, секретами и трюками настройки, особенностями программирования под Linux, созданием сетевых приложений, оптимизацией ядра и др.Изложение материала ведется в основном на базе дистрибутивов Fedora Cora (Red Hat) и Mandriva (Mandrake). Однако не оставлены без внимания и другие дистрибутивы SuSe, Slackware, Gentoo, Alt Linux, Knоppix. Дается их сравнительное описание, a по ходу изложения всего материала указываются их особенности.Книга написана известными специалистами и консультантами по использованию Linux, авторами многих статей и книг по Linux, заслуживших свое признание в самых широких Linux-кругах. Если вы желаете разобраться в особенностях Linux и познать ее внутренний мир, эта книга — ваш лучший выбор.

Linux: Полное руководство читать онлайн бесплатно

Linux: Полное руководство - читать книгу онлайн бесплатно, автор Денис Колисниченко

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

 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

1

 DNS1   Поле

2

 DNS2   Поле Quit

3

Сначала указываются координаты по X, затем — по Y. Вот координаты кнопки OK: 2, 3, 0, 1. Это означает, что кнопка будет расположена в последнем столбце (между 2 и 3), но в первой строке (между 0 и 1).

gtk_table_attach_defaults(GTK_TABLE(table), button,

 2, 3, 0, 1);

Подробнее рассматривать контейнер GtkTable я не вижу смысла: основные операции, я думаю, вам понятны — это создание таблицы с указанием ее размерности и добавление в таблицу виджита функцией gtk_table_attach_defaults(). Еще раз напомню о необходимости отображения виджитов, помещенных в таблицу, и самой таблицы:

gtk_widget_show (table);

Теперь откомпилируем нашу программу:

$ gcc resolv.с -о resolv `gtk-config --cflags` `gtk-config --libs`

Программа gtk-config сообщает компилятору всю необходимую информацию о библиотеке GTK.

Обратите внимание на директиву

#include <gtk/gtk.h>

Обычно файлы заголовков GTK находятся в другом каталоге, например, gtk-1.2, но это не имеет значения — все необходимые параметры укажет программа gtk-config.

В заключение этого пункта перечислим события, характерные для кнопок (таблица 23.3).


События кнопок Таблица 23.3

Событие Описание clicked Щелчок pressed Кнопка нажата мышью (и пока не отпущена) released Кнопка отпущена enter Указатель мыши в пределах кнопки leave Указатель мыши вышел за пределы кнопки

23.4.3. Переключатели

Переключатели бывают двух типов: зависимые (radio buttons) и независимые (checkbuttons). Переключатели являются кнопками, поэтому для них характерны те же события, что и для кнопок.

Начнем с независимых переключателей, так как они проще в реализации. Создать такой переключатель можно с помощью одной из функций:

GtkWidget *gtk_check_button_new(void);

GtkWidget *gtk_check_button_new_with_label(gchar * label);

Первая создает переключатель без надписи (если вы хотите указать надпись отдельно), а вторая — с надписью, которая обычно отображается справа от переключателя. Затем нужно, как всегда, поместить виджиты в контейнер и отобразить.

Зависимые переключатели можно создать тоже с помощью двух аналогичных функций:

GtkWidget *gtk_radio_button_new(GSList *group);

GtkWidget *gtk_radio_button_new_with_label(GSList *group,

 gchar *label);

Параметр group указывает на принадлежность переключателя к группе. В пределах группы активным может быть только один переключатель. Группу можно создать функцией:

GSList *gtk_radio_button_group(

 GtkRadioButton *radio_button);

Однако существует другой способ, позволяющий обойтись без переменной группы — так мы сэкономим память, если групп много:

button2 = gtk_radio_button_new_with_label(

 gtk_radio_button_group(GTK_RADIO_BUTTON(button1)),

 "button2");

С помощью функции

void gtk_toggle_button_set_active(

 GtkToggleButton *toggle_button, gint state);

можно сделать одну из кнопок активной.

Следующий листинг демонстрирует работу с тремя зависимыми переключателями и вертикальным контейнером GtkVBox.

Листинг 23.7. Зависимые переключатели

#include <gtk/gtk.h>

#include <glib.h>


gint close_application( GtkWidget *widget,

GdkEvent * event, gpointer data) {

 gtk_main_quit();

 return(FALSE);

}


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

 GtkWidget *window = NULL;

 GtkWidget *box1;

 GtkWidget *box2;

 GtkWidget *button;

 GtkWidget *separator;

 GSList *group;


 gtk_init(&argc,&argv);

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);


 gtk_signal_connect(GTK_OBJECT(window), "delete_event",

 GTK_SIGNAL_FUNC(close_application), NULL);


 gtk_window_set_title(GTK_WINDOW(window),

  "Выберите дистрибутив");

 gtk_container_set_border_width(GTK_CONTAINER(window), 0);


 box1 = gtk_vbox_new(FALSE, 0);

 gtk_container_add(GTK_CONTAINER(window), box1);

 gtk_widget_show(box1);


 box2 = gtk_vbox_new(FALSE, 10);

 gtk_container_set_border_width(GTK_CONTAINER (box2), 10);

 gtk_box_pack_start(GTK_BOX(box1), box2, TRUE, TRUE, 0);

 gtk_widget_show(box2);


 button = gtk_radio_button_new_with_label(NULL, "Red Hat");

 gtk_box_pack_start(GTK_BOX(box2), button,

  TRUE, TRUE, 0);

 gtk_widget_show(button);


 group = gtk_radio_button_group(GTK_RADIO_BUTTON(button));

 button =

  gtk_radio_button_new_with_label(group, "Mandrake");

 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),

  TRUE);

 gtk_box_pack_start(GTK_BOX(box2), button,

  TRUE, TRUE, 0);

 gtk_widget_show(button);


 button = gtk_radio_button_new_with_label(

  gtk_radio_button_group(GTK_RADIO_BUTTON(button)),

  "ALT Linux");

 gtk_box_pack_start(GTK_BOX(box2), button,

  TRUE, TRUE, 0);

 gtk_widget_show(button);


 separator = gtk_hseparator_new();

 gtk_box_pack_start(GTK_BOX(box1), separator,

  FALSE, TRUE, 0);

 gtk_widget_show(separator);


 box2 = gtk_vbox_new(FALSE, 10);

 gtk_container_set_border_width(GTK_CONTAINER(box2), 10);

 gtk_box_pack_start(GTK_BOX(box1), box2, FALSE, TRUE, 0);

 gtk_widget_show(box2);


 button = gtk_button_new_with_label("OK");

 gtk_signal_connect_object(GTK_OBJECT (button),

  "clicked", GTK_SIGNAL_FUNC(close_application),

  GTK_OBJECT(window));

 gtk_box_pack_start(GTK_BOX (box2), button,

  TRUE, TRUE, 0);

 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);

 gtk_widget_grab_default(button);

 gtk_widget_show(button);

 gtk_widget_show(window);

 gtk_main();

 return(0);

}

Рис. 23.4. Зависимые переключатели

23.4.4. Список

Виджит CList представляет собой список, состоящий из нескольких колонок. Ячейки такого списка могут содержать текстовые значения. Мы можем обратиться отдельно к каждой ячейке списка. Создать список можно одной из функций:

GtkWidget *gtk_clist_new(gint columns);

GtkWidget *gtk_clist_new_with_titles(gint columns,

 gchar *titles[]);

Первая функция создает список без заголовков, а вторая с заголовками. Параметр columns задает число колонок.

Добавить элемент в список позволяют функции:

gint gtk_clist_prepend(GtkCList *clist, gchar *text[]);

gint gtk_clist_append(GtkCList *clist, gchar *text[]);


Денис Колисниченко читать все книги автора по порядку

Денис Колисниченко - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


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

Отзывы читателей о книге Linux: Полное руководство, автор: Денис Колисниченко. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.