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_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, имеют имена, префиксные пространством имен, плюс точка. Например, если действие «выход» упомянуто, а action_namespace — «app», то эффективное имя действия — «app.выход».
Эта функция использует GtkActionable для определения имени действия и целевых значений созданных элементов меню. Если требуется использовать группу действий, отличную от «app» и «win», или если требуется использовать GtkMenuShell вне GtkApplicationWindow, то необходимо подключить собственную группу действий к иерархии виджетов с помощью gtk_widget_insert_action_group(). Например, если создана группа с действием «выход» и вставлена с именем «mygroup», то в вашем GMenuModel следует использовать имя действия «mygroup.выход».
В большинстве случаев вы можете использовать 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.20/GtkMenuShell.html