GtkPopoverMenu
GtkPopoverMenu — всплывающие меню
Функции
| GtkWidget * | gtk_popover_menu_new_from_model () |
| GtkWidget * | gtk_popover_menu_new_from-model_full () |
| void | gtk_popover_menu_set_menu_model () |
| GMenuModel * | gtk_popover_menu_get_menu_model () |
| gboolean | gtk_popover_menu_add_child () |
| gboolean | gtk_popover_menu_remove_child () |
Свойства
| GMenuModel * | menu-model | Чтение/Запись |
| char * | visible-submenu | Чтение/Запись |
Типы и значения
| GtkPopoverMenu | |
| перечисление | GtkPopoverMenuFlags |
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
╰── GtkPopover
╰── GtkPopoverMenu
Реализованные интерфейсы
GtkPopoverMenu реализует GtkAccessible, GtkBuildable, GtkConstraintTarget, GtkShortcutManager и GtkNative.
Включаемые файлы
#include <gtk/gtk.h>
Описание
GtkPopoverMenu — подкласс GtkPopover, который рассматривает своих потомков как пункты меню и позволяет переключаться между ними. Он может открывать подменю как традиционные, вложенные подменю или более удобным для сенсорных экранов способом — скольжением.
GtkPopoverMenu предназначен для использования в основном с моделями меню, используя gtk_popover_menu_new_from_model(). Если вам нужно поместить другие виджеты, такие как GtkSpinButton или GtkSwitch во всплывающее окно, используйте обычное GtkPopover.
Модели меню
Формат XML, понимаемый GtkBuilder для GMenuModel, состоит из верхнего уровня <menu> элемента, содержащего один или несколько <item> элементов. Каждый <item> элемент содержит <attribute> и <link> элементы с обязательным атрибутом name. <link> элементы имеют тот же формат, что и <menu>. Вместо <link name="submenu> или <link name="section">, можно использовать <submenu> или <section> элементы.
<menu id='app-menu'>
<section>
<item>
<attribute name='label' translatable='yes'>_New Window</attribute>
<attribute name='action'>app.new</attribute>
</item>
<item>
<attribute name='label' translatable='yes'>_About Sunny</attribute>
<attribute name='action'>app.about</attribute>
</item>
<item>
<attribute name='label' translatable='yes'>_Quit</attribute>
<attribute name='action'>app.quit</attribute>
</item>
</section>
</menu>Значения атрибутов могут быть переведены с помощью gettext, как и другие содержимое GtkBuilder. <attribute> элементы могут быть помечены для перевода с помощью атрибута translatable="yes". Также можно указать контекст сообщения и комментарии переводчика, используя атрибуты context и comments. Для этого GtkBuilder должен быть предоставлен домен gettext.
Следующие атрибуты используются при построении пунктов меню:
"label": отображаемая строка для пользователя
"action": префиксное имя действия для запуска
"target": параметр для использования при активации действия
"icon" и "verb-icon": имена иконок, которые могут быть отображены
"submenu-action": имя действия, которое может использоваться для определения возможности открытия подменю
"hidden-when": строка, используемая для определения, когда пункт будет скрыт. Возможные значения включают "action-disabled", "action-missing", "macos-menubar". Это полезно в основном для экспортируемых меню, см.
gtk_application_set_menubar()."custom": строка, используемая для сопоставления с ID пользовательского дочернего элемента, добавленного с помощью
gtk_popover_menu_add_child(),gtk_popover_menu_bar_add_child()или в файле пользовательского интерфейса с помощью<child type="ID">.
Следующие атрибуты используются при построении разделов:
"label": отображаемая строка для заголовка раздела
"display-hint": строка, используемая для определения специального форматирования для раздела. Возможные значения включают "horizontal-buttons", "circular-buttons" и "inline-buttons". Все они указывают, что раздел должен быть отображен как горизонтальная строка кнопок.
"text-direction": строка, используемая для определения GtkTextDirection для использования при "display-hint", установленном в "horizontal-buttons". Возможные значения включают "rtl", "ltr" и "none".
Следующие атрибуты используются при построении подменю:
"label": отображаемая строка для пользователя
"icon": имя отображаемой иконки
Пункты меню также будут отображать сочетания клавиш, которые обычно связываются с действиями с помощью gtk_application_set_accels_for_action(), gtk_widget_class_add_binding_action() или gtk_shortcut_controller_add_shortcut().
CSS узлы
GtkPopoverMenu — это просто подкласс GtkPopover, к которому добавляется пользовательское содержимое, поэтому у него те же CSS узлы. Это один из случаев, когда к основному узлу всплывающего окна добавляется класс .menu.
Доступность
GtkPopoverMenu использует роль GTK_ACCESSIBLE_ROLE_MENU, а его пункты используют роли GTK_ACCESSIBLE_ROLE_MENU_ITEM, GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX или GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO в зависимости от действия, к которому они подключены.
Функции
gtk_popover_menu_new_from_model ()
GtkWidget *
gtk_popover_menu_new_from_model (GMenuModel *model); Создаёт GtkPopoverMenu и заполняет его в соответствии с model .
Созданные кнопки подключаются к действиям, найденным в GtkApplicationWindow, к которому относится всплывающее меню — обычно путём прикрепления к виджету, содержащемуся в иерархии виджетов GtkApplicationWindow.
Действия также можно добавить, используя gtk_widget_insert_action_group() на виджете меню или на любом из его родительских виджетов.
Эта функция создаёт меню со сдвигающимися подменю. См. gtk_popover_menu_new_from_model_full() для управления этим.
Параметры
model | модель GMenuModel, или | [allow-none] |
Возвращает
новый GtkPopoverMenu
gtk_popover_menu_new_from_model_full ()
GtkWidget * gtk_popover_menu_new_from_model_full (GMenuModel *model,GtkPopoverMenuFlags flags);
Создаёт GtkPopoverMenu и заполняет его в соответствии с model .
Созданные кнопки подключаются к действиям, найденным в группах действий, доступных из родительского виджета. Это включает GtkApplicationWindow, к которому относится всплывающее меню. Действия также можно добавить, используя gtk_widget_insert_action_group() на родительском виджете или на любом из его родительских виджетов.
В настоящее время поддерживается только флаг GTK_POPOVER_MENU_NESTED, который заставляет GTK создавать традиционные вложенные подменю вместо стандартных сдвигающихся подменю.
Параметры
model | модель GMenuModel | |
flags | флаги, влияющие на создание меню |
gtk_popover_menu_set_menu_model ()
void gtk_popover_menu_set_menu_model (GtkPopoverMenu *popover,GMenuModel *model);
Устанавливает новую модель меню для popover .
Существующее содержимое popover удаляется, и popover заполняется новым содержимым в соответствии с model .
Параметры
popover | ||
model | модель GMenuModel, или | [nullable] |
gtk_popover_menu_get_menu_model ()
GMenuModel *
gtk_popover_menu_get_menu_model (GtkPopoverMenu *popover); Возвращает модель меню, используемую для заполнения всплывающего меню.
Параметры
popover |
Возвращает
модель меню для popover .
[transfer none]
gtk_popover_menu_add_child ()
gboolean gtk_popover_menu_add_child (GtkPopoverMenu *popover,GtkWidget *child,const char *id);
Добавляет пользовательский виджет в сгенерированное меню.
Для этого модель меню popover должна содержать элемент с атрибутом custom, который соответствует id .
Параметры
popover | ||
child | the GtkWidget для добавления | |
id | Идентификатор для вставки |
Возвращает
TRUE если id был найден и виджет добавлен
gtk_popover_menu_remove_child ()
gboolean gtk_popover_menu_remove_child (GtkPopoverMenu *popover,GtkWidget *child);
Удаляет виджет, ранее добавленный с помощью gtk_popover_menu_add_child().
Параметры
popover | ||
child | the GtkWidget для удаления |
Возвращает
TRUE если виджет был удалён
Типы и значения
GtkPopoverMenu
typedef struct _GtkPopoverMenu GtkPopoverMenu;
перечисление GtkPopoverMenuFlags
Флаги, влияющие на создание всплывающих меню из модели меню.
Члены
GTK_POPOVER_MENU_NESTED | Создавать подменю как вложенные всплывающие меню. Без этого флага подменю создаются как сдвигающиеся страницы, которые заменяют основное меню. |
Подробное описание свойств
Свойство “menu-model”
“menu-model” GMenuModel *
Модель, из которой создаётся меню.
Владелец: GtkPopoverMenu
Флаги: Чтение/Запись
Свойство “visible-submenu”
“visible-submenu” char *
Имя видимого подменю.
Владелец: GtkPopoverMenu
Флаги: Чтение/Запись
Значение по умолчанию: NULL
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkPopoverMenu.html