Spec-Zone.ru › GTK 3.24

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>

Описание

A GtkMenuShell — это абстрактный базовый класс, используемый для получения GtkMenu и GtkMenuBar подклассов.

A 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, имеют имена, префиксрованные с именем пространства имён, плюс точка. Например, если упомянуто действие «выход» и action_namespace — «приложение», то эффективное имя действия — «приложение.выход».

Эта функция использует GtkActionable для определения имени действия и целевых значений для созданных элементов меню. Если вы хотите использовать группу действий отличную от «приложение» и «окно», или если вы хотите использовать GtkMenuShell вне GtkApplicationWindow, то вам нужно будет прикрепить свою собственную группу действий к иерархии виджетов, используя gtk_widget_insert_action_group(). Например, если вы создали группу с действием «выход» и вставили её с именем «mygroup», то вы будете использовать имя действия «mygroup.выход» в вашем GMenuModel.

В большинстве случаев вам будет лучше использовать 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

the GMenuModel to bind to или 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().

Владелец: GtkMenuShell

Флаги: Чтение / Запись

Значение по умолчанию: 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,
               int           position,
               gpointer      user_data)

Сигнал ::insert генерируется при добавлении нового GtkMenuItem в GtkMenuShell. Вместо GtkContainer::add используется отдельный сигнал из-за необходимости дополнительного параметра position.

Обратным сигналом для этого сигнала является 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,
               int           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.24/GtkMenuShell.html

Spec-Zone.ru

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