Alors, en français c'est peut être mieux...
Je souhaite utiliser mon AccelMap pour retrouver une action à partir d'une chaine représentant une accelkey.
Par exemple, j'ai la chaine <Control>P qui est une accelkey pour une action qui appelle la méthode myPrint().
Je voudrais, dans une méthode myKeyPress(string) recevoir en paramètre l'accekey "<Control>P", retrouver la GtkAction correspondante, et l'activer (dans mon exemple, ça appelera myPrint).
Mon problème, c'est que je n'ai trouvé aucune méthode pour retrouver une GtkAction à partir d'une accelkey, ni dans GtkAccelGroup, ni dans GtkActionGroup.
Ma solution c'est
1) Utiliser la méthode gtk_accel_group_foreach, qui va parcourir toute les actions, et comparer l'accelkey pour retrouver l'accel_path correspondant.
2) Ensuite, je boucle sur tous les ActionGroup, et là deux solutions:
a) Je coupe l'accel_path avec get_basename, ce qui me retourne le nom de l'action ( c'est fait à l'arrache sans méthode Gtk, est-ce que c'est toujours bon, pas sûr )
b) Je boucle sur toutes les actions (ça me fait 2 boucle c'est moche), et j'appelle get_accel_path method sur chaque action pour le comparer avec celui de l'étape 1).
Y-a-t-il une autre solution ? Boucler sur les actionGroup je trouve ça moche
Et couper l'accel_path, çe fait un peu trop bidouillou...
Merci![]()
Partager