-->

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

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

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

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

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

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

 tree_store = gtk_tree_store_new(N_COLUMNS,

  G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);

 while (i < res1 && i < MAX_CD_RESULT) {

  res2 = get_cd(cd_res.cd_id[i], &cd);

  /* В модель вставляется новая строка */

  gtk_tree_store_append(tree_store, &parent_iter, NULL);

  gtk_tree_store_set(tree_store, &parent_iter, COLUMN_TITLE,

   cd.title, COLUMN_ARTIST, cd.artist_name, COLUMN_CATALOGUE,

   cd.catalogue, -1);

  res3 = get_cd_tracks(cd_res.cd_id[i++], &ct);

  j = 0;

  /* Заполнение дерева дорожками текущего компакт-диска */

  while (j < res3) {

   sprintf(track_title, " Track %d. ", j+1);

   strcat(track_title, ct.track[j++]);

   gtk_tree_store_append(tree_store, &child_iter, &parent_iter);

   gtk_tree_store_set(tree_store, &child_iter,

    COLUMN_TITLE, track_title, -1);

  }

 }

 gtk_tree_view_set_model(GTK_TREE_VIEW(treeview),

 GTK_TREE_MODEL(tree_store));

}

10. Диалоговое окно

addcd
немодальное. Следовательно, перед его созданием и отображением вы проверяете, не активно ли оно уже:

void on_addcd_activate(GtkMenuItem* menuitem, gpointer user_data) {

 if (addcd_dialog != NULL) return;

 addcd_dialog = create_addcd_dialog();

 gtk_widget_show_all(addcd_dialog);

}

gboolean close_app(GtkWidget * window, gpointer data) {

 gboolean exit;

 if ((exit = confirm_exit())) {

  quit_app(NULL, NULL);

 }

 return exit;

}

11. Когда вы щелкаете мышью кнопку About (О программе), раскрывается стандартное поле

about
среды GNOME:

void on_about_activate(GtkMenuItem* menuitem, gpointer user_data) {

 const char* authors[] = {"Wrox Press", NULL};

 GtkWidget* about = gnome_about_new("CD Database", "1.0",

  " (c) Wrox Press", "Beginning Linux Programming",

  (const char **)authors, NULL, "Translators", NULL);

 gtk_widget_show(about);

}

Упражнение 16.14. Файл main.c

Введите следующий программный код в файл main.с, содержащий функцию

main
программы.

1. После операторов

include
вы ссылаетесь на поля ввода имени пользователя и пароля из файла interface.c:

#include <stdio.h>

#include <stdlib.h>

#include "app_gnome.h"

extern GtkWidget* username_entry;

extern GtkWidget* password_entry;

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

 GtkWidget *main_window;

 GtkWidget *login_dialog;

 const char *user_const;

 const char *pass_const;

 gchar username[100];

 gchar password[100];

 gint result;

2. Инициализируйте как обычно библиотеки GNOME и затем создайте и отобразите на экране главное окно и диалоговое окно вашей регистрации:

 gnome_program_init("CdDatabase", "0.1", LIBGNOMEUI_MODULE, argc, argv,

  GNOME_PARAM_APP_DATADIR, "", NULL);

 main_window = create_main_window();

 gtk_widget_show_all(main_window);

 login_dialog = create_login_dialog();

3. Вы ждете в цикле, пока пользователь не введет корректную комбинацию имени пользователя и пароля. Он может выйти из приложения, щелкнув мышью кнопку Cancel, причем в этом случае ему придется подтвердить свое действие:

 while (1) {

  result = gtk_dialog_run(GTK_DIALOG(login_dialog));

  if (result != GTK_RESPONSE_ACCEPT) {

   if (confirm_exit()) return 0;

   else continue;

  }

  user_const = gtk_entry_get_text(GTK_ENTRY(username_entry));

  pass_const = gtk_entry_get_text(GTK_ENTRY(password_entry));

  strcpy(username, user_const);

  strcpy(password, pass_const);

  if (database_start(username, password) == TRUE) break;

4. Если функция

database_start
завершается аварийно, вы выводите сообщение и диалоговое окно регистрации снова отображается на экране:

  GtkWidget* error_dialog =

   gtk_message_dialog_new(GTK_WINDOW(main_window),

    GTK_DIALOG_DESTROY_WITH_PARENT,

    GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,

    "Could not log on! — Check Username and Password");

  gtk_dialog_run(GTK_DIALOG(error_dialog));

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