Обзор действий в GTK
В этой главе подробно описано, как GTK использует действия для подключения активируемых элементов пользовательского интерфейса к обработчикам событий. GTK наследует базовую архитектуру GAction и GMenu для описания абстрактных действий и меню из библиотеки GIO.
GAction — это, по сути, способ сообщить инструменту о функции в вашей программе и присвоить ей имя.
Действия являются чисто функциональными. Они не содержат никакой информационной информации о представлении.
Действию присвоены четыре значения:
имя в качестве идентификатора (обычно строка на английском языке, в нижнем регистре, не требующая перевода)
флаг активности, указывающий, можно ли активировать действие (как свойство «чувствительность» у виджетов)
необязательное значение состояния для состоятельных действий (например, булево значение для переключателей)
необязательный тип параметра, используемый при активации действия
Действие поддерживает две операции. Вы можете активировать его, передав параметр правильного типа. И вы можете запросить изменение состояния действия (для состоятельных действий) на новое значение правильного типа.
Вот некоторые правила для действий:
имя неизменяемо (в том смысле, что оно никогда не изменится) и никогда не
NULLфлаг активности может меняться
тип параметра неизменяем
тип параметра является необязательным: он может быть
NULLесли тип параметра
NULL, то активация действия должна выполняться без параметра (т.е. указатель GVariantNULL)если тип параметра не
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/actions-overview.html