IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Limitation du nombre d'accel group sur une fenetre


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    Par défaut Limitation du nombre d'accel group sur une fenetre
    Bonjour à tous !

    Je travaille actuellement sur un projet constitué d'une unique fenetre dans laquelle je charge divers menus en fonctions des actions menées sur les menus précédents.
    J'ai créé pour chaque menu un accel group contenant les shortcuts de chaque bouton composant le menu.

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Groupe de raccourci pour le menu principal PM CONF
    GtkAccelGroup * accel_group_PM_CONF;
    accel_group_PM_CONF = gtk_accel_group_new ();
     
    paramMgr.getValue(...); // Récupère le raccourci à partir d'un dictionnaire
    gtk_widget_add_accelerator (GTK_WIDGET(instance->m_main_window.m_data.m_primary_menu.Configuration.GTK_File_button), "clicked", accel_group_PM_CONF, Key_sym(temp_str.c_str()), (GdkModifierType) 0, GTK_ACCEL_VISIBLE); //ajoute mon shortcut à l'accel group
     
    // Key_sym est une fonction permettant à partir de la chaine de caractère, récupérée du dictionnaire, indiquant le raccourci souhaité, d'etablir la correspondance avec le fichier gdkkeysyms.h
     
    PRV_Data::getInstance()->get_Ihm_Data()->add_map_accel_group_by_name(accel_group_PM_CONF, RSH_ACCEL_GROUP_PM_CONF); // ajoute l'accel group à une liste pour le récupérer facilement dans tout mon programme
     
    gtk_window_add_accel_group (GTK_WINDOW(instance->m_main_window.m_data.m_GTK_main_window), PRV_Data::getInstance()->get_Ihm_Data()->get_map_accel_group_by_name(RSH_ACCEL_GROUP_PM_CONF)); // attache mon accel group à ma fenetre

    Lors de l'affichage d'un menu je rattache à ma fenetre l'accel group correspondant. Il semblerait que GTK ne soit pas en mesure de gérer plus de deux accels groups en même temps.

    Je compte sur votre expérience et vos idées pour affirmer ou infirmer cette constatation.

    Merci par avance

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 296
    Points : 4 949
    Points
    4 949
    Billets dans le blog
    5
    Par défaut
    Difficile de répondre à ce problème. La doc officielle ne dit pas clairement s'il y a limitation dans le nombre d'AccelGroup.
    Maintenant elle dit que c'est attaché à la fenêtre principale, ce qui impliçitement voudrait dire un seul. Tout ceci est à prendre au conditionnel bien sûr.
    Je suppose que le problème pourrait venir de deux raccourcis identiques pour deux menus différents.

    Cette réponse n'en ai pas une. J'avoue que peut être le plus simple serait d'interdire deux fois un même raccourci, mais ça risque d'alourdir sérieusement le code.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Difficile de répondre à ce problème. La doc officielle ne dit pas clairement s'il y a limitation dans le nombre d'AccelGroup.
    Maintenant elle dit que c'est attaché à la fenêtre principale, ce qui impliçitement voudrait dire un seul. Tout ceci est à prendre au conditionnel bien sûr.
    Je suppose que le problème pourrait venir de deux raccourcis identiques pour deux menus différents.

    Cette réponse n'en ai pas une. J'avoue que peut être le plus simple serait d'interdire deux fois un même raccourci, mais ça risque d'alourdir sérieusement le code.
    En fait les raccourcis sont paramétrés à partir d'un dictionnaire (fichier txt). De plus, j'ai créé pourtous mes menus des accels groups différents que je connecte à ma fenetre ou dconnecte (gtk_window_add_accel_group et gtk_window_remove_accel_group). Cela me permet d'utiliser une touche identique pour un bouton sur deux menus différents qui ne sont pas connecté à ma fenêtre en même temps.
    Donc normalement toutes les sécurités sont mise pour éviter qu'à un moment donner j'ai deux raccourcis identiques pour deux menus différents.

    Ou alors même si les accels groups ne sont pas connectés à ma fenêtre il est pas possible d'indiquer deux fois le même raccourci ??

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 296
    Points : 4 949
    Points
    4 949
    Billets dans le blog
    5
    Par défaut
    La fonction gtk_window_add_accel_group(); appelle la fonction gtk_accel_groups_activate();.
    La fonction gtk_window_remove_accel_group() ne fait que désactiver l'AccelGroup.

    Donc je ne suis pas sûr que le pointeur soit réinitialisé. "remove" doit porter à confusion.

    J'avoue être arriver au max de mes possibilités ici . D'autres pourrons sûrement apporter plus que ce que j'ai pu faire jusqu'à présent.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    La fonction gtk_window_add_accel_group(); appelle la fonction gtk_accel_groups_activate();.
    La fonction gtk_window_remove_accel_group() ne fait que désactiver l'AccelGroup.

    Donc je ne suis pas sûr que le pointeur soit réinitialisé. "remove" doit porter à confusion.

    J'avoue être arriver au max de mes possibilités ici . D'autres pourrons sûrement apporter plus que ce que j'ai pu faire jusqu'à présent.
    Oui je savais pour gtk_window_remove_accel_group(). En fait je créé tous mes accels groups au début de mon prog et ensuite je les active ou désactive selon mon besoin. Compte tenu du fait, que les paramètres des raccourcis (modifiers et touche de raccourci) sont dans un fichier, cela ralentirait un peu l'application si je devais à chauqe fois que j'en ai besoin charger le fichier, et activer les raccourcis souhaités.

    Sinon après un plus grand appronfondissement ils semblent que mon problème soit uniquement liée à une erreur de syntaxe.

    Je vous tiens au courant.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par kenshi240683 Voir le message
    Oui je savais pour gtk_window_remove_accel_group(). En fait je créé tous mes accels groups au début de mon prog et ensuite je les active ou désactive selon mon besoin. Compte tenu du fait, que les paramètres des raccourcis (modifiers et touche de raccourci) sont dans un fichier, cela ralentirait un peu l'application si je devais à chauqe fois que j'en ai besoin charger le fichier, et activer les raccourcis souhaités.

    Sinon après un plus grand appronfondissement ils semblent que mon problème soit uniquement liée à une erreur de syntaxe.

    Je vous tiens au courant.
    Finalement je n'ai pas trouvé d'autre solution à mon problème que l'utilisation d'un seul et unique accel group par fenêtre. Cela est certes plus fastidieux mais plus facile et surtout plus stable que ma première tentative.

    Cordialement

Discussions similaires

  1. Nombre maximun de caractère sur une ligne
    Par griese dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 12/03/2007, 12h29
  2. [Nombre maximum de lignes sur une table.]
    Par tesla dans le forum Oracle
    Réponses: 4
    Dernier message: 20/02/2007, 13h40
  3. limiter le nombre d'usagers simultanés d'une application
    Par hottnikks_79 dans le forum Access
    Réponses: 4
    Dernier message: 18/02/2007, 16h35
  4. Compléter les trous d'une requête groupée sur une durée
    Par apoingsfermes dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/01/2007, 19h47
  5. [RaveReport] - Bloquer groupe sur une page
    Par muaddib dans le forum Rave
    Réponses: 3
    Dernier message: 25/02/2003, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo