Spec-Zone.ru › GTK 3.22

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

Позиция в списке элементов, на которую добавляется child. Позиции нумеруются с 0 до n-1.

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

если TRUE, поиск первого выбираемого элемента меню, в противном случае ничего не выбирать, если первый элемент не активен. Должно быть FALSE, если меню вызывается впервые.

С момента: 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

если TRUE, принудительно деактивировать оболочку меню после активации элемента меню

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

TRUE если оболочка меню должна получить фокус при открытии

С момента: 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

a GtkMenuShell

Возвращает

текущий выбранный элемент.

[transfer none]

С: 3.0

gtk_menu_shell_get_parent_shell ()

GtkWidget *
gtk_menu_shell_get_parent_shell (GtkMenuShell *menu_shell);

Получает родительское меню.

Родительским меню подменю является GtkMenu или GtkMenuBar, из которого оно было открыто.

Параметры

menu_shell

a GtkMenuShell

Возвращает

родительское GtkMenuShell.

[transfer none]

С: 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

a GtkMenuShell

model

связываемая GMenuModel или NULL для удаления связи.

[allow-none]

action_namespace

пространство имен для действий в model .

[allow-none]

with_separators

TRUE, если между верхнеуровневыми элементами в shell должны быть разделители

С: 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

если TRUE, скрыть меню после активации пункта

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

данные пользователя, установленные при подключении обработчика сигналов.

Возвращаемое значение

TRUE для остановки генерации сигнала, FALSE для продолжения

Флаги: Выполнить последним

С: 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API