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 :

Récupérer le texte d'un MenuItem


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut Récupérer le texte d'un MenuItem
    Bonjour,

    Dans mon application, j'ai un sous-menu dans lequel il y a 3 MenuItem.
    Chaque clic sur un Item a le même but : appeler une fonction qui va ouvrir une nouvelle fenêtre et effectuer des opérations de dessins sur le drawing area correspondant à l'item cliqué.

    Dans les 3 cas , la fonction est la même excepté le drawing area dans lequel on va dessiner. C'est pourquoi j'aimerai trouver un moyen de savoir sur quel Item l'utilisateur a cliqué et le transmettre à ma fonction (afin d'éviter de recopier 3 fois le même code...).

    J'ai lu la documentation et je n'ai pas trouvé de fonction comme " ...get_text... " pour un MenuItem.

    N'y aurait-il donc pas une autre solution ?

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Il y a une solution dans cet exemple:

    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
    #define gtk_menu_item_label_set_label(menu_item, label) (gtk_label_set_label(GTK_LABEL(GTK_BIN(menu_item)->child), label))
     
     GtkWidget *menu_item;
     GtkWidget *barre_menu;
     GtkWidget *menu_serveur;
     
     barre_menu=gtk_menu_bar_new();
     
     menu_item=gtk_menu_item_new_with_label ("Serveur");
     gtk_menu_shell_append (GTK_MENU_SHELL(barre_menu), menu_item);
     menu_serveur=gtk_menu_new ();
     gtk_menu_item_set_submenu (GTK_MENU_ITEM(menu_item), menu_serveur);
     menu_item=gtk_image_menu_item_new_with_label ("Connecter");
     gtk_menu_shell_append (GTK_MENU_SHELL(menu_serveur), menu_item);
     
     /*Nous venons de créer avec ces quelques lignes un menu avec comme seule entrée principale **"serveur"** et */
     /*à l'intérieur l'entrée **"Connecter"**. Vous additionnez à cette entrée de menu une fonction CALLBACK qui va */
     /* effectuer la connexion demandée. Une fois fait, il vous suffit d'ajouter la ligne suivante à la fonction CALLBACK:*/
     
     gtk_menu_item_label_set_label(menu_item, "Deconnecter");
    Cette manip. permet de changer le texte d'une entrée d'un menu. Pour être plus précis tu accèdes au texte en faisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GTK_LABEL(GTK_BIN(menu_item)->child
    Attention tout de même. Cette méthode ne te garantira pas la longévité de ton code dans les futures versions de GTK+. Elle à tout de même le mérite d'exister

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut
    Merci beaucoup !!

    Ainsi, je n'ai plus que 100 lignes de code au lieu de 300

    PS: si j'ai bien compris, on peut généraliser ta méthode et retrouver n'importe quel Widget de l'application grâce à sa hiérarchie dans " l'arbre GTK+ " ?

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Pour le P.S. je n'en suis pas sûr . Ca doit être vrai pour les widgets dérivant des GtkBin. Sujet à fouiller donc...

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Pour le P.S. je n'en suis pas sûr . Ca doit être vrai pour les widgets dérivant des GtkBin. Sujet à fouiller donc...
    Oui c'est le seul champs de la classe GtkBin, à noter qu'il est en lecture seul !

    Il est tous de même préférable d'utiliser la fonction gtk_bin_get_child

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut
    Merci à vous ça marche j'ai utilisé le code suivant et il fonctionne nickel :

    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
     
    gint zoom(GtkWidget* pMenuItem,gpointer data)
    {
     
    //Recupere le label du menu cliqué
      GtkWidget *pItem;
      pItem = gtk_bin_get_child(GTK_BIN(pMenuItem));
     
      gchar *pText;
    //ligne 167
      pText = gtk_label_get_text(GTK_LABEL(pItem));
    //fin
     
    return 0;
    }
    J'ai juste un petit souci quand je compiles, un warning que je ne comprend pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fonctions.c: In function "zoom":
    fonctions.c:168: warning: assignment discards qualifiers from pointer target type
    Si jamais vous pouviez m'éclairer sur ce warning afin d'obtenir un programme propre à 100%

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

Discussions similaires

  1. [Excel] Récupérer le texte dans un shape de type zonedetext
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2005, 11h00
  2. Récupérer du texte d'un fichier xml entre deux balises
    Par manutudescends dans le forum Format d'échange (XML, JSON...)
    Réponses: 24
    Dernier message: 30/11/2005, 18h29
  3. récupérer le texte d'un tooltip grace à son hwnd
    Par ChrisitianS_ dans le forum MFC
    Réponses: 2
    Dernier message: 19/11/2005, 15h23
  4. Récupérer le texte d'un champ de texte
    Par theberliner dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/12/2004, 10h08
  5. [methode] récupérer du texte
    Par thesly dans le forum Débuter
    Réponses: 6
    Dernier message: 23/04/2004, 15h14

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