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 :

gtk_ui_manager et ajout dymanique de 'entrée dans un menu


Sujet :

GTK+ avec C & C++

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut gtk_ui_manager et ajout dymanique de 'entrée dans un menu
    Bonjour

    J'ai fait un menu avec gtk_ui_manager. Ça marche sans problème !
    Maintenant, j'aimerai passer à l'étape supérieure : rendre dynamique les entrées. C'est à dire pouvoir modifier en cours de programme le nombre d'entrée d'un sous menu, le sous menu list par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <ui>
      <menubar>
        <menu action="FichierMenuAction">
          <menuitem action="Tirer" />
          <menu action="hist" />
    [...]
    Je peux repérer ce sous menu avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_ui_manager_get_widget (menu_Manager,"/menubar/FichierMenuAction/hist")
    Je vois que pour rajouter une entrée, il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(pere),nv_entree);
    Mon problème est de passer de gtk_ui_manager_get_widget (menu_Manager,"/menubar/FichierMenuAction/hist") à GTK_MENU_ITEM(pere) !

    En effet, si je mets directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pere=gtk_ui_manager_get_widget (menu_Manager,"/menubar/FichierMenuAction/hist")
    j'ai la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (perso:30520): Gtk-CRITICAL **: gtk_menu_item_set_submenu: assertion `submenu == NULL || GTK_IS_MENU (submenu)' failed
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Salut

    Ça fait un bail que j'ai pas touché à Gtk, donc mes infos peuvent être rouillées, mais ça serait pas un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pere = gtk_widget_get_parent (
                        gtk_ui_manager_get_widget(
                                  menu_Manager,
                                  "/menubar/FichierMenuAction/hist"));

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    J'essaie demain...

    J'étais parti sur cette voie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            gtk_ui_manager_add_ui               ( menu_Manager, //GtkUIManager *self,
                                                             GTK_UI_MANAGER_MENUBAR, //guint merge_id,
                                                             "/menubar/FichierMenuAction/hist/vide", //const gchar *path,
                                                             "affichage sur menu", //const gchar *name,
                                                             NULL, //const gchar *action,
                                                             GTK_UI_MANAGER_MENUITEM, //GtkUIManagerItemType type,
                                                             1);
    Plus de plantage, mais pas d'affichage
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    J'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (perso:10618): GLib-GObject-WARNING **: invalid cast from `GtkMenu' to `GtkMenuItem'
     
    (perso:10618): Gtk-CRITICAL **: gtk_menu_item_set_submenu: assertion `GTK_IS_MENU_ITEM (menu_item)' failed
    sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(pere),nv_entree);
    nb : je n'ai pas le temps de regarder maintenant...
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  5. #5
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    Salut,

    Ça serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_menu_item_set_submenu(GTK_MENU(pere), nv_entree);
    par hasard ?

  6. #6
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    C'était mon premier essai...
    Mais, le prochain essai est prévu après le 20/8 !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Citation Envoyé par monnomamoi Voir le message
    Salut,

    Ça serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_menu_item_set_submenu(GTK_MENU(pere), nv_entree);
    par hasard ?
    Il faut plutôt un GTK_MENU_ITEM, voir : http://developer.gnome.org/gtk/stabl...em-set-submenu

    J'avance... Je n'avais pas la philosophie de système en tête !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    void cree_entree_menu(char * nom_,char * titre,GtkUIManager *  menu_Manager)
    {
     
     GtkWidget * pere = gtk_ui_manager_get_widget(
                                  menu_Manager,
                                  "/menubar/FichierMenuAction/hist");
     
      if (pere!=NULL)
      {
            GtkWidget *pMenu=gtk_menu_item_get_submenu(GTK_MENU_ITEM(pere));
     
            GtkWidget * nv_entree = gtk_menu_item_new_with_mnemonic (nom_);
            gtk_menu_item_set_label(GTK_MENU_ITEM(nv_entree),titre);
     
            gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), nv_entree);
      }
    }
    Le problème, c'est qu'il reste le "vide" du début !

    Voici l'image avec le "vide" que j'aimerai supprimer dedans :

    Comment ne plus l'avoir ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  8. #8
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter une entrée dans le menu contextuel de la barre de titre sous Windows
    Par Tyler_Durden dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 20/10/2008, 09h50
  2. Réponses: 3
    Dernier message: 06/12/2007, 20h14
  3. Comment ajouter une entrée dans le menu contextuel
    Par Ex0w@tt dans le forum Windows XP
    Réponses: 6
    Dernier message: 11/11/2007, 16h46
  4. Ajouter une entrée dans le menu contextuel de windows
    Par ero-sennin dans le forum Delphi
    Réponses: 9
    Dernier message: 06/12/2006, 16h02
  5. Ajout d'une entrée dans un menu contextuel
    Par olive_le_malin dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 08/06/2006, 08h37

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