Нейл Мэтью - Основы программирования в Linux

Тут можно читать онлайн Нейл Мэтью - Основы программирования в Linux - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство «БХВ-Петербург», год 2009. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Основы программирования в Linux
  • Автор:
  • Жанр:
  • Издательство:
    «БХВ-Петербург»
  • Год:
    2009
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-9775-0289-4
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Нейл Мэтью - Основы программирования в Linux краткое содержание

Основы программирования в Linux - описание и краткое содержание, автор Нейл Мэтью, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

Для начинающих Linux-программистов

Основы программирования в Linux - читать онлайн бесплатно полную версию (весь текст целиком)

Основы программирования в Linux - читать книгу онлайн бесплатно, автор Нейл Мэтью
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Примечание

Вы можете использовать комплект инструментов GTK+ для создания меню, но среда GNOME предоставляет полезные структуры и макросы, которые существенно облегчают эту задачу. В интерактивной документации описывается, как создавать меню средствами GTK+.

Меню GNOME

Создание строки раскрывающихся меню в среде GNOME на удивление просто. Каждый пункт в строке меню представляется как массив структур GNOMEUIInfo, причем каждый элемент массива соответствует одному пункту меню. Например, если у вас есть меню File(Файл), Edit(Правка) и View(Вид), то у вас будут три массива, описывающих содержимое каждого меню.

После определения отдельных меню создается строка меню как таковая с помощью ссылок на эти массивы в еще одном массиве структур GNOMEUIInfo.

Структура GNOMEUIInfoнемного сложна и нуждается в дополнительных пояснениях.

typedef struct {

GnomeUIInfoType type;

gchar const *label;

gchar const *hint;

gpointer moreinfо;

gpointer user_data;

gpointer unused_data;

GnomeUIPixmapType pixmap_type;

gconstpointer pixmap_info;

guint accelerator_key;

GdkModifierType ac_mods;

GtkWidget *widget;

} GnomeUIInfo;

Первый элемент в структуре, type, определяет тип элемента меню, который описывается далее. Он может быть одним из 11 типов GnomeUIInfоТуре, определяемых средой GNOME и приведенных в табл. 16.3.

Таблица 16.3

Типы GnomeUIInfоТуре Описание
GNOME_APP_UI_ENDOFINFO Означает, что этот элемент — последний пункт меню в массиве
GNOME_APP_UI_ITEM Обычный пункт меню или переключатель, если ему предшествует элемент GNOME_APP_UI_RADIOITEMS
GNOME_APP_UI_TOGGLEITEM Пункт меню в виде кнопки-переключателя или кнопки-флажка
GNOME_APP_UI_RADIOITEMS Группа переключателей или зависимых переключателей
GNOME_APP_UI_SUBTREE Означает, что данный элемент представляет собой подменю. Задайте moreinfoдля указания на массив подменю
GNOME_APP_UI_SEPARATOR Вставляет разделительную линию в меню
GNOME_APP_UI_HELP Создает список тем справки для использования в меню Help(Справка)
GNOME_APP_UI_BUILDER_DATA Задает данные построения (builder data) для следующих элементов
GNOME_APP_UI_ITEM_CONFIGURABLE Настраиваемый пункт меню
GNOME_APP_UI_SUBTREE_STOCK Такой же, как GNOME_APP_UI_SUBTREEза исключением того, что надписи следует искать в каталоге gnome-libs
GNOME_APP_UI_INCLUDE Такой же, как GNOME_APP_UI_SUBTREEза исключением того, что пункты включены в текущее меню, а не в подменю

Второй и третий элементы структуры определяют текст пункта меню и всплывающей подсказки. (Подсказка выводится в строке состояния, у нижнего края окна.)

Назначение элемента moreinfoзависит от типа. В случае ITEMи TOGGLEITEMон указывает на функцию обратного вызова, которую следует вызвать при активации пункта меню. Для RADIOITEMSон указывает на массив структур GnomeUIInfo, в которых группируются переключатели.

user_data— произвольный указатель, передаваемый в функцию обратного вызова. Элементы pixmap_typeи pixmap_infoпозволяют добавить к пункту меню растровую пиктограмму, a accelerator_keyи ac_modsпомогут определить клавиатурный эквивалент пункта меню.

И наконец, элемент widgetприменяется для внутреннего хранения указателя на виджет пункта меню функцией создания меню.

Выполните упражнение 16.9.

Упражнение 16.9. Меню GNOME

Вы сможете опробовать меню с помощью данной короткой программы. Назовите ее menu1.с.

#include

void closeApp(GtkWidget *window, gpointer data) {

gtk_main_quit();

}

1. Определите для пунктов меню функцию обратного вызова, названную item_clicked:

void item clicked(GtkWidget *widget, gpointer user_data) {

printf("Item Clicked!\n");

}

2. Далее следуют определения меню. У вас есть подменю, меню верхнего уровня и массив строки меню:

static GnomeUIInfo submenu[] = {

{GNOME_APP_UI_ITEM, "SubMenu", "SubMenu Hint",

GTK_SIGNAL_FUNC(item_clicked), NULL, NULL, 0, NULL, 0, 0, NULL},

{GNOME_APP_UI_ENDOFINFO, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0,

NULL}

};

static GnomeUIInfo menu[] = {

{GNOME_APP_UI_ITEM, "Menu Item 1", "Menu Hint",

NULL, NULL, NULL, 0, NULL, 0, 0, NULL},

{GNOME_APP_UI_SUBTREE, "Menu Item 2", "Menu Hint",

submenu, NULL, NULL, 0, NULL, 0, 0, NULL},

{GNOME_APP_UI_ENDOFINFO, NULL, NULL, null,

NULL, NULL, 0, NULL, 0, 0, NULL}

};

static GnomeUIInfo menubar[] = {

{GNOME_APP_UI_SUBTREE, "Toplevel Item", NULL,

menu, NULL, NULL, 0, NULL, 0, 0, NULL},

{GNOME_APP_UI_ENDOFINFO, NULL, NULL, NULL,

NULL, NULL, 0, NULL, 0, 0, NULL}

};

3. В функции mainвы имеете дело с обычной инициализацией и затем создаете ваш виджет GnomeAppи задаете все меню:

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

GtkWidget *app;

gnome_program_init("gnome1", "0.1", LIBGNOMEUI_MODULE,

argc, argv, GNOME_PARAM_NONE);

app = gnome_app_new("gnome1", "Menus, menus, menus");

gtk_window_set_default_size(GTK_WINDOW(app), 300, 200);

g_signal_connect(GTK_OBJECT(app), "destroy",

GTK_SIGNAL_FUNC(closeApp), NULL);

gnome_app_create_menus(GNOME_APP(app), menubar);

gtk_widget_show(app);

gtk_main();

return 0;

}

Попробуйте выполнить menu1 и посмотрите в действии строку меню, подменю и меню GNOME обратного вызова, показанные на рис. 16.12.

Рис 1612 Структура GnomeUIInfoедва ли дружественная по отношению к - фото 61

Рис. 16.12

Структура GnomeUIInfoедва ли дружественная по отношению к программисту, если учесть, что она состоит из 11 элементов, большинство из которых обычно равно NULLили нулю. При их вводе очень легко допустить ошибку и трудно отличить одно поле от другого в длинном массиве элементов. Для улучшения сложившейся ситуации в среде GNOME определены макросы, устраняющие необходимость определения структур вручную. Эти макросы также вставляют пиктограммы и клавиатурные акселераторы для вас, и все даром. На самом деле редко возникают причины, заставляющие использовать вместо них что-то другое.

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

#include

#define GNOMEUIINFO_MENU_OPEN_ITEM(cb, data)

#define GNOMEUIINFO_MENU_SAVE_ITEM(cb, data)

#define GNOMEUIINFO_MENU_SAVE_AS_IТЕМ(cb, data)

#define GNOMEUIINFO_MENU_PRINT_ITEM(cb, data)

#define GNOMEUIINFO_MENU_PRINT_SETUP_ITEM(cb, data)

#define GNOMEUIINFO_MENU_CLOSE_IТЕМ(cb, data)

#define GNOMEUIINFO_MENU_EXIT_IТЕМ(cb, data)

#define GNOMEUIINFO_MENU_QUIT_IТЕМ(cb, data)

#define GNOMEUIINFO_MENU_CUT_ITEM(cb, data)

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Нейл Мэтью читать все книги автора по порядку

Нейл Мэтью - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Основы программирования в Linux, автор: Нейл Мэтью. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x