Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
COLUMN_CATALOGUE, "Catalogue", renderer, "text",
COLUMN_CATALOGUE, NULL);
gtk_container_add(GTK_CONTAINER(window), view);
gtk_widget_show_all(window); gtk_main();
return 0;
}
Вы будете применять
GtkTreeView
GtkTreeView
Мы завершили обзор виджетов GTK+ и теперь обратим наше внимание на другую половину: среду GNOME. Вы увидите, как вставлять меню в ваше приложение с помощью библиотек GNOME и как виджеты GNOME облегчают программирование для рабочего стола GNOME.
Виджеты GNOME
Комплект GTK+ спроектирован как нейтральный по отношению к рабочему столу, т.е. GTK+ не делает никаких допущений о том, что он выполняется в среде GNOME или даже в системе Linux. Причина заключается в том, что комплект инструментов GTK+ можно с относительной легкостью перенести для выполнения в ОС Windows или любой другой оконной системе. В результате GTK+ не хватает средств для связывания программы с рабочим столом, таких как средства сохранения настройки программы, отображение файлов помощи или программные апплеты (апплеты — это небольшие утилиты, выполняющиеся на краевых панелях (edge panels)).
Библиотеки среды включают виджеты GNOME, расширяющие комплект GTK+ и замещающие его части более легкими в применении виджетами. В этом разделе мы расскажем, как программировать с помощью виджетов GNOME.
Перед использованием библиотек GNOME их следует инициализировать при запуске ваших программ точно так же, как вы поступали с библиотеками GTK+. Вы вызываете функцию
gnome_program_init
gtk_init
Эта функция принимает параметры
app_id
арр_version
module_info
<b>GnomeProgram* gnome_program_init(const char *app_id,</b>
<b> const char *app_version, const GnomeModuleInfо *module_infо,</b>
<b> int argc, char **argv, const char *first_property_name, ...);</b>
Необязательный список свойств позволяет задать такие характеристики, как, например, каталог для поиска растровой графики.
Выполните упражнение 16.8.
Давайте рассмотрим программу, применяющую средства GNOME, в которой выполняется GNOME-замещение объекта
GtkWindow
GnomeApp
Введите эту программу и назовите ее gnome1.c:
#include <gnome.h>
int main(int argc, char* argv[]) {
GtkWidget *app;
gnome_program_init("gnome1", "1.0", MODULE, argc, argv, NULL);
app = gnome_app_new("gnome1", "The Window Title");
gtk_widget_show(app);
gtk_main();
return 0;
}
Для компиляции вам необходимо включить заголовочные файлы GNOME, поэтому передайте библиотеки libgnomeui и libgnome в команду
pkg-config
$ <b>gcc gnome1.с -о gnome1 `pkg-config --cflags --libs libgnome-2.0 libgnomeui-2.0`</b>
Виджет
GnomeApp
GtkWindow
GnomeApp
GtkWindow
Вы можете использовать комплект инструментов GTK+ для создания меню, но среда GNOME предоставляет полезные структуры и макросы, которые существенно облегчают эту задачу. В интерактивной документации описывается, как создавать меню средствами GTK+.
Меню GNOME
Создание строки раскрывающихся меню в среде GNOME на удивление просто. Каждый пункт в строке меню представляется как массив структур
GNOMEUIInfo
После определения отдельных меню создается строка меню как таковая с помощью ссылок на эти массивы в еще одном массиве структур
GNOMEUIInfo
Структура
GNOMEUIInfo
<b>typedef struct {</b>
<b> GnomeUIInfoType type;</b>
<b> gchar const *label;</b>
<b> gchar const *hint;</b>
<b> gpointer moreinfо;</b>
<b> gpointer user_data;</b>
<b> gpointer unused_data;</b>
<b> GnomeUIPixmapType pixmap_type;</b>
<b> gconstpointer pixmap_info;</b>
<b> guint accelerator_key;</b>
<b> GdkModifierType ac_mods;</b>
<b> GtkWidget *widget;</b>
<b>} GnomeUIInfo;</b>
Первый элемент в структуре,
type
GnomeUIInfоТуре
Таблица 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_APP_UI_INCLUDE | Такой же, как GNOME_APP_UI_SUBTREE |