GtkPopover
GtkPopover — Контекстно-зависимые всплывающие окна
Функции
Свойства
| GtkPopoverConstraint | constrain-to | Чтение/Запись |
| gboolean | modal | Чтение/Запись |
| GdkRectangle * | pointing-to | Чтение/Запись |
| GtkPositionType | position | Чтение/Запись |
| GtkWidget * | relative-to | Чтение/Запись |
| gboolean | transitions-enabled | Чтение/Запись |
Типы и значения
| struct | GtkPopover |
| перечисление | GtkPopoverConstraint |
Иерархия объектов
GObject ╰── GInitiallyUnowned ╰── GtkWidget ╰── GtkContainer ╰── GtkBin ╰── GtkPopover ╰── GtkPopoverMenu
Реализованные интерфейсы
GtkPopover реализует AtkImplementorIface и GtkBuildable.
Файлы
#include <gtk/gtk.h>
Описание
GtkPopover — это контекстное окно, напоминающее пузырёк, предназначенное в основном для предоставления контекстно-зависимой информации или опций. Поповеры прикрепляются к виджету, передаваемому во время создания в gtk_popover_new(), или обновляются впоследствии с помощью gtk_popover_set_relative_to(), по умолчанию они будут указывать на всю область виджета, хотя это поведение можно изменить с помощью gtk_popover_set_pointing_to().
Положение поповера относительно прикреплённого к нему виджета также можно изменить с помощью gtk_popover_set_position().
По умолчанию GtkPopover выполняет захват GTK+, чтобы гарантировать перенаправление событий ввода ему во время отображения, а также для того, чтобы поповер закрывался в ожидаемых ситуациях (щелчки за пределами поповера или нажатие клавиши Esc). Если такое модальное поведение для поповера нежелательно, можно вызвать gtk_popover_set_modal() для изменения его поведения.
GtkPopover как замена меню
GtkPopover часто используется для замены меню. Для этого он поддерживает заполнение из GMenuModel с помощью gtk_popover_new_from_model(). В дополнение ко всем обычным функциям модели меню, эта функция поддерживает отображение разделов в модели в более компактной форме, как ряд кнопок с иконками вместо элементов меню.
Для использования такого отображения установите атрибут раздела "display-hint" в "horizontal-buttons" и установите иконки элементов с атрибутом "verb-icon".
<section>
<attribute name="display-hint">horizontal-buttons</attribute>
<item>
<attribute name="label">Cut</attribute>
<attribute name="action">app.cut</attribute>
<attribute name="verb-icon">edit-cut-symbolic</attribute>
</item>
<item>
<attribute name="label">Copy</attribute>
<attribute name="action">app.copy</attribute>
<attribute name="verb-icon">edit-copy-symbolic</attribute>
</item>
<item>
<attribute name="label">Paste</attribute>
<attribute name="action">app.paste</attribute>
<attribute name="verb-icon">edit-paste-symbolic</attribute>
</item>
</section>CSS-узлы
GtkPopover имеет один CSS-узел, называемый popover. Он всегда получает класс стиля .background, а также получает класс стиля .menu, если он похож на меню (например, GtkPopoverMenu или созданный с помощью gtk_popover_new_from_model().
Конкретные случаи использования GtkPopover, такие как всплывающие окна выбора касанием или лупы в GtkEntry или GtkTextView, получают такие классы стилей, как .touch-selection или .magnifier, чтобы отличить их от обычных поповеров.
Функции
gtk_popover_new ()
GtkWidget *
gtk_popover_new (GtkWidget *relative_to); Создаёт новый всплывающее окно, связанное с relative_to
Параметры
relative_to | GtkWidget к которому привязывается всплывающее окно. | [allow-none] |
Возвращаемое значение
новый GtkPopover
С версии: 3.12
gtk_popover_new_from_model ()
GtkWidget * gtk_popover_new_from_model (GtkWidget *relative_to,GMenuModel *model);
Создаёт GtkPopover и заполняет его в соответствии с model. Всплывающее окно привязано к виджету relative_to.
Созданные кнопки связаны с действиями, найденными в GtkApplicationWindow, к которому принадлежит всплывающее окно — обычно путём привязки к виджету, содержащемуся в иерархии виджетов GtkApplicationWindows.
Действия также можно добавить с помощью gtk_widget_insert_action_group() к виджету меню или любому его родительскому виджету.
Параметры
relative_to | GtkWidget к которому привязывается всплывающее окно. | [allow-none] |
model |
Возвращаемое значение
новый GtkPopover
С версии: 3.12
gtk_popover_bind_model ()
void gtk_popover_bind_model (GtkPopover *popover,GMenuModel *model,const gchar *action_namespace);
Устанавливает связь между GtkPopover и GMenuModel.
Содержимое popover удаляется и затем перезаполняется элементами меню в соответствии с model. При изменении model, popover обновляется. Вызов этой функции дважды для popover с разными model заменит первую привязку на привязку к новому модели. Если model является NULL, то любая предыдущая привязка отменяется, и все дочерние элементы удаляются.
Если action_namespace не является NULL, то эффект такой, как если бы все действия, упомянутые в model, имели свои имена, префиксрованные именем пространства имён, плюс точка. Например, если действие «выход» упоминается, а action_namespace равно «приложение», то эффективное имя действия — «приложение.выход».
Эта функция использует GtkActionable для определения имени действия и целевых значений созданных элементов меню. Если вы хотите использовать другую группу действий, отличную от «приложение» и «окно», или если вы хотите использовать GtkMenuShell вне GtkApplicationWindow, вам необходимо прикрепить собственную группу действий к иерархии виджетов, используя gtk_widget_insert_action_group(). Например, если вы создали группу с действием «выход» и вставили её с именем «моягруппа», то вы бы использовали имя действия «моягруппа.выход» в вашем GMenuModel.
Параметры
popover | ||
model | GMenuModel для привязки или | [allow-none] |
action_namespace | пространство имён действий в | [allow-none] |
С версии: 3.12
gtk_popover_popup ()
void
gtk_popover_popup (GtkPopover *popover); Выводит popover. Это отличается от вызова gtk_widget_show(), так как оно отображает всплывающее окно с переходом. Если вы хотите отобразить всплывающее окно без перехода, используйте gtk_widget_show().
Параметры
popover |
С версии: 3.22
gtk_popover_popdown ()
void
gtk_popover_popdown (GtkPopover *popover); Скрывает popover. Это отличается от вызова gtk_widget_hide(), так как оно скрывает всплывающее окно с переходом. Если вы хотите скрыть всплывающее окно без перехода, используйте gtk_widget_hide().
Параметры
popover |
С версии: 3.22
gtk_popover_set_relative_to ()
void gtk_popover_set_relative_to (GtkPopover *popover,GtkWidget *relative_to);
Устанавливает новый виджет для привязки к popover. Если popover отображается, положение будет обновлено.
Примечание: владение всплывающими окнами всегда передаётся их виджету relative_to, поэтому если relative_to устанавливается в NULL на прикреплённом виджете popover, оно отвяжется от предыдущего виджета и, следовательно, будет уничтожено, если не поддерживается дополнительные ссылки.
Параметры
popover | ||
relative_to | [allow-none] |
С версии: 3.12
gtk_popover_get_relative_to ()
GtkWidget *
gtk_popover_get_relative_to (GtkPopover *popover); Возвращает виджет, к которому в настоящее время прикреплён popover
Параметры
popover |
С: 3.12
gtk_popover_set_pointing_to ()
void gtk_popover_set_pointing_to (GtkPopover *popover,const GdkRectangle *rect);
Устанавливает прямоугольник, к которому будет указывать popover, в системе координат виджета, к которому прикреплён popover, см. gtk_popover_set_relative_to().
Параметры
popover | ||
rect | прямоугольник для указания |
С: 3.12
gtk_popover_get_pointing_to ()
gboolean gtk_popover_get_pointing_to (GtkPopover *popover,GdkRectangle *rect);
Если был установлен прямоугольник для указания, эта функция вернёт TRUE и заполнит rect таким прямоугольником, в противном случае вернёт FALSE и заполнит rect координатами прикреплённого виджета.
Параметры
popover | ||
rect | место для хранения прямоугольника. | [out] |
Возвращаемое значение
TRUE, если был задан прямоугольник для указания.
gtk_popover_set_position ()
void gtk_popover_set_position (GtkPopover *popover,GtkPositionType position);
Устанавливает предпочтительную позицию для отображения popover. Если popover в настоящее время отображается, он будет немедленно обновлён.
Это предпочтение будет учитываться по возможности, хотя при недостатке места (например, если поблизости находятся края окна), GtkPopover может выбрать отображение с противоположной стороны.
Параметры
popover | ||
position | предпочтительное положение всплывающего окна |
С: 3.12
gtk_popover_get_position ()
GtkPositionType
gtk_popover_get_position (GtkPopover *popover); Возвращает предпочтительную позицию popover .
Параметры
popover |
Возвращаемое значение
Предпочтительная позиция.
gtk_popover_set_constrain_to ()
void gtk_popover_set_constrain_to (GtkPopover *popover,GtkPopoverConstraint constraint);
Устанавливает ограничение для позиционирования этого всплывающего окна.
Обратите внимание, что не все платформы поддерживают свободное размещение всплывающих окон и могут уже накладывать ограничения.
Параметры
popover | ||
constraint | новое ограничение |
С: 3.20
gtk_popover_get_constrain_to ()
GtkPopoverConstraint
gtk_popover_get_constrain_to (GtkPopover *popover); Возвращает ограничение для размещения этого всплывающего окна. См. gtk_popover_set_constrain_to().
Параметры
popover |
Возвращаемое значение
ограничение для размещения этого всплывающего окна.
С: 3.20
gtk_popover_set_modal ()
void gtk_popover_set_modal (GtkPopover *popover,gboolean modal);
Устанавливает, является ли popover модальным, модальное всплывающее окно будет захватывать весь ввод в главном окне и захватит фокус клавиатуры при отображении. Нажатие вне области всплывающего окна или нажатие клавиши Esc закроет всплывающее окно и освободит захват ввода.
Параметры
popover | ||
modal | TRUE, чтобы сделать всплывающее окно захватывающим весь ввод в главном окне |
С: 3.12
gtk_popover_get_modal ()
gboolean
gtk_popover_get_modal (GtkPopover *popover); Возвращает, является ли всплывающее окно модальным, см. gtk_popover_set_modal, чтобы узнать о последствиях этого.
Параметры
popover |
Возвращаемое значение
TRUE, если popover модальное
С: 3.12
gtk_popover_set_transitions_enabled ()
void gtk_popover_set_transitions_enabled (GtkPopover *popover,gboolean transitions_enabled);
gtk_popover_set_transitions_enabled устарел начиная с версии 3.22 и не должен использоваться в новом коде.
Вы можете показать или скрыть всплывающее окно без анимации, используя gtk_widget_show() и gtk_widget_hide(), в то время как gtk_popover_popup() и gtk_popover_popdown() будут использовать анимацию.
Устанавливает, включены ли переходы при показе/скрытии этого всплывающего окна.
Параметры
popover | ||
transitions_enabled | Включены ли переходы |
С: 3.16
gtk_popover_get_transitions_enabled ()
gboolean
gtk_popover_get_transitions_enabled (GtkPopover *popover); gtk_popover_get_transitions_enabled устарел начиная с версии 3.22 и не должен использоваться в новом коде.
Вы можете отобразить или скрыть всплывающее окно без анимации, используя gtk_widget_show() и gtk_widget_hide(), в то время как gtk_popover_popup() и gtk_popover_popdown() будут использовать анимацию.
Возвращает, включены ли анимации показа/скрытия для этого всплывающего окна.
Параметры
popover |
Возвращает
TRUE, если анимации показа и скрытия для данного всплывающего окна включены, FALSE в противном случае.
С: 3.16
gtk_popover_set_default_widget ()
void gtk_popover_set_default_widget (GtkPopover *popover,GtkWidget *widget);
Устанавливает виджет, который должен быть установлен по умолчанию, пока всплывающее окно отображается (см. gtk_window_set_default()). GtkPopover запоминает предыдущий виджет по умолчанию и восстанавливает его, когда всплывающее окно закрывается.
Параметры
popover | ||
widget | новый виджет по умолчанию или | [allow-none] |
С: 3.18
gtk_popover_get_default_widget ()
GtkWidget *
gtk_popover_get_default_widget (GtkPopover *popover); Получает виджет, который должен быть установлен по умолчанию, пока всплывающее окно отображается.
Параметры
popover |
С: 3.18
Типы и значения
struct GtkPopover
struct GtkPopover;
перечисление GtkPopoverConstraint
Описывает ограничения для позиционирования всплывающих окон. В будущем в это перечисление могут быть добавлены новые значения.
Элементы
GTK_POPOVER_CONSTRAINT_NONE | Не накладывать ограничений на позиционирование всплывающего окна, кроме тех, что заданы реализацией | |
GTK_POPOVER_CONSTRAINT_WINDOW | Ограничить всплывающее окно границами окна, к которому оно прикреплено |
С: 3.20
Подробное описание свойств
Свойство “constrain-to”
“constrain-to” GtkPopoverConstraint
Устанавливает ограничение для позиционирования всплывающего окна.
Флаги: Чтение/Запись
Значение по умолчанию: GTK_POPOVER_CONSTRAINT_WINDOW
С: 3.20
Свойство “modal”
“modal” gboolean
Устанавливает, является ли всплывающее окно модальным (так что другие элементы окна не получают ввод, пока всплывающее окно открыто).
Флаги: Чтение/Запись
Значение по умолчанию: TRUE
С: 3.12
Свойство “pointing-to”
“pointing-to” GdkRectangle *
Помечает конкретный прямоугольник для указания.
Флаги: Чтение/Запись
С: 3.12
Свойство “position”
“position” GtkPositionType
Устанавливает предпочтительную позицию всплывающего окна.
Флаги: Чтение/Запись
Значение по умолчанию: GTK_POS_TOP
С: 3.12
Подробное описание сигналов
Сигнал “closed”
void user_function (GtkPopover *popover, gpointer 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/GtkPopover.html