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: Полное руководство - читать книгу онлайн бесплатно, автор Денис Колисниченко

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

void gtk_clist_insert(GtkCList *clist, gint row, gchar *text[]);

Она позволяет вставить новый элемент в строку row. Нумерация строк списка начинается с 0.

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

void gtk_clist_remove(GtkCList *clist, gint row);

void gtk_clist_clear(GtkCList *clist);

Первая удаляет строку row, а вторая очищает весь список.

Рассмотрим листинг 23.8, в котором демонстрируется работа со списком CList. Программа снабжена подробными комментариями, поэтому рекомендую внимательно читать исходный код.

Листинг 23.8. Применение виджита CList

#include <gtk/gtk.h>

/* Нужен для функции setlocale() */

#include <locale.h>


/* Добавляет список - обработчик кнопки Добавить */

void button_add_clicked(gpointer data) {

 int indx;

 /* Простой список */

 gchar *dist[4][2] = { { "1", "Red Hat Linux" },

  { "2", "Mandrake Linux" },

  { "3", "ALT Linux" },

  { "4", "ASP Linux" } };

 for(indx=0; indx < 4; indx++)

  gtk_clist_append((GtkCList *) data, dist[indx]);

 return;

}


/* Обработчик нажатия кнопки Очистить */

void button_clear_clicked(gpointer data) {

 /* Очищаем список */

 gtk_clist_clear((GtkCList *)data);

 return;

}


/* Функция прячет/отображает заголовки */

void button_hide_show_clicked(gpointer data) {

 /* 0 = сейчас видим заголовки */

 static short int flag = 0;

 if (flag == 0) {

  /* прячем заголовки */

  gtk_clist_column_titles_hide((GtkCList *)data);

  flag++;

 } else {

  /* Отображаем заголовки */

  gtk_clist_column_titles_show((GtkCList *)data);

 }

 return;

}


/* Данная функция будет вызвана, если пользователь выберет

 элемент */

void selection_made(GtkWidget *clist, gint row,

 gint column, GdkEventButton *event, gpointer data) {

 gchar *text;


 /* Получаем выбранный текст (элемент списка) */

 gtk_clist_get_text(GTK_CLIST(clist), row, column, &text);

 /* Просто выводим информацию на консоль */

 g_print(

  "Вы выбрали ряд %d. Колонка %d, текст в ячейке %snn",

  row, column, text);

 return;

}


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

 GtkWidget *window;

 GtkWidget *vbox, *hbox;

 GtkWidget *scrolled_window, *clist;

 GtkWidget *button_add, *button_clear, *button_hide_show;

 gchar *titles[2] = { "Номер", "Дистрибутив" };


 setlocale(LC_ALL, "ru_RU.KOI8-R");


 // Нужно вызвать ДО gtk_init()

 gtk_init(&argc, &argv);


 window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

 gtk_widget_set_usize(GTK_WIDGET(window), 300, 150);


 gtk_window_set_title(GTK_WINDOW(window), "Список");

 gtk_signal_connect(GTK_OBJECT(window), "destroy",

  GTK_SIGNAL_FUNC(gtk_main_quit), NULL);

 vbox=gtk_vbox_new(FALSE, 5);

 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);

 gtk_container_add(GTK_CONTAINER(window), vbox);

 gtk_widget_show(vbox);


 /* Создаем окно с полосками прокрутки и упаковываем в

  него список */

 scrolled_window = gtk_scrolled_window_new(NULL, NULL);

 gtk_scrolled_window_set_policy(

  GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC,

  GTK_POLIСY_ALWAYS);

 gtk_box_pack_start(GTK_BOX(vbox), scrolled_window,

  TRUE, TRUE, 0);

 gtk_widget_show(scrolled_window);


 /* Создаем список с двумя колонками */

 clist = gtk_clist_new_with_titles(2, titles);


 /* Обработка выделения */

 gtk_signal_connect(GTK_OBJECT(clist), "select_row",

  GTK_SIGNAL_FUNC(selection_made), NULL);


 /* Устанавливаем тень для рамки списка */

 gtk_clist_set_shadow_type(GTK_CLIST(clist),

  GTK_SHADOW_OUT);

 /* Устанавливаем ширину для колонки. Колонки нумеруются

  с 0 */

 gtk_clist_set_column_width(GTK_CLIST(clist), 0, 150);


 /* Помещаем список в контейнер */

 gtk_container_add(GTK_CONTAINER(scrolled_window), clist);

 gtk_widget_show(clist);


 /* Создаем и размещаем кнопки Добавить список,

  Очистить, Спрятать/отобразить заголовок */

 hbox = gtk_hbox_new(FALSE, 0);

 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);

 gtk_widget_show(hbox);


 button_add = gtk_button_new_with_label("Добавить");

 button_clear = gtk_button_new_with_label("Очистить");

 button_hide_show = gtk_button_new_with_label("Спрятать/отобразить");


 gtk_box_pack_start(GTK_BOX(hbox), button_add,

  TRUE, TRUE, 0);

 gtk_box_pack_start(GTK_BOX(hbox), button_clear,

  TRUE, TRUE, 0);

 gtk_box_pack_start(GTK_BOX(hbox), button_hide_show,

  TRUE, TRUE, 0);


 /* Связываем обработчики */

 gtk_signal_connect_object(GTK_OBJECT(button_add),

  "clicked",

  GTK_SIGNAL_FUNC(button_add_clicked), (gpointer) clist);

  gtk_signal_connect_object(GTK_OBJECT(button_clear),

  "clicked",

  GTK_SIGNAL_FUNC(button_clear_clicked),(gpointer)clist);

 gtk_signal_connect_object(GTK_OBJECT(button_hide_show),

  "clicked", GTK_SIGNAL_FUNC(button_hide_show_clicked),

  (gpointer)clist);


 gtk_widget_show(button_add);

 gtk_widget_show(button_clear);

 gtk_widget_show(button_hide_show);

 gtk_widget_show(window);

 gtk_main();

 return(0);

}

Программа работает так: при нажатии кнопки Добавить создается список, состоящий из названий четырех популярных дистрибутивов Linux. Кнопка Очистить очищает список, а Спрятать/отобразить прячет или отображает заголовки списка. При щелчке на определенной ячейке списка на консоль выводится соответствующее сообщение — координаты ячейки и ее текст.

Рис 23.5.

< … стр. 639–640 … >

void destroy(GtkWidget *widget, gpointer data);

static void button_click(GtkWidget *widget, gpointer data);


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

 GtkWidget *window;

 GtkWidget *button;

 GtkWidget *label;

 w_ctrl ctrl;

 gchar *caption;


 setlocale(LC_ALL, "ru_RU.KOI8-R");

 caption = g_strdup_printf("Доброго времени суток!");

 gtk_init(&argc, &argv);


 window = gtk_window_new( GTK_WINDOW_TOPLEVEL);


 gtk_signal_connect(GTK_OBJECT(window), "delete_event",

  GTK_SIGNAL_FUNC(delete_event), NULL);

 gtk_signal_connect(GTK_OBJECT(window), "destroy",

  GTK_SIGNAL_FUNC(destroy), &ctrl);


 gtk_window_set_title(GTK_WINDOW(window), caption);


 gtk_container_set_border_width(GTK_CONTAINER(window), 10);


 button = gtk_button_new();

 label = gtk_label_new(" -== Нажмите кнопку ==- " );


 ctrl.app_window = window;

 ctrl.label = label;


 gtk_container_add(GTK_CONTAINER(button), label);

 gtk_container_add(GTK_CONTAINER(window), button);


 gtk_signal_connect(GTK_OBJECT(button), "clicked",

  GTK_SIGNAL_FUNC(button_click), &ctrl);


 gtk_widget_show_all(window);

 gtk_main();

 return(0);

}


// ****************************************************


void quit_confirm(GtkWidget *widget) {

 GtkWidget *quit_form;

 GtkWidget *label;

 GtkWidget *yes_button, *no_button;


 quit_form = gtk_dialog_new();

 gtk_window_set_position(GTK_WINDOW(quit_form),

  GTK_WIN_POS_CENTER);

 gtk_container_set_border_width(GTK_CONTAINER(quit_form),

  10);


 label =

  gtk_label_new("n Вы действительно хотите выйти? n*);

 yes_button = gtk_button_new_with_label("Да");

 no_button = gtk_button_new_with_label("Нет");


 gtk_signal_connect_object(GTK_OBJECT(yes_button),

  "clicked",

  GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer)widget);


 gtk_container_add(

  GTK_CONTAINER(GTK_DIALOG(quit_form)->action_area), yes_button);


 gtk_signal_connect_object(GTK_OBJECT(no_button),

  "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy),

  (gpointer)quit_form);


 gtk_container_add(

  GTK_CONTAINER(GTK_DIALOG(quit_form)->action_area), no_button);


 gtk_container_add(

  GTK_CONTAINER(GTK_DIALOG(quit_form)->vbox), label);


 gtk_window_set_modal(GTK_WINDOW(quit_form), TRUE);


 gtk_widget_show_all(quit_form);

}


gint delete_event(GtkWidget *widget, GdkEvent *event,

 gpointer data) {

 quit_confirm(widget);

 return(TRUE);

}


void destroy(GtkWidget *widget, gpointer data) {

 printf{"GOOD-BYE!");

 gtk_main_quit();

}


static void button_click(GtkWidget *widget,

 gpointer data ) {

 static gint i = 0;

 GtkWidget *app_window;

 GtkWidget *label;

 gchar msg[256];

 app_window = GTK_WIDGET(((w_ctrl *)data)->app_window);

 label = GTK_WIDGET(((w_ctrl*)data)->label);

 i++;

 sprintf(msg, "Вы нажали кнопку: %d раз(а)", i);


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

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


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

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

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