GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
GtkMenuShellGtkMenuShell Базовый класс для объектов меню |
#include <gtk/gtk.h>
GtkMenuShell;
void gtk_menu_shell_append (GtkMenuShell *menu_shell,
GtkWidget *child);
void gtk_menu_shell_prepend (GtkMenuShell *menu_shell,
GtkWidget *child);
void gtk_menu_shell_insert (GtkMenuShell *menu_shell,
GtkWidget *child,
gint position);
void gtk_menu_shell_deactivate (GtkMenuShell *menu_shell);
void gtk_menu_shell_select_item (GtkMenuShell *menu_shell,
GtkWidget *menu_item);
void gtk_menu_shell_select_first (GtkMenuShell *menu_shell,
gboolean search_sensitive);
void gtk_menu_shell_deselect (GtkMenuShell *menu_shell);
void gtk_menu_shell_activate_item (GtkMenuShell *menu_shell,
GtkWidget *menu_item,
gboolean force_deactivate);
void gtk_menu_shell_cancel (GtkMenuShell *menu_shell);
void gtk_menu_shell_set_take_focus (GtkMenuShell *menu_shell,
gboolean take_focus);
gboolean gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell);
enum GtkMenuDirectionType;
GObject
+----GInitiallyUnowned
+----GtkObject
+----GtkWidget
+----GtkContainer
+----GtkMenuShell
+----GtkMenuBar
+----GtkMenu
GtkMenuShell осуществляет AtkImplementorIface.
"take-focus" gboolean : Read / Write
"activate-current"
void user_function (GtkMenuShell *menushell,
gboolean force_hide,
gpointer user_data) : Run last / Action
"cancel" void user_function (GtkMenuShell *menushell,
gpointer user_data) : Run last / Action
"cycle-focus"
void user_function (GtkMenuShell *menushell,
GtkDirectionType arg1,
gpointer user_data) : Run last / Action
"deactivate"
void user_function (GtkMenuShell *menushell,
gpointer user_data) : Run first
"move-current"
void user_function (GtkMenuShell *menushell,
GtkMenuDirectionType direction,
gpointer user_data) : Run last / Action
"selection-done"
void user_function (GtkMenuShell *menushell,
gpointer user_data) : Run first
GtkMenuShell это абстрактный основной класс для получения подклассов GtkMenu и GtkMenuBar.
GtkMenuShell содержит GtkMenuItem объекты в списке который может быть управляем, выбран и активирован пользователем для выполнения функций приложения. GtkMenuItem может иметь подменю связанное с ним, учитывая вложенные иерархические меню.
typedef struct _GtkMenuShell GtkMenuShell;GtkMenuShell-struct структура содержащая нижеследующие поля. (Эти поля должны быть доступны только для чтения. Они никогда не должны устанавливаться приложением.)
GList *children; |
Список GtkMenuItem объектов находящихся в этом GtkMenuShell. |
void gtk_menu_shell_append (GtkMenuShell *menu_shell,
GtkWidget *child);
Добавляет новый GtkMenuItem в конец списка пунктов оболочки меню.
menu_shell : |
|
child : |
добавляемый GtkMenuItem. |
void gtk_menu_shell_prepend (GtkMenuShell *menu_shell,
GtkWidget *child);
Добавляет новый GtkMenuItem в начало списка пунктов оболочки меню.
menu_shell : |
|
child : |
добавляемый GtkMenuItem. |
void gtk_menu_shell_insert (GtkMenuShell *menu_shell,
GtkWidget *child,
gint position);
Добавляет новый GtkMenuItem к списку пунктов оболочки меню в позицию определенную position.
menu_shell : |
|
child : |
добавляемый GtkMenuItem. |
position : |
Позиция в списке пунктов в которую будет добавлен child. Позиция нумеруется от 0 до n-1. |
void gtk_menu_shell_deactivate (GtkMenuShell *menu_shell);Дезактивирует оболочку меню. Типичный результат этого удаление оболочки меню с экрана.
menu_shell : |
void gtk_menu_shell_select_item (GtkMenuShell *menu_shell,
GtkWidget *menu_item);
Выбирает пункт меню из оболочки меню.
menu_shell : |
|
menu_item : |
выбираемый GtkMenuItem. |
void gtk_menu_shell_select_first (GtkMenuShell *menu_shell,
gboolean search_sensitive);
Выделяет первый видимый или доступный для выделения дочерний виджет оболочки меню; не выбирает отсоединяемый пункт за исключением единственного отделяемого пункта.
menu_shell : |
|
search_sensitive : |
если TRUE, ищет первый доступный для выделения пункт меню, иначе не выделяет ничего если первый пункт не чувствителен (isn't sensitive). Должно быть FALSE если изначально меню всплывающее. |
Начиная с версии 2.2
void gtk_menu_shell_deselect (GtkMenuShell *menu_shell);Снимает текущеме выделение пункта оболочки меню, если есть.
menu_shell : |
void gtk_menu_shell_activate_item (GtkMenuShell *menu_shell,
GtkWidget *menu_item,
gboolean force_deactivate);
Активизирует пункт внутри оболочки меню.
menu_shell : |
|
menu_item : |
активизируемый GtkMenuItem. |
force_deactivate : |
Если TRUE, принудительно дезактивирует оболочку меню после активации пункта меню. |
void gtk_menu_shell_cancel (GtkMenuShell *menu_shell);Отменяет выделение внутри оболочки меню.
menu_shell : |
Начиная с версии 2.4
void gtk_menu_shell_set_take_focus (GtkMenuShell *menu_shell,
gboolean take_focus);
Если take_focus равен TRUE (по умолчанию) оболочка меню примет фокус клавиатуры чтобы получать все события клавиатуры которые необходимы для перемещения по меню.
Установка take_focus в FALSE полезна только для специальных приложений, таких как виртуальная клавиатура, выполнение которых не должно принимать фокус клавиатуры.
Состояние take_focus меню или панели меню автоматически распространяется на подменю всякий раз когда подменю всплывает, поэтому вы не должны волноваться о рекурсивной установки этого состояния для всей иерархии вашего меню. Только программно выбирая подменю и выводя его на верх вручную, свойство take_focus подменю нужно установить явно.
Помните что установка в FALSE имеет побочный эфект:
Если фокус находится в некотором другом приложении, это сохраняет фокус и клавиатурная навигация меню не работает. Следовательно, клавиатурная навигация на меню будет работать только если фокус включен на некотором верхнем уровне владеющем экранной клавиатурой.
Чтобы не смущать пользователя, меню с take_focus установленном в FALSE не должны отображать мнемоники или акселераторы, так как нельзя гарантировать что они будут работать.
Смотрите также gdk_keyboard_grab()
menu_shell : |
|
take_focus : |
TRUE если оболочка меню должна иметь фокус клавиатуры. |
Начиная с версии 2.8
gboolean gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell);Возвращает TRUE если оболочка меню имеет появляющийся фокус клавиатуры.
menu_shell : |
|
Возвращает : |
TRUE если оболочка меню имеет клавиатурный фокус. |
Начиная с версии 2.8
typedef enum
{
GTK_MENU_DIR_PARENT,
GTK_MENU_DIR_CHILD,
GTK_MENU_DIR_NEXT,
GTK_MENU_DIR_PREV
} GtkMenuDirectionType;
Перечисление представляющее направление перемещения внутри меню.
GTK_MENU_DIR_PARENT |
К родительской оболочке меню. |
GTK_MENU_DIR_CHILD |
К подменю, если есть, связанный с ним. |
GTK_MENU_DIR_NEXT |
К следующему пункту меню. |
GTK_MENU_DIR_PREV |
К предыдущему пункту меню. |
"take-focus" gboolean : Read / WriteОпределяет должно ли меню и подменю перехватывать клавиатурный фокус. Смотрите gtk_menu_shell_set_take_focus() и gtk_menu_shell_get_take_focus().
Значение по умолчанию: TRUE
Начиная с версии 2.8
Детали сигналов
Сигнал "activate-current"
void user_function (GtkMenuShell *menushell, gboolean force_hide, gpointer user_data) : Run last / Action
Сигнал действия которое активизирует текущий пункт меню внутри оболочки меню.
menushell : |
Объект который получает сигнал. |
force_hide : |
Если TRUE, скрывает меню после активации пункта меню. |
user_data : |
пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkMenuShell *menushell,
gpointer user_data) : Run last / Action
Сигнал действия когда прекращается выбор внутри оболочки меню. Заставляет издаваться GtkMenuShell::selection-done сигнал.
menushell : |
Объект который получает сигнал. |
user_data : |
пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkMenuShell *menushell,
GtkDirectionType arg1,
gpointer user_data) : Run last / Action
menushell : |
Объект который получает сигнал. |
arg1 : |
|
user_data : |
пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkMenuShell *menushell,
gpointer user_data) : Run first
Этот сигнал издаётся когда оболочка меню дезактивируется.
menushell : |
Объект который получает сигнал. |
user_data : |
пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkMenuShell *menushell,
GtkMenuDirectionType direction,
gpointer user_data) : Run last / Action
Сигнал действия когда перемещается текущий пункт меню в направлении определённом direction.
menushell : |
Объект который получает сигнал. |
direction : |
Направление движения. |
user_data : |
пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (GtkMenuShell *menushell,
gpointer user_data) : Run first
Сигнал издаётся когда выбор в пределах оболочки меню сделан.
menushell : |
Объект который получает сигнал. |
user_data : |
пользовательские данные устанавливаемые при подключении обработчика сигнала. |