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 :

GtkUIManager : Menu vertical ?


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Par défaut GtkUIManager : Menu vertical ?
    Bonjour à tous. Je travail sous Fedora 18 avec la version 3.6.4 de GTK
    et j'essai tant bien que mal de créer un menu à l'aide de GTKUIManager
    via le tutoriel disponible sur le site ainsi que de la documentation officielle
    et du tutoriel disponible sur le site live.gnome.org mais rien n'y fait mon
    menu est extrémement moche et ne ressemble pas à un menu !

    De plus les icônes chargées via GTK_STOCK_**** n'apparaissent pas...
    Je ne vous mets pas le code source car c'est plus ou moins le même
    que celui du tutoriel disponible sur le site ici : http://nicolasj.developpez.com/gtk/gtkuimanager/


    Note : Même en faisant un copier-coller du code source du tutoriel j'ai un
    truc moche. (Menu aligné sur la verticale à gauche et sans icônes...).


    Est-ce qu'il faut utiliser d'autres fonctions pour mettre en forme l'aspect
    graphique ? Merci d'avance.

    Je vous mets un screenshot :

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Par défaut
    J'ai trouvé une partie de la solution :
    Il faut mettre gtk_box_new (TRUE, 0)

    TRUE = horizontal apparemment et 0 c'est l'espacement entre les "enfants" en pixels.

    Par contre les images n'apparaissent pas dans le menu mais seulement dans la barre d'outils c'est pas cool...

    Y'a t-il moyen d'ajouter des images *.png ou *.jpg à la place de GTK_STOCK
    toujours via GktUIManager ? Merci

  3. #3
    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
    Par défaut
    gtk_box_new, ça n'existe pas, c'est gtk_hbox_new ou gtk_vbox_new. C'est ce qui indique si tu crée un conteneur horizontal ou vertical. Ensuite, n'essaie pas de deviner à quoi servent les arguments ! Lis plutôt la documentation. Par exemple pour gtk_vbox_new:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GtkWidget * gtk_hbox_new (gboolean homogeneous, gint spacing);
    Creates a new GtkHBox.
    
    homogeneous :TRUE if all children are to be given equal space allotments.
    spacing : the number of pixels to place by default between children.
    Returns : a new GtkHBox.
    Donc le booléen contrôle la quantité d'espace à allouer aux widgets que tu mets dedans, c'est à dire si elle doit être partagée de manière identique entre chaque widget. Ce qui n'est pas le cas pour une barre de menu, tu dois donc utiliser la valeur FALSE.

    Ensuite, c'est gtk_box_pack_start que tu as vraissemblablement utilisé pour ajouter ton menu dans la box. Et c'est l'argument expand qu'il faut mettre à FALSE, pour indiquer que le menu ne doit prendre que l'espace nécessaire, et pas plus, même s'il y a plus d'espace disponible.

    Enfin, pour le problème d'images dans les menus, ça a été retiré il y a un moment déjà, mais c'est juste un comportement par défaut qui a changé. Tu peux le restaurer en lançant gnome-tweak-tool, dans la section "Theme', il faut activer "menus have icons". Cela peut se faire avec dconf-editor aussi, ou avec gsettings en ligne de commande avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gsettings set org.gnome.desktop.interface menus-have-icons true
    Pour ce qui est de l'exemple du tuto, son fonctionnement est tout à fait normal... Je ne vois pas ce que tu trouves de choquant dans le fait que le menu soit aligné à gauche... J'ai testé avec GTK 3.4.1 sous Linux.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Par défaut
    Merci tout d'abord pour vos réponses.

    Avoir un menu tout long, tout moche à gauche j'ai jamais vu ça dans aucune application.
    (cf screenshot), voilà pourquoi ça me choque et je me demandais si c'était les tutoriels
    disponibles sur le net qui préféraient avoir cet aspect là ou bien si c'était juste un problème venant de moi (mauvaise utilisation de fonction, configuration de gtk,...)

    Pour ce qui est de gtk_box_new cette fonction existe (je fais quand même des recherches sur internet pour éviter de poster de grosses bétises même si je n'affirme pas dans ce que j'ai dis que je détiens la vérité : "TRUE = horizontal APPAREMMENT").

    Voilà ce que j'ai vu de gtk_box_new :
    https://developer.gnome.org/gtk3/3.4/GtkBox.html

    et j'ai dit que TRUE = Horizontal APPAREMMENT car en changeant seulement cette valeur dans tout le code je suis passé de l'affichage moche vu sur le screen à un menu correcte avec une belle barre d'outil.

    Pour ce qui est de la fonction gtk_box_pack_start je viens de vérifier, elle est bien à FALSE pour son 3e argument.

    je regarderai pour les images demain (aujourd'hui plus tard).

    Merci à vous.
    Bonne nuit.

  5. #5
    Membre éclairé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 331
    Par défaut
    En fait, gtk_box_new() n'existait pas dans GTK+-2 , c'est une nouveauté de GTK-3, qui déprécie gtk_hbox_new() et gtk_vbox_new() (qui existent encore).
    J'en profite pour déplorer ici que la compatibilité entre GTK2 et GTK3 ne soit pas meilleure et qu'un certain nombre de fonctions (surtout avec GDK) aient disparues.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 38
    Par défaut
    Effectivement. Je viens de voir cela sur le guide officiel de GTK.
    C'est une nouveauté de GTK-3.

    Pour ce qui est des icônes que je voulais ajouter, j'ai essayé de mettre
    mes propres icônes en utilisant des codes sources trouvés à droite à gauche.
    J'ai réussi à utiliser mes propres icônes mais j'ai encore un souci.
    Une erreur du style : "gtk_box_start, un enfant n'est pas relié à un parent..."
    au lancement du programme. Je vais encore travailler un peu dessus.
    J'ai trouvé une solution sur google mais je ne comprends pas très bien ce que le mec veut dire.
    Je vais chercher encore un peu et si j'y arrive pas je poste mon code source demain.

    Merci.

  7. #7
    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
    Par défaut
    Citation Envoyé par pvincent Voir le message
    J'en profite pour déplorer ici que la compatibilité entre GTK2 et GTK3 ne soit pas meilleure et qu'un certain nombre de fonctions (surtout avec GDK) aient disparues.
    Bin en même temps c'est un peu le principe du changement de version majeure: la rupture de compatibilité. C'est justement pour ne pas avoir à conserver le même comportement pour de vieux trucs qu'ils ont changé de version. Et GDK était déjà grandement rendu obsolète par cairo, même du temps de GTK 2. On ne peut pas reprocher au toolkit d'évoluer, surtout que certains se plaignent justement de sa stagnation...

  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
    Par défaut
    Citation Envoyé par Twice22 Voir le message
    Avoir un menu tout long, tout moche à gauche j'ai jamais vu ça dans aucune application.
    Non, le screenshot n'est pas normal, mais l'exemple du tutoriel est correct et donne un résultat normal (différent du tien).

    Citation Envoyé par Twice22 Voir le message
    (cf screenshot), voilà pourquoi ça me choque et je me demandais si c'était les tutoriels
    disponibles sur le net qui préféraient avoir cet aspect là ou bien si c'était juste un problème venant de moi (mauvaise utilisation de fonction, configuration de gtk,...)
    Vraissemblablement, tu as la mauvaise orientation de conteneur (box horizontale au lieu de verticale).

    Citation Envoyé par Twice22 Voir le message
    Pour ce qui est de gtk_box_new cette fonction existe (je fais quand même des recherches sur internet pour éviter de poster de grosses bétises même si je n'affirme pas dans ce que j'ai dis que je détiens la vérité : "TRUE = horizontal APPAREMMENT").

    Voilà ce que j'ai vu de gtk_box_new :
    https://developer.gnome.org/gtk3/3.4/GtkBox.html
    Ah, exact, désolé, j'avais désactivé GTK 3 dans devhelp, j'avais oublié que ça a été introduit dans GTK 3.

    Citation Envoyé par Twice22 Voir le message
    et j'ai dit que TRUE = Horizontal APPAREMMENT car en changeant seulement cette valeur dans tout le code je suis passé de l'affichage moche vu sur le screen à un menu correcte avec une belle barre d'outil.
    Ce n'est pas un booléen mais un type énuméré qu'il faut passer, un GtkOrientation, donc soit GTK_ORIENTATION_HORIZONTAL, soit GTK_ORIENTATION_VERTICAL. Mais le tutoriel est en GTK 2, et si tu utilises cette fonction, c'est que tu as essayé de l'adapter pour GTK 3... Et c'est dans la manière dont tu l'adaptes qu'il y a l'erreur.

    Citation Envoyé par Twice22 Voir le message
    Pour ce qui est de la fonction gtk_box_pack_start je viens de vérifier, elle est bien à FALSE pour son 3e argument.

    je regarderai pour les images demain (aujourd'hui plus tard).
    Dans ce cas le mieux est de nous fournir ton code, ce sera plus simple, surtout si tu as modifié l'exemple de base en GTK 2...

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

Discussions similaires

  1. [C#] Comment faire un Menu vertical style 'outlook'?
    Par Eome dans le forum Windows Forms
    Réponses: 7
    Dernier message: 10/09/2008, 09h02
  2. menu vertical développable
    Par gregius dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/06/2006, 22h03
  3. Menu vertical fixe
    Par batmat86 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 10/01/2006, 02h54
  4. Menu vertical différent sous FF et IE
    Par Myogtha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 06/12/2005, 00h29

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