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 l'id d'un widget


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 Récupérer l'id d'un widget
    Bonjour

    Mon interface est surtout généré par glade où les objet ont des id. Voici un extrait d'un fichier glade avec l'id "effacer_1" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <object class="GtkButton" id="effacer_1">
      <signal name="clicked" handler="efface_mag" swapped="no"/>
    Comment faire pour récupérer cet id lors d'un appel de fonction callback (fonction efface_mag dans le cas précédent) ?

    Dans le cas de l'exemple précédent, je souhaite savoir quel est bouton "effacer" qui appelle. J'ai fait comme ça :
    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
    void efface_mag (GtkWidget * appel,FenetrePerso * _perso)
    {
        unsigned short niv=10,i;
        char _nom[32];
        GtkWidget * wid_util, * wid;
        for(i=1;i<=9;i++)
        {
            sprintf(_nom,"effacer_%hu",i);
            wid_util=GTK_WIDGET(gtk_builder_get_object(_perso->modif->builder,_nom));
            if (wid_util==appel)
            {
                niv=i-1;
                i=10;
            }
            else
            { /* pas le bon niveau */
            }
        }
     
        if (niv!=10)
    Mais, ça ne me plait pas. Je préférerais avoir une fonction qui trouve son idée.

    Édit : je regarde le programme proposé par Le gaulois ici pour les styles ( http://www.developpez.net/forums/d15...estion-styles/ ), j'ai l'impression qu'il évite le problème en rajoutant une donnée au widget avec "g_object_set_data" .
    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 chevronné Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2015
    Messages : 252
    Par défaut Y'a pas marqué Gens Bon


    Salut troumad,

    Il semble que GtkBuilder ne souhaite pas mettre a disposition l'arbre xml. Mais il retourne volontiers une list (gtk_builder_get_objects) de widgets. En plus le g_hash_table (qui associe le nom/id et les widget) est privé.

    Je ne sais pas si dans mon précedent poste j'ai contourne le problème ou s'y j'y ai répondu. Mais si tu souhaite retrouver un GtkWidget déjà construit un simple
    g_hash_table_lookup (gtk_builder->priv->objects, gtk_widget) suffit. Il faudra quand même définir la structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct _GtkBuilderPrivate
    {
      gchar *domain;
      GHashTable *objects;
      // ...
    } GtkBuilderPrivate;
    pour avoir accès au membre de gtk_builder->priv. Et ça c'est Trop mad

    @+

  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
    Oui... le GauloUis.
    J'ai oublié le U...

    Mais, une fois que j'ai cette liste, je ne vois pas à quoi ça peut me servir dans mon cas : j'ai un appel qui vient d'un bouton identifié avec son id (j'en ai 9 presque semblable), Dans les paramètres de la fonctions callback, je reçois un lien vers le bouton qui appelle : je souhaite juste savoir quel est ce bouton.
    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
    Membre chevronné Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2015
    Messages : 252
    Par défaut
    Ha oui, tu as raison!

    Je viens de vérifier le code de GtkBuilder:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      builder->priv->objects = g_hash_table_new_full (g_str_hash, g_str_equal,
                                                      g_free, g_object_unref);
    De ce que je vois, il me semble que c'est impossible (tout du moins).

    Peut être que c'est ta logique qui n'est pas bonne.

    Peux tu nous expliquer pourquoi tu souhaite utiliser le name/id ?

  5. #5
    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 neuf onglets semblables. je ne compte pas mettre 9 fonctions différentes, une par onglet. Il faut donc que je vois de quel onglet arrive l'appel pour qu'il soit traité correctement.
    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
    Membre chevronné Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2015
    Messages : 252
    Par défaut
    Je ne comprend pas, au début tu parle de boutons et maintenant d'onglets.

  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
    C'est un bouton dans un onglet.
    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
    Membre chevronné Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2015
    Messages : 252
    Par défaut
    Je donne ma langue au chat

  9. #9
    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
    Si tu veux voir le programme, tu as le code source ici : http://troumad.org/OOo/perso4_1.zip (il y a tout ce qu'il faut pour le compiler avec code blocks sous LInux) ou la version installable pour windows ici : perso4_setup.exe.
    C'est le bouton au niveau les 9 onglets dans la rubrique "Magicien" quand on modifie un personnage.
    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...

Discussions similaires

  1. récupérer le père d'un widget en lablgtk2
    Par amiroushka dans le forum Caml
    Réponses: 7
    Dernier message: 13/10/2009, 11h52
  2. Récupérer les propriétés d'un widget
    Par cayou66 dans le forum Débuter
    Réponses: 2
    Dernier message: 13/01/2009, 11h56
  3. Récupérer la position de tous les widgets
    Par slash64 dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 01/06/2008, 16h20
  4. Récupérer un widget à partir de son nom
    Par kenshi240683 dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 27/05/2008, 14h18
  5. Récupérer les fils d'un widget
    Par awalter1 dans le forum GTK+ avec Python
    Réponses: 3
    Dernier message: 12/10/2007, 10h13

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