Home > Gtk3, PyGObject, python > PyGObject: Gio.ActionMap

PyGObject: Gio.ActionMap

13 Aprile 2020

torna all’indice appunti

ActionMap

L’interfaccia Gio.ActionMap è implementata da Gio.ActionGroup.
Ha la funzione di contenere istanze di Gio.Action.
Un’applicazione comune di questa interfaccia è quella di mappare le actions provenienti da vari
gruppi (come Gtk.Application e Gtk.ApplicationWindow) utilizzando nomi con prefissi
identificativi, come ad esempio “app.” e “win.
Attenzione! Gio.ActionMap e Gio.ActionGroup sono Interfacce e non classi con un
metodo costruttore. Non è pertanto possibile costruirne delle istanze direttamente.

>>> import gi
... gi.require_version('Gtk', '3.0')
... from gi.repository import Gtk
... from gi.repository import Gio
... 
>>> action_map = Gio.ActionMap()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NotImplementedError: ActionMap can not be constructed

E’ quindi necessario utilizzare delle classi che, oltre ad implementare la stessa interfaccia,
mettano a disposizione i metodi costruttori necessari allo scopo:

>>> myapp = Gtk.ApplicationWindow()
>>> action = Gio.SimpleAction.new(name='Bancaldo', parameter_type=None)
>>> myapp.add_action(action)

Non ci sono properties per Gio.ActionMap.

Segnali

Non ci sono segnali per Gio.ActionMap.

Metodi

I principali metodi sono:

add_action(action)

Aggiunge una action all’ActionMap. Se l’ActionMap contiene già una action con lo stesso nome,
la vecchia action viene rimossa dell’ActionMap stesso.
Parametri:
action: l’oggetto Gio.Action da aggiungere al Gio.ActionMap;

add_action_entries(entries, user_data)

Questo è un metodo che permette di aggiungere ad un Gio.ActionMap, una lista di
Gio.ActionEntry.
Parametri:
entries: la lista di Gio.ActionEntry da agiungere all’ActionMap;
user_data: i dati per le connessioni ai segnali;

lookup_action(action_name)

Ritorna la action con il nome passato come argomento, o None se non ci sono corrispondenze.

>>> myapp.lookup_action("Bancaldo")
>>> action = Gio.SimpleAction.new(name='Bancaldo', parameter_type=None)
>>> myapp.add_action(action)
>>> myapp.lookup_action("Bancaldo")
<Gio.SimpleAction object at 0x000000000365bfc0 (GSimpleAction at 0x0000000004b049c0)>

Parametri:
action_name: il nome della action;

remove_action(action_name)

Rimuove la action con il nome passato come argomento, dall’ActionMap.
Parametri:
action_name: il nome della action che vogliamo rimuovere;

– I metodi ereditati da Gio.ActionGroup sono:

action_added(action_name)

Emette il segnale “action-added” di Gio.ActionGroup.
Parametri:
action_name: il nome della action nel gruppo;

action_enabled_changed(action_name, enabled)

Emette il segnale “action-enabled-changed” di Gio.ActionGroup.
Parametri:
action_name: il nome della action nel gruppo;
enabled: il boolean che abilita/disabilita la action;

action_removed(action_name)

Emette il segnale “action-removed” di Gio.ActionGroup.
Parametri:
action_name: il nome della action nel gruppo;

action_state_changed(action_name, state)

Emette il segnale “action-state-changed” di Gio.ActionGroup.
Parametri:
action_name: il nome della action nel gruppo;
state: il nuovo stato GLib.Variant della action;

activate_action(action_name, parameter)

Attiva la action all’interno del gruppo. Se la action si aspetta un parametro, viene passato
il tipo corretto di parametro richiesto, altrimenti None.
Vedere Gio.ActionGroup.get_action_parameter_type().
Parametri:
action_name: il nome della action nel gruppo;
parameter: i parametri GLib.Variant all’attivazione (o None);

change_action_state(action_name, value)

Cambia lo stato della action con il valore passato come argomento.
La action deve essere stateful e il valore deve essere del tipo corretto.
Vedere Gio.ActionGroup.get_action_state_type().
Parametri:
action_name: il nome della action nel gruppo;
value: il nuovo stato GLib.Variant

get_action_enabled(action_name)

Controlla se la action all’interno del gruppo, è abilitata.
Una action per essere attivata o per poter cambiare il proprio stato, deve essere abilitata.
Parametri:
action_name: il nome della action nel gruppo;

get_action_parameter_type(action_name)

Ritorna il tipo di parametro che deve essere fornito quando si attiva la action.
Quando si attiva una action usando il metodo Gio.ActionGroup.activate_action(), il GLib.Variant
passato a questo metodo deve essere lo stesso tipo ritornato dal metodo in oggetto, se invece
questo metodo ritorna None, allora None dovrà essere passato a Gio.ActionGroup.activate_action().
Parametri:
action_name: il nome della action nel gruppo;

get_action_state(action_name)

Ritorna lo stato corrente della action con il nome passato come argomento.
Se la action non è stateful allora verrà ritornato None.
Se la action è stateful allora verrà ritornato il tipo di valore che corrisponderà al tipo
ritornato dal metodo Gio.ActionGroup.get_action_state_type().
Parametri:
action_name: il nome della action nel gruppo;

get_action_state_hint(action_name)

Ritorna un hint (suggerimento) sul range valido di valori per lo stato della action.
Se la action non è stateful o non è stato settato alcun hint, allora verrà ritornato None.
Se viene ritornata una lista di GLib.Variant, allora ogni elemento della lista sarà un possibile
valore dello stato della action.
Se viene ritornata una coppia di GLib.Variant (tupla) allora la tupla specificherà i valori
minimo e massimo dello stato.
Parametri:
action_name: il nome della action nel gruppo;

get_action_state_type(action_name)

Ritorna il tipo di stato della action.
Se la action è stateful, il metodo ritorna il GLib.VariantType dello stato della action e tutte le
chiamate al metodo Gio.ActionGroup.change_action_state() devono avere un GLib.Variant di
questo tipo e Gio.ActionGroup.get_action_state() ritornerà ovviamento lo stesso tipo di
GLib.Variant. Se la action non è stateful verrà ritornato None.
Parametri:
action_name: il nome della action nel gruppo;

has_action(action_name)

Controlla se la action esiste all’interno dell’ActionGroup.
Parametri:
action_name: il nome della action nel gruppo;

list_actions()

Lista le actions presenti nell’ActionGroup.

query_action(action_name)

Ritorna una ResultTuple con tutti i parametri della action con nome passato come argomento.
Questo metodo acquisisce tutte le informazioni disponibili da Gio.ActionGroup.has_action(),
Gio.ActionGroup.get_action_enabled(), Gio.ActionGroup.get_action_parameter_type(),
Gio.ActionGroup.get_action_state_type(), Gio.ActionGroup.get_action_state_hint() e
Gio.ActionGroup.get_action_state() con una singola chiamata.
Se la action esiste, viene ritornato True e tutti i valori diversi da None.
Se la action non esiste, viene ritornato False.

>>> myapp.query_action("Bancaldo")
(True, enabled=True, parameter_type=None, state_type=None, state_hint=None, state=None)

Parametri:
action_name: il nome della action nel gruppo;

link di riferimento:

torna all’indice degli appunti
Gtk3 Gio.ActionMap
Gtk3 Gio.ActionGroup

Categorie:Gtk3, PyGObject, python Tag: , ,
I commenti sono chiusi.