Description
GtkBinding fournit un mécanisme pour configurer les
raccourcis clavier de GTK+à l'aide de fichiers RC. La haute
configurabilité des raccourcis, ne demande aucune
application et aucun changement avec une trousse à outils.
Ceci facilite les ajustement des raccourcis clavier pour les
développeurs d'application aussi bien pour les utilisateurs et
fournisseurs de GTK+ que les administrateurs.
Installer un raccourci clavier
Un fichier ressource de raccourci consiste en une définition
de 'raccourci' et des états associés pour appliquer le
raccourci a des types spécifiques de widgets. Les détails
sur le mécanisme de l'association sont d'écrit
dans noms de chemins et modèles.
Dans la définition du raccourci les combinaisons de touches sont
liées aux émissions de signaux spécifiques sur un
widget cible. Les combinaisons de touches sont des chaînes
composées d'une nom opionel GdkModifierType et de noms de touches comme ceux qui sont définis dans
<gdk/gdkkeysyms.h>
ou retournés par gdk_keyval_name()
, ils sont analysés par gtk_accelerator_parse()
. Les caractèristiques des émissions de signaux consistent en
une chaîne qui identitfie le nom du signal, et en une liste
d'arguments spécifiques au signal entre parenthèses.
For example for binding Control and the left or right cursor keys of a GtkEntry widget to the
GtkEntry::move-cursor
signal,ainsi le mouvement se produit en 3 étapes, le raccourci suivant peut être utilisé :
Détachement d'un raccourci clavier existant
Gtk+ définit déjà un nombre de raccourcis
utiles pour les widgets qu'il propose.
Parce que les raccourcis créés définis dans les
fichiers RC ont la priorité sur les raccourcis par défaut
inclus avec GTK+, les raccourcis existant sont remplacés comme
cela est démontré dans Installer un raccourci clavier
et fonctionnent comme prévu. Le même mécanisme ne
peut pas être utilisé pour "détache" des raccourcis
existants :
L'exemple ci-dessus n'a pas l'effet désiré parce que
les touches "<Control>Right" et "<Control>Left" pressent
pour être ignorées par Gtk+.
A la place, cela provoque juste la suppression de toute attache
existante dans la configuration des raccourcis "MoveCursor3",
ainsi quand
"<Control>Right" ou "<Control>Left" sont pressées,
aucune attache n'est trouvée pour ces touches dans la
configuration du raccourci "MoveCursor3".Gtk+
continue alors à rechercher les raccourcis clavier
associés et eventuellement cherche et trouve les
raccourcis par défaut de Gtk+ pour les entrées qui
s'appliquent (au mouvement du mot)??. Pour empêcher Gtk+
d'activer ses raccourcis par défaut, le mot-clé "unbind"
peut être utilisé ainis:
Maintenant, Gtk+ trouvera une association quand il
recherchera la pression des touches
"<Control>Right"et "<Control>Left" avant qu'il n'ait
recourt à ses raccourcis par défaut, et
l'association lui demande d'arrêter ("unbind") la recherche, de
tel sort que les pressions de touches ne sont pas prises en compte par
le widget Comme d'habitude, d'autres traitement de pression de
touche, par exemple un widget d'entrées parent, est maintenant
possible.
Details
GtkBindingSet
typedef struct { gchar *set_name; gint priority; GSList *widget_path_pspecs; GSList *widget_class_pspecs; GSList *class_branch_pspecs; GtkBindingEntry *entries; GtkBindingEntry *current; guint parsed : 1; /* From RC content */ } GtkBindingSet;
|
Une configuration de raccourci maintient une liste de raccourcis
clavier. Une seule configuration de raccouri peut associer des types
multiples de widgets. Similaires aux styles, les widgets peuvent
être répertoriés par des chemins de nom de widget,
des chemins de classe de widget ou des types de classe de widget. Quand
un raccourci dans une configuration est associé à partir
d'une activation, un signal d'action est émis sur le widget
cible pour transmettre l'activation.
gchar *set_name ; |
nom de configuration de raccourci unique
|
gint priority ; |
pas utilisé
|
GSList *widget_path_pspecs ; |
widgets associé par le chemin que cette configuration de raccourcis applique (?)
|
GSList *widget_class_pspecs ; |
widgets associé par le chemin de classe que cette configutration de raccourcis applique. (?) |
GSList *class_branch_pspecs ; |
widgets associé par la classe que cette configuration de raccourcis applique.(?)
|
GtkBindingEntry *entries ; |
entrées de raccourcis clavier dans la configuration de raccourciS
|
GtkBindingEntry *current ; |
détail d'exécution
|
guint parsed : 1; |
si cette configuration de raccourcis provient d'un fichier RC et est reconfigurée pour un changement de thème.
|
GtkBindingEntry
typedef struct { /* key portion */ guint keyval; GdkModifierType modifiers; GtkBindingSet *binding_set; guint destroyed : 1; guint in_emission : 1; guint marks_unbound : 1; GtkBindingEntry *set_next; GtkBindingEntry *hash_next; GtkBindingSignal *signals; } GtkBindingEntry;
|
Chaque élément raccourci clavier d'une liste de
configurations de raccourcis est réprésenté
par un GtkBindingEntry.
guint keyval ; |
valeur de touche associée
|
GdkModifierType modifiers ; |
touche modicficatrice associée
|
GtkBindingSet *binding_set ; |
configuration de raccourci auquel cette entrée appartient
|
guint destroyed : 1; |
détail d'exécution |
guint in_emission : 1; |
détail d'exécution
|
guint marks_unbound : 1; |
|
GtkBindingEntry *set_next ; |
liste d'entrée liée maintenue par la configuration de raccourcis
|
GtkBindingEntry *hash_next ; |
détail d'exécution
|
GtkBindingSignal *signals ; |
signaux d'action de cette entrée
|
GtkBindingSignal
typedef struct { GtkBindingSignal *next; gchar *signal_name; guint n_args; GtkBindingArg *args; } GtkBindingSignal;
|
Un
GtkBindingSignal
stocke les information nécessaires pour activer un widget en
réponse à lapression d'une touche via une emission de
signal.
GtkBindingSignal *next ; |
détail d'exécution
|
gchar *signal_name ; |
signal d'action à émettre
|
guint n_args ; |
nombre d'arguments sépcifiés pour le signal
|
GtkBindingArg *args ; |
arguments spécifiés pour le signal.
|
GtkBindingArg
typedef struct { GType arg_type; union { glong long_data; gdouble double_data; gchar *string_data; } d; } GtkBindingArg;
|
Un GtkBindingArg
contient les données associées avec un argument pour
l'émission de signal de raccourci clavier comme ceux
stockés dans GtkBindingSignal.
GType arg_type ; |
détail d'exécution |
gtk_binding_entry_add
#define gtk_binding_entry_add gtk_binding_entry_clear
|
Attention
gtk_binding_entry_add
est dépréciée et ne doit plus être utilisé pour un code nouvellement écrit.
Déprécié.
gtk_binding_entry_add_signall
()
Attention
gtk_binding_entry_add_signall
est dépréciée et ne doit plus être utilisé pour un code nouvellement écrit.
Déprécié.
binding_set : |
configuration de raccourcis à laquelle ajouter un signal
|
keyval : |
Valeur de touche
|
modifiers : |
modifieur de touche
|
signal_name : |
nom du signal à lié
|
binding_args : |
liste des arguments de signal GtkBindingArg signal
arguments
|
gtk_binding_entry_clear
()
Attention
gtk_binding_entry_clear
est dépréciée et ne doit plus être utilisé pour un code nouvellement écrit.
L'utilisation de cette fonction est dépréciée.
binding_set : |
|
keyval : |
|
modifiers : |
|
gtk_binding_parse_binding
()
Attention
gtk_binding_parse_binding
est dépréciée et ne doit plus être utilisé pour un code nouvellement écrit.
Dépréciée pour l'API public, utilisé uniquement en interne.
scanner : |
scanner GtkRC
|
Retourne : |
mot clé prévu pour des erreurs, G_TOKEN_NONE
on success.
|
gtk_binding_set_new
()
Gtk+ maintient une listeglobale de configurations de raccourcis.
Chaque configuration de raccourcis a un nom unique qui doit être
spécifié pendant la création.
set_name : |
nom unique de la configuration de raccourcis
|
Retourne : |
nouvelle configuration de raccourcis
|
gtk_binding_set_by_class
()
Cette fonction retourne la configuration de raccourcis nommée
après le nom du type passé dans la structure de classe.
Les nouvelles configuration de raccourcis sont créées
à la demande par cette fonction.
object_class : |
une classe valide GtkObject
|
Retourne : |
la configuration de raccourcis correspondant à object_class
|
gtk_binding_set_find
()
Trouve une configuration de raccourcis par son nom global unique. le set_name
peut soit être un nom utilisé pour gtk_binding_set_new()
ou un nom de type de classe utilisé dans gtk_binding_set_by_class()
.
set_name : |
nom unique de configuration de raccourcis.
|
Retourne : |
NULL ou la configuration de raccourcis spécifiée.
|
gtk_bindings_activate
()
Trouve une touche de raccourcis associant keyval
et modifiers
et qui active le raccouris sur object
.
object : |
object à activer quand le raccourci est trouvé
|
keyval : |
valeur de la clé du raccourci
|
modifiers : |
valeur du modificateur du raccourci
|
Retourne : |
TRUE si le raccourcis a été trouvé et activé.
|
gtk_bindings_activate_event
()
Recherche la touche de raccourci pour object
pour trouver un
event
associé, et si la fonction en trouve une, elle l'active.
object : |
un GtkObject (généralement doit être un widget)
|
event : |
un GdkEventKey
|
Retourne : |
TRUE si une touche de raccourci associée a été trouvée.
|
gtk_binding_set_activate
()
Trouveun raccourci clavier associé à
keyval
et
modifiers
à l'intérieur de
binding_set
et active le raccourci sur
object
.
binding_set : |
binding_set
to activate
|
keyval : |
key value of the binding
|
modifiers : |
key modifier of the binding
|
object : |
object to activate when binding found
|
Returns : |
TRUE if a binding was
found and activated
|
gtk_binding_entry_add_signal
()
void gtk_binding_entry_add_signal (GtkBindingSet *binding_set,
guint keyval,
GdkModifierType modifiers,
const gchar *signal_name,
guint n_args,
...);
Override or install a new key binding for keyval
with modifiers
on
binding_set
.
When the binding is activated, signal_name
will be
emitted on the target widget, with n_args
Varargs
used as
arguments.
binding_set : |
binding_set pour y installer une entrée
|
keyval : |
valeur de trouche du raccourci à installer
|
modifiers : |
modifieur du raccourci à installer
|
signal_name : |
signal à exécuter pour une activation
|
n_args : |
nombre d'arguments pour signal_name
@: arguments pour signal_name
|
... : |
|
gtk_binding_entry_skip
()
binding_set : |
binding_set
pour enlever ou sauter ?( skip) une entrée
|
keyval : |
valeur de touche de raccourci à (skip)
|
modifiers : |
valeur du modifieur du raccourci à (skip)
|
Depuis 2.12
Installe un raccourci sur @binding_set ce qui fait que la touche
cherche à être abandonnée, pour empêcher les
configurations de raccourcis de faible priorité d'être
activés.
gtk_binding_entry_remove
()
Supprime un raccourcis installé préalablement via
gtk_binding_entry_add_signal()
sur binding_set
.
binding_set : |
binding_set duquel une entrée sera supprimée.
|
keyval : |
valeur de touche pour le raccourci à supprimer
|
modifiers : |
modifieur du raccourci à supprimer
|
gtk_binding_set_add_path
()
La fonction est utilisée de façon interne par GtkRC en
analysant le mécanisme pour assigner des modèles
associés à des structures GtkBindingSet .
binding_set : |
configuration de raccourci à laquelle ajouter un chemin
|
path_type : |
type de chemin que le modèle applique
|
path_pattern : |
le modèle actuel associé
|
priority : |
priorité du raccourci
|