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+ Discussion :

gtk_ui_manager_get_widget : on l'utilise comment ?


Sujet :

GTK+

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut gtk_ui_manager_get_widget : on l'utilise comment ?
    Bonjour

    J'aimerai avoir des renseignements sur le second champ de gtk_ui_manager_get_widget . Il est sensé indiqué quoi ? Que je trouve où ?
    En effet, je ne récupère rien !

    Ça sert à quoi exactement ? Il n'y a pas trop de changement si je ne le mets pas !

    ( voir : http://library.gnome.org/devel/gtk/u...ger-get-widget )
    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
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Regarde dans la même page: Example 66. A UI definition

    Regarde le XML du fichier. Hé bien pour récupérer un pointeur vers le boutton "Centre" de la barre d'outils, il suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GtkWidget *button = gtk_ui_manager_get_widget (uimanager, "/toolbar/JustifyToolItems/Centre");
    Le paramètre "path" correspond au chemin de l'élément dans le XML. C'est écrit dans la documentation de la fonction...
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <ui>
      <menubar>
        <placeholder>
        <menu action="FichierMenuAction">
          <menuitem action="Tirer" />
          <menuitem action="Quitter" />
          <menu action="vdd">
              <menuitem action="dd" />
              <menuitem action="add1" />
              <menuitem action="add2" />
            </menu>
        </menu>
      </menubar>
    </ui>
    Je cherchais un chemin dans l'arborescence des fichiers... J'étais donc à côté de la plaque ! Là, mon aller à l'item <menuitem action="Tirer" />, je dois mettre "/menubar/FichierMenuAction/Tirer" ?
    Ça ne donne rien ?

    Par contre, je voudrais savoir pourquoi si je mets cette ligne la barre est en haut de la fenêtre. Sinon, elle est en bas !
    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
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Elements which don't have a name or action attribute in the XML (e.g. <popup>) can be addressed by their XML element name
    Donc tu utilises toujours la valeur de l'attribut name ou action, et s'il n'y en a pas, le nom de la balise.

    Dans ton cas j'aurais intuitivement utilisé la même chose que toi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/menubar/FichierMenuAction/Tirer"
    Mais si cela ne donne rien, essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "menubar/FichierMenuAction/Tirer"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/ui/menubar/FichierMenuAction/Tirer"
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    En fait, toutes les versions marchent si je ne me trompe pas dans ce que je copie...

    Mais, ma version Linux ose sortir un pointeur quand je fais une erreur dans le chemin : ce n'est pas le cas sous windows !

    Maintenant, l'autre point sur cette fonction. Dans la partie de droite de l'image j'ai la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    menubar = gtk_ui_manager_get_widget (menu_Manager,"/menubar/FichierMenuAction/Tirer");
    et dans l'aute, elle est commentée. Voici la différence d'affichage :


    Cette différence peut venir d'où ?
    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...

  6. #6
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Citation Envoyé par troumad Voir le message
    Cette différence peut venir d'où ?
    Aucune idée, tu ne nous donnes pas de code...
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Je veux bien donner du code ! Mais je ne sais quel code donner... C'est le main du fichier main.c .
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     /* Initialize GTK+ */
      g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
      gtk_init (&argc, &argv); /* initialisation GTK */
      g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
     
     
     
      /* creation des icones */
    [... je ne pense pas que ce soit urile ici ..]
     
     
      /* Create the main window */
      win = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* déclaration d'une fenêtre complète */
      param[0]=(void *)win;
      gtk_container_set_border_width (GTK_CONTAINER (win), 8);
      gtk_window_set_title (GTK_WINDOW (win), "Tirage de personnages");
      gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
      gtk_widget_realize (win);
      g_signal_connect (win, "destroy", gtk_main_quit, NULL);
      /* icone */
      if (!gtk_window_set_icon_from_file(GTK_WINDOW (win),"add.png",&error))
      {                                                                  /* met une icone à la fenêtre                                   */
       traite_erreur(error);
       g_error_free(error);
      }
     
      /* Create a vertical box with buttons */
      vbox = gtk_vbox_new (TRUE, 6);
      gtk_container_add (GTK_CONTAINER (win), vbox);
     
     
     
      /* initialisation du menu */
      p_actionGroup = gtk_action_group_new( "menuActionGroup" );
      /* toutes les entrées sauf boutons radio et cases à cocher */
      gtk_action_group_add_actions( p_actionGroup, entrees_menu, G_N_ELEMENTS( entrees_menu ), param );
      /* boutons radio */
      gtk_action_group_add_radio_actions (p_actionGroup, v_radio_entries, G_N_ELEMENTS (v_radio_entries), 2, (GCallback)version, (gpointer) param);
      gtk_action_group_add_radio_actions (p_actionGroup, radio_entries, G_N_ELEMENTS (radio_entries), 1, NULL, NULL);
    [... d'autres groupes de boutons radios ...]
      /* cases à cocher */
      gtk_action_group_add_toggle_actions (p_actionGroup, toggle_entries, G_N_ELEMENTS (toggle_entries), param);
      /* déclaration de l'item menu */
      menu_Manager = gtk_ui_manager_new ();
      /******************************************************/
      /*  manipulation pour activer les raccourcis clavier  */
      pAccel = gtk_ui_manager_get_accel_group (menu_Manager);  /* Création de l'AccelGroup à partir du GtkActionEntry          */
      gtk_window_add_accel_group (GTK_WINDOW (win), pAccel);   /* Activation des raccourcis clavier à partir de l'AccelGroup   */
      /******************************************************/
      gtk_ui_manager_add_ui_from_file(menu_Manager,"main.menu.xml",NULL); /* création des items du menu à partir du fichier xml */
      gtk_ui_manager_insert_action_group( menu_Manager, p_actionGroup, 0 ); /* lien entre le menu est actions définies précédement */
      gtk_ui_manager_set_add_tearoffs     (menu_Manager,TRUE); /* possibilité de décrocher les sous-menu */
      g_signal_connect(menu_Manager,"add_widget",G_CALLBACK( menu_addWidget ),GTK_CONTAINER(vbox)); /* génère le menu */
      menubar = gtk_ui_manager_get_widget (menu_Manager,"/menubar/Tirage/Classes"); /* pour placer le menu devant ?? */
      param[2]=(void *)menubar;
      param[3]=(void *)p_actionGroup;
     
     
      /* les trois boutons */
      button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);
      g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (explication), (gpointer) param);
      gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);
     
    [... deux autres boutons comme le premier ..]
     
      /* inactivation de certaines entrées du menu */
    [... sans importance ici ...]
      /* Enter the main loop */
      free(ici);
      gtk_widget_show_all (win);
      gtk_main ();
    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
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Il manque l'essentiel... Le code où tu ajoutes tous tes composants graphiques à ta vbox avec des appels à gtk_box_pack_*
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    La voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void menu_addWidget (GtkUIManager * p_uiManager, GtkWidget * p_widget, GtkContainer * p_box)
    {
       gtk_box_pack_start (GTK_BOX (p_box), p_widget, FALSE, FALSE, 0);
       gtk_widget_show (p_widget);
     
       (void)p_uiManager;
    }
    S'il manque quelque chose, ce que je sais vient de là : http://nicolasj.developpez.com/gtk/gtkuimanager/#LII-A
    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...

  10. #10
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Ok, le tutoriel a l'air à côté de la plaque, mais en même temps en 2010 il y a assez peu de doc, alors en 2005 quand il a été écrit...

    Le signal GtkUIManager::add_widget est appelé quand un widget vient d'être ajouté au UI Manager, et que tu souhaites faire quelque chose en réponse à cela. Ce n'est absolument pas l'endroit où insérer les composants dans la vbox. Le signal add_widget et sa callback sont inutiles.

    Je ne suis pas un pro du UIManager, mais a priori tu es censé faire:
    1. récupérer dans le UI manager le widget correspondant au menu
    2. l'ajouter dans la vbox
    3. récupérer dans le UI manager le widget correspondant à la toolbar
    4. l'ajouter dans la vbox
    5. créer ton bouton
    6. l'ajouter dans ta vbox
    7. etc.


    C'est d'ailleurs confirmé par ce tutoriel du wiki GNOME:
    http://live.gnome.org/GnomeLove/UIManagerTutorial
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Tout revoir... Encore du boulot !

    Finalement c'est simple...

    [troll]Une traduction par google de la page gtk est pas mal pour l'assurance chômage Désolè, je suis nul en anglais, mais, il faut la tester cette traduction [/troll]
    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...

  12. #12
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Je ne parlerais pas de "tout revoir"... C'est 2 lignes de code par élément, soit 10 lignes dans ton cas !
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut


    edit : comme ça, on peut mettre le menu au milieu de la page
    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. Quel constructeur utiliser? Comment?
    Par tallent_e dans le forum Débuter
    Réponses: 8
    Dernier message: 10/02/2013, 21h31
  2. Réponses: 10
    Dernier message: 16/04/2007, 17h45
  3. [CKEditor] Utilisation : comment récupérer le contenu de ma saisie ?
    Par MasterChief78 dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 13/04/2007, 17h53
  4. Comment utiliser 'COMMENT' dans SQL*PLUS
    Par soumia1988 dans le forum Oracle
    Réponses: 5
    Dernier message: 20/03/2007, 13h27
  5. wxtextctrl : utilisation : comment faire?
    Par vivh349 dans le forum wxWidgets
    Réponses: 2
    Dernier message: 05/08/2006, 22h57

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