-->

Основы программирования в Linux

На нашем литературном портале можно бесплатно читать книгу Основы программирования в Linux, Мэтью Нейл-- . Жанр: Программирование / ОС и Сети. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Основы программирования в Linux
Название: Основы программирования в Linux
Дата добавления: 16 январь 2020
Количество просмотров: 666
Читать онлайн

Основы программирования в Linux читать книгу онлайн

Основы программирования в Linux - читать бесплатно онлайн , автор Мэтью Нейл
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

 gtk_container_set_border_width(GTK_CONTAINER(toolbar), 1);

 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), "gtk-add", "Add new CD",

  NULL, GTK_SIGNAL_FUNC(on_addcd_activate), NULL, -1);

 gtk_toolbar_insert_space(GTK_TOOLBAR(toolbar), 1);

 gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), "gtk-quit",

  "Quit the Application", NULL, GTK_SIGNAL_FUNC(on_quit_activate), NULL, -1);

7. Затем вы создаете виджеты, используемые для поиска компакт-диска:

 label = gtk_label_new("Search String:");

 entry = gtk_entry_new();

 search_button = gtk_button_new_with_label("Search");

8. Окно

gtk_scrolled_window
предоставляет полосы прокрутки, позволяя виджету (в данном случае
GtkTreeView
) превышать размеры окна:

 scrolledwindow = gtk_scrolled_window_new(NULL, NULL);

 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow),

  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

9. Далее скомпонуйте интерфейс, применяя стандартным способом виджеты-контейнеры:

 vbox = gtk_vbox_new(FALSE, 0);

 hbox = gtk_hbox_new(FALSE, 0);

 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 6);

 gtk_box_pack_start(GTK_BOX(hbox), search_button, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(vbox), scrolledwindow, TRUE, TRUE, 0);

10. Затем создайте виджет

GtkTreeView
, вставьте три столбца и поместите его в окно
GtkScrolledWindow
:

 treeview = gtk_tree_view_new();

 renderer = gtk_cell_renderer_text_new();

 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview),

  COLUMN_TITLE, "Title", renderer, "text", COLUMN_TITLE, NULL);

 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview),

  COLUMN_ARTIST, "Artist", renderer, "text", CQLUMN_ARTIST, NULL);

 gtk_tree_view_insert_column_with_attrihutes(GTK_TREE_VIEW(treeview),

  COLUMN_CATALOGUE, "Catalogue", renderer, "text", COLUMN_CATALOGUE, NULL);

 gtk_tree_view_set_search_column(GTK_TREE_VIEW(treeview),

  COLUMN_TITLE);

 gtk_container_add(GTK_CONTAINER(scrolledwindow), treeview);

11. В заключение задайте содержимое главного окна, вставьте строку состояния

GnomeApp
и подсоедините нужные обратные вызовы:

 gnome_app_set_contents(GNOMEAPP(app), vbox);

 appbar = gnome_appbar_new(FALSE, TRUE, GNOME_PREFERENCES_NEVER);

 gnome_app_set_statusbar(GNOME_APP(app), appbar);

 gnome_app_install_menu_hints(GNOME_APP(app), menubar);

 g_signal_connect(GTK_OBJECT(search_button), "clicked",

  GTK_SIGNAL_FUNC(on_search_button_clicked), entry);

 g_signal_connect(GTK_OBJECT(app), "delete_event",

  GTK_SIGNAL_FUNC(delete_event_handler), NULL);

 g_signal_connect(GTK_OBJECT(app), "destroy",

  GTK_SIGNAL_FUNC(quit_app), NULL);

 return app;

}

12. Следующая функция создает простое диалоговое окно, позволяющее добавлять новый компакт-диск в базу данных. Оно состоит из полей ввода для исполнителя, названия и полей каталога, а также кнопок OK и Cancel:

GtkWidget *create_addcd_dialog() {

 artist_entry = gtk_entry_new();

 title_entry = gtk_entry_new();

 catalogue_entry = gtk_entry_new();

 GtkWidget* dialog = gtk_dialog_new_with_buttons("Add CD",

  app,

  GTK_DIALOG_DESTROY_WITH_PARENT,

  GTK_STOCK_OK,

  GTK_RESPONSE_ACCEPT,

  GTK_STOCK_CANCEL,

  GTK_RESPONSE_REJECT,

  NULL);

 add_widget_with_label(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),

  "Artist", artist_entry);

 add_widget_with_label(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),

  "Title", title_entry);

 add_widget_with_label(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox),

  "Catalogue", catalogue_entry);

 g_signal_connect(GTK_OBJECT(dialog), "response",

  GTK_SIGNAL_FUNC(addcd_dialog_button_clicked), NULL);

 return dialog;

}

13. База данных требует регистрации пользователя перед выполнением запросов к ней, поэтому данная функция создает диалоговое окно для ввода имени пользователя и пароля:

GtkWidget *create_login_dialog() {

 GtkWidget* dialog = gtk_dialog_new_with_buttons("Database Login",

  app, GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,

  GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL);

 username_entry = gtk_entry_new();

 password_entry = gtk_entry_new();

Перейти на страницу:
Комментариев (0)
название