GtkMenuShell
GtkMenuShell — Базовый класс для объектов меню
Функции
| void | gtk_menu_shell_append () |
| void | gtk_menu_shell_prepend () |
| void | gtk_menu_shell_insert () |
| void | gtk_menu_shell_deactivate () |
| void | gtk_menu_shell_select_item () |
| void | gtk_menu_shell_select_first () |
| void | gtk_menu_shell_deselect () |
| void | gtk_menu_shell_activate_item () |
| void | gtk_menu_shell_cancel () |
| void | gtk_menu_shell_set_take_focus () |
| gboolean | gtk_menu_shell_get_take_focus () |
| GtkWidget * | gtk_menu_shell_get_selected_item () |
| GtkWidget * | gtk_menu_shell_get_parent_shell () |
| void | gtk_menu_shell_bind_model () |
Свойства
| gboolean | take-focus | Чтение / Запись |
Сигналы
| void | activate-current | Действие |
| void | cancel | Действие |
| void | cycle-focus | Действие |
| void | deactivate | Выполнение вначале |
| void | insert | Выполнение вначале |
| void | move-current | Действие |
| gboolean | move-selected | Выполнение в конце |
| void | selection-done | Выполнение вначале |
Типы и значения
| struct | GtkMenuShell |
| enum | GtkMenuDirectionType |
Иерархия объектов
GObject ╰── GInitiallyUnowned ╰── GtkWidget ╰── GtkContainer ╰── GtkMenuShell ├── GtkMenuBar ╰── GtkMenu
Реализованные интерфейсы
GtkMenuShell реализует AtkImplementorIface и GtkBuildable.
Включаемые файлы
#include <gtk/gtk.h>
Описание
Класс GtkMenuShell является абстрактным базовым классом, используемым для получения подклассов GtkMenu и GtkMenuBar.
Класс GtkMenuShell — это контейнер объектов GtkMenuItem, упорядоченных в список, который пользователь может просматривать, выбирать и активировать для выполнения функций приложения. Объект GtkMenuItem может иметь связанное с ним подменю, что позволяет создавать вложенные иерархические меню.
Терминология
Элемент меню может быть «выбран», это означает, что он отображается в режиме выделения, а если у него есть подменю, то это подменю будет отображено.
Меню «активно», когда оно отображается на экране, и пользователь выбирает элементы в нём. Меню-строка неактивна, пока пользователь не нажмёт на один из её элементов меню. Когда меню активно, наведение курсора мыши на подменю отобразит его.
Существует также понятие текущего меню и текущего элемента меню. Текущий элемент меню — это выбранный элемент меню, который находится наиболее глубоко в иерархии. (В каждом активном меню-оболочке необязательно присутствует выбранный элемент меню, но если он есть, то родительская меню-оболочка также должна содержать выбранный элемент меню.) Текущее меню — это меню, содержащее текущий элемент меню. Оно всегда имеет захват GTK и получает все нажатия клавиш.
Функции
gtk_menu_shell_append ()
void gtk_menu_shell_append (GtkMenuShell *menu_shell,GtkWidget *child);
Добавляет новый GtkMenuItem в конец списка элементов оболочки меню.
Параметры
menu_shell | объект GtkMenuShell | |
child | Добавляемый GtkMenuItem. | [type Gtk.MenuItem] |
gtk_menu_shell_prepend ()
void gtk_menu_shell_prepend (GtkMenuShell *menu_shell,GtkWidget *child);
Добавляет новый GtkMenuItem в начало списка элементов оболочки меню.
Параметры
menu_shell | объект GtkMenuShell | |
child | Добавляемый GtkMenuItem. |
gtk_menu_shell_insert ()
void gtk_menu_shell_insert (GtkMenuShell *menu_shell,GtkWidget *child,gint position);
Добавляет новый GtkMenuItem в список элементов оболочки меню на позицию, указанную параметром position.
Параметры
menu_shell | объект GtkMenuShell | |
child | Добавляемый GtkMenuItem. | |
position | Позиция в списке элементов, на которую добавляется |
gtk_menu_shell_deactivate ()
void
gtk_menu_shell_deactivate (GtkMenuShell *menu_shell); Деактивирует оболочку меню.
Обычно это приводит к удалению оболочки меню с экрана.
Параметры
menu_shell | объект GtkMenuShell |
gtk_menu_shell_select_item ()
void gtk_menu_shell_select_item (GtkMenuShell *menu_shell,GtkWidget *menu_item);
Выделяет элемент меню в оболочке меню.
Параметры
menu_shell | объект GtkMenuShell | |
menu_item | Выделяемый GtkMenuItem. |
gtk_menu_shell_select_first ()
void gtk_menu_shell_select_first (GtkMenuShell *menu_shell,gboolean search_sensitive);
Выбирает первый видимый или выбираемый дочерний элемент оболочки меню; не выбирает элементы отрыва, если единственным элементом является элемент отрыва.
Параметры
menu_shell | объект GtkMenuShell | |
search_sensitive | если |
С момента: 2.2
gtk_menu_shell_deselect ()
void
gtk_menu_shell_deselect (GtkMenuShell *menu_shell); Отменяет выбор текущего выделенного элемента в оболочке меню, если таковой есть.
Параметры
menu_shell | объект GtkMenuShell |
gtk_menu_shell_activate_item ()
void gtk_menu_shell_activate_item (GtkMenuShell *menu_shell,GtkWidget *menu_item,gboolean force_deactivate);
Активирует элемент меню в оболочке меню.
Параметры
menu_shell | объект GtkMenuShell | |
menu_item | активируемый GtkMenuItem | |
force_deactivate | если |
gtk_menu_shell_cancel ()
void
gtk_menu_shell_cancel (GtkMenuShell *menu_shell); Отменяет выбор в оболочке меню.
Параметры
menu_shell | объект GtkMenuShell |
С момента: 2.4
gtk_menu_shell_set_take_focus ()
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 | объект GtkMenuShell | |
take_focus |
|
С момента: 2.8
gtk_menu_shell_get_take_focus ()
gboolean
gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell); Возвращает TRUE, если оболочка меню получит фокус при открытии.
Параметры
menu_shell | объект GtkMenuShell |
Возвращаемое значение
TRUE, если оболочка меню получит фокус при открытии.
С момента: 2.8
gtk_menu_shell_get_selected_item ()
GtkWidget *
gtk_menu_shell_get_selected_item (GtkMenuShell *menu_shell); Получает текущий выбранный элемент.
Параметры
menu_shell |
Возвращает
текущий выбранный элемент.
[transfer none]
С: 3.0
gtk_menu_shell_get_parent_shell ()
GtkWidget *
gtk_menu_shell_get_parent_shell (GtkMenuShell *menu_shell); Получает родительское меню.
Родительским меню подменю является GtkMenu или GtkMenuBar, из которого оно было открыто.
Параметры
menu_shell |
С: 3.0
gtk_menu_shell_bind_model ()
void gtk_menu_shell_bind_model (GtkMenuShell *menu_shell,GMenuModel *model,const gchar *action_namespace,gboolean with_separators);
Устанавливает связь между GtkMenuShell и GMenuModel.
Содержание shell удаляется и затем заполняется элементами меню в соответствии с model . При изменении model , shell обновляется. Два вызова этой функции для shell с разными model приведут к замене первой связи на связь с новым моделью. Если model является NULL, то любая предыдущая связь отменяется, и все дочерние элементы удаляются.
with_separators определяет, вставлять ли разделители между верхнеуровневыми элементами (например, разделами). Это обычно желательно для меню, но не имеет смысла для меню-строк.
Если action_namespace не NULL, то эффект такой же, как если бы все действия, упомянутые в model, имели свои имена, префиксрованные пространством имен, плюс точка. Например, если упомянуто действие «quit», а action_namespace равно «app», то эффективное имя действия равно «app.quit».
Эта функция использует GtkActionable для определения имени действия и целевых значений созданных элементов меню. Если вы хотите использовать другую группу действий, кроме «app» и «win», или если вы хотите использовать GtkMenuShell вне GtkApplicationWindow, то вам нужно подключить собственную группу действий к иерархии виджетов с помощью gtk_widget_insert_action_group(). Например, если вы создали группу с действием «quit» и вставили её с именем «mygroup», то в вашем GMenuModel следует использовать имя действия «mygroup.quit».
В большинстве случаев вам лучше использовать gtk_menu_new_from_model() или gtk_menu_bar_new_from_model() или просто напрямую передавать GMenuModel в gtk_application_set_app_menu() или gtk_application_set_menubar().
Параметры
menu_shell | ||
model | связываемая GMenuModel или | [allow-none] |
action_namespace | пространство имен для действий в | [allow-none] |
with_separators |
|
С: 3.6
Типы и значения
struct GtkMenuShell
struct GtkMenuShell;
перечисление GtkMenuDirectionType
Перечисление, представляющее направление перемещения в меню.
Члены
GTK_MENU_DIR_PARENT | К родительскому меню | |
GTK_MENU_DIR_CHILD | К подменю, если оно есть, связанному с элементом | |
GTK_MENU_DIR_NEXT | К следующему элементу меню | |
GTK_MENU_DIR_PREV | К предыдущему элементу меню |
Подробное описание свойств
Свойство “take-focus”
“take-focus” gboolean
Логическое значение, определяющее, захватывает ли меню и его подменю фокус клавиатуры. См. 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)
Сигнал действия, активирующий текущий пункт меню в оболочке меню.
Параметры
menushell | объект, получивший сигнал | |
force_hide | если | |
user_data | данные пользователя, установленные при подключении обработчика сигналов. |
Флаги: Действие
Сигнал “cancel”
void user_function (GtkMenuShell *menushell, gpointer user_data)
Сигнал действия, отменяющий выбор в оболочке меню. Вызывает отправку сигнала “selection-done”.
Параметры
menushell | объект, получивший сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигналов. |
Флаги: Действие
Сигнал “cycle-focus”
void user_function (GtkMenuShell *menushell, GtkDirectionType direction, gpointer user_data)
Сигнал для переназначения фокуса в заданном direction.
Параметры
menushell | объект, получивший сигнал | |
direction | направление цикла | |
user_data | данные пользователя, установленные при подключении обработчика сигналов. |
Флаги: Действие
Сигнал “deactivate”
void user_function (GtkMenuShell *menushell, gpointer user_data)
Этот сигнал генерируется при деактивации оболочки меню.
Параметры
menushell | объект, получивший сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигналов. |
Флаги: Выполнить сначала
Сигнал “insert”
void user_function (GtkMenuShell *menu_shell, GtkWidget *child, gint position, gpointer user_data)
Сигнал ::insert генерируется при добавлении нового GtkMenuItem в GtkMenuShell. Используется отдельный сигнал вместо GtkContainer::add из-за необходимости дополнительного параметра позиции.
Обратным сигналом является GtkContainer::removed.
Параметры
menu_shell | объект, на котором генерируется сигнал | |
child | вставляемый GtkMenuItem | |
position | позиция вставки | |
user_data | данные пользователя, установленные при подключении обработчика сигналов. |
Флаги: Выполнить сначала
С: 3.2
Сигнал “move-current”
void user_function (GtkMenuShell *menushell, GtkMenuDirectionType direction, gpointer user_data)
Сигнал для переназначения текущего пункта меню в заданном направлении direction.
Параметры
menushell | объект, получивший сигнал | |
direction | направление перемещения | |
user_data | данные пользователя, установленные при подключении обработчика сигналов. |
Флаги: Действие
Сигнал “move-selected”
gboolean user_function (GtkMenuShell *menu_shell, gint distance, gpointer user_data)
Сигнал ::move-selected генерируется для перемещения выделения на другой пункт.
Параметры
menu_shell | объект, на котором генерируется сигнал | |
distance | +1 для перемещения на следующий пункт, -1 для перемещения на предыдущий | |
user_data | данные пользователя, установленные при подключении обработчика сигналов. |
Флаги: Выполнить последним
С: 2.12
Сигнал “selection-done”
void user_function (GtkMenuShell *menushell, gpointer user_data)
Этот сигнал генерируется при завершении выбора в оболочке меню.
Параметры
menushell | объект, получивший сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигналов. |
Флаги: Выполнить сначала
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.22/GtkMenuShell.html