GtkPadController
GtkPadController — Контроллер для рисования планшетов
Функции
Свойства
| GActionGroup * | action-group | Чтение / Запись / Только для создания |
| GdkDevice * | pad | Чтение / Запись / Только для создания |
Типы и значения
| GtkPadController | |
| перечисление | GtkPadActionType |
| структура | GtkPadActionEntry |
Иерархия объектов
GObject
╰── GtkEventController
╰── GtkPadController
Файлы
#include <gtk/gtk.h>
Описание
GtkPadController — это контроллер событий для планшетов, используемых для рисования (наборы кнопок и сенсоров, часто встречающихся вокруг области, чувствительной к стилусу).
Эти кнопки и сенсоры не имеют неявного значения и по умолчанию не выполняют никаких действий. Данный контроллер предоставляет возможность сопоставить их с объектами GAction, позволяя приложению придать им более семантическое значение.
Кнопки и сенсоры не ограничены тем, что вызывают одно действие; некоторые устройства GDK_SOURCE_TABLET_PAD имеют несколько «режимов». Все эти элементы ввода имеют один текущий режим, который может определять конечное вызываемое действие. Устройства планшетов часто делят кнопки и датчики на группы; все элементы в группе используют один и тот же текущий режим, но разные группы могут иметь разные режимы. См. gdk_device_pad_get_n_groups() и gdk_device_pad_get_group_n_modes().
Каждое действие, выполняемое данной кнопкой/полоской/кольцом для заданного режима, определяется элементом GtkPadActionEntry. Он содержит имя действия, которое будет извлечено из заданной группы GActionGroup и активировано при срабатывании указанного элемента ввода и режима.
Простой пример использования GtkPadController, назначение кнопки 1 во всех режимах и на всех устройствах планшета действию «инвертировать выделение»:
GtkPadActionEntry *pad_actions[] = {
{ GTK_PAD_ACTION_BUTTON, 1, -1, "Invert selection", "pad-actions.invert-selection" },
…
};
…
action_group = g_simple_action_group_new ();
action = g_simple_action_new ("pad-actions.invert-selection", NULL);
g_signal_connect (action, "activate", on_invert_selection_activated, NULL);
g_action_map_add_action (G_ACTION_MAP (action_group), action);
…
pad_controller = gtk_pad_controller_new (window, action_group, NULL);Действия, относящиеся к кольцам/полоскам, будут активированы с параметром типа G_VARIANT_TYPE_DOUBLE, содержащим значение заданной оси. Требуется, чтобы они были состояниями и принимали этот GVariantType.
Функции
gtk_pad_controller_new ()
GtkPadController * gtk_pad_controller_new (GtkWindow *window,GActionGroup *group,GdkDevice *pad);
Создаёт новый GtkPadController, который будет связывать события с pad действиями. Может быть предоставлен NULL пад, чтобы контроллер управлял всеми устройствами падов обобщённо. Не рекомендуется смешивать объекты GtkPadController с NULL и не-NULL pad аргументом в одном window, так как порядок выполнения не гарантируется.
Контроллер GtkPadController создаётся без сопоставленных действий. Для того, чтобы сопоставить события пада с действиями, используйте gtk_pad_controller_set_action_entries() или gtk_pad_controller_set_action().
Параметры
window | окно GtkWindow | |
group | GActionGroup для запуска действий | |
pad | Устройство | [nullable] |
Возвращаемое значение
Созданный GtkPadController
С: 3.22
gtk_pad_controller_set_action_entries ()
void gtk_pad_controller_set_action_entries (GtkPadController *controller,const GtkPadActionEntry *entries,gint n_entries);
Функция для добавления группы записей действий на controller. См. GtkPadActionEntry и gtk_pad_controller_set_action().
Параметры
controller | ||
entries | Записи действий, которые нужно установить для | [array length=n_entries] |
n_entries | Количество элементов в |
С: 3.22
gtk_pad_controller_set_action ()
void gtk_pad_controller_set_action (GtkPadController *controller,GtkPadActionType type,gint index,gint mode,const gchar *label,const gchar *action_name);
Добавляет отдельное действие для controller. Это действие будет активировано только если указанная кнопка/кольцо/полоса в index взаимодействует, в то время как текущий режим — mode. -1 может быть использован для простых случаев, чтобы действие активировалось во всех режимах.
Указанное label должно рассматриваться как отображаемое пользователю, поэтому применяются правила интернационализации. Некоторые системы окон могут использовать их для обратной связи с пользователем.
Параметры
controller | ||
type | Тип функции пада, которая активирует это действие | |
index | Индекс кнопки/кольца/полосы (0-индексированное значение), которая активирует это действие | |
mode | Режим, который активирует это действие, или -1 для всех режимов. | |
label | Описание действия, которое отображается пользователю. | |
action_name | Имя действия, которое будет активировано в GActionGroup |
С: 3.22
Типы и Значения
GtkPadController
typedef struct _GtkPadController GtkPadController;
Перечисление GtkPadActionType
Тип действия пада.
Члены
GTK_PAD_ACTION_BUTTON | Действие выполняется при нажатии кнопки пада | |
GTK_PAD_ACTION_RING | Действие выполняется при вращении кольца пада | |
GTK_PAD_ACTION_STRIP | Действие выполняется при перемещении по полосе пада |
Структура GtkPadActionEntry
struct GtkPadActionEntry {
GtkPadActionType type;
gint index;
gint mode;
gchar *label;
gchar *action_name;
};
Структура, определяющая запись действия пада.
Члены
GtkPadActionType | Тип функции пада, которая активирует эту запись действия. | |
gint | Индекс кнопки/кольца/полосы (0-индексированное значение), которая активирует эту запись действия. | |
gint | Режим, который активирует эту запись действия, или -1 для всех режимов. | |
gchar * | Описание действия, которое отображается пользователю. | |
gchar * | Имя действия, которое будет активировано в GActionGroup. |
Подробное описание свойств
Свойство “action-group”
“action-group” GActionGroup *
Группа действий для запуска действий.
Владелец: GtkPadController
Флаги: Чтение / Запись / Только для создания
Свойство “pad”
“pad” GdkDevice *
Устройство пада для управления.
Владелец: GtkPadController
Флаги: Чтение / Запись / Только для создания
См. также
© 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/GtkPadController.html