, определяет тип элемента меню, который описывается далее. Он может быть одним из 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 <gnome.h>
void closeApp(GtkWidget *window, gpointer data) {
gtk_main_quit;
}
1. Определите для пунктов меню функцию обратного вызова, названную
Попробуйте выполнить menu1 и посмотрите в действии строку меню, подменю и меню GNOME обратного вызова, показанные на рис. 16.12.
Рис. 16.12
Структура
GnomeUIInfo
едва ли дружественная по отношению к программисту, если учесть, что она состоит из 11 элементов, большинство из которых обычно равно
NULL
или нулю. При их вводе очень легко допустить ошибку и трудно отличить одно поле от другого в длинном массиве элементов. Для улучшения сложившейся ситуации в среде GNOME определены макросы, устраняющие необходимость определения структур вручную. Эти макросы также вставляют пиктограммы и клавиатурные акселераторы для вас, и все даром. На самом деле редко возникают причины, заставляющие использовать вместо них что-то другое.
Существуют два набора макросов, первый из которых определяет отдельные пункты меню. Эти макросы принимают два параметра: указатель на функцию обратного вызова и данные пользователя.