Partage
  • Partager sur Facebook
  • Partager sur Twitter

[GTK+] Mettre à jour des widgets d'une fenetre parent

Sujet résolu
    9 mars 2008 à 0:30:38

    Salut

    Je cherche à mettre à jour des éléments situés dans un dialogue, n'ayant que le handle du bouton qui déclenche l'apel à la fonction, se trouvant lui meme sur mon dialogue.

    en gros, il me faudrais pouvoir récuperer de handle d'éléments se trouvant au meme endroit qu'un autre, dont j'ai déjà le handle.

    pourriez vous m'aider ?

    merci beaucoup, ++ Tix.
    • Partager sur Facebook
    • Partager sur Twitter
      9 mars 2008 à 0:38:13

      Si mes souvenir sont bons, le widget parent s'obtient par widget->parent.

      <edit> c'est un tiret pour la fleche, pas un égal, bien sur.
      • Partager sur Facebook
      • Partager sur Twitter
        9 mars 2008 à 0:39:11

        Citation : moimeme

        merci, je me renseigne là dessu :)

        @+



        ca n'a pas l'aire de marcher... pourrais tu m'indique rla facon dont ca doit etre utilisé ?

        merci, ++ Tix.
        • Partager sur Facebook
        • Partager sur Twitter
          9 mars 2008 à 3:23:19

          Dans le titre tu parles de mettre à jour des widget de la fenêtre parente, puis tu commences par dire "Je cherche à mettre à jour des éléments situés dans un dialogue", et enfin le bouton qui lance la boite de dialogue serait lui même sur cette boite ? Je ne comprend pas grand chose ^^

          Je ne connais pas encore bien GTK+, ce qu'il est possible de faire pour ce genre de manip' c'est de jouer sur les paramètre des callback, pourquoi pas regrouper les widget dans une structure, on peut aussi récupérer la liste des widget enfants de tout ce qui descend d'un conteneur..

          edit : suppression de l'exemple.
          • Partager sur Facebook
          • Partager sur Twitter
            9 mars 2008 à 11:04:59

            En fait, ce qui se passe exactement :

            J'i un dialogue, dans lequel j'ai des cases à cocher. Au survol de ces cases à cocher, j'appel une fonction, qui devrais me mettre à jour une zone de texte dans le dialogue. hors, ma fonction est appelée avec le andle du bouton, et non celui de la fenetre !!

            je vais essayer de passer un gpointer perso, ptetre que ca marchera ... o_O

            merci, ++ Tix.
            • Partager sur Facebook
            • Partager sur Twitter
              9 mars 2008 à 12:42:28

              Citation :

              J'ai un dialogue, dans lequel j'ai des cases à cocher. Au survol de ces cases à cocher, j'appel une fonction, qui devrais me mettre à jour une zone de texte dans le dialogue. hors, ma fonction est appelée avec le andle du bouton, et non celui de la fenetre !!


              Tu parles toujours de la même fonction ?
              Si c'est le cas, je ne comprend pas comment tu te retrouves avec le handle du bouton, c'est quoi son rôle dans l'histoire ?
              En principe tu devrais récupérer dans la callback la case survolée puisque c'est elle qui émet le signal. Il te faut juste passer la zone de texte comme donnée à la callback et à priori tu as tous les éléments pour faire ce que tu veux ;)

              Pour illustrer : un dialogue composé de trois boutons et d'un label, on met le texte du bouton survolé dans le label.
              1. /* 2 - mise à jour */
              2. void description (GtkWidget *bouton, gpointer data)
              3. {
              4.     /* récupération du label passé comme donnée */
              5.     GtkWidget *lab = (GtkWidget*) data;
              6.     const gchar* text = gtk_button_get_label(GTK_BUTTON(bouton));
              7.     gtk_label_set_text(GTK_LABEL(lab),text);
              8. }
              9. /* 1 - Fonction qui lance la boite de dialogue */
              10. void dialogue(GtkWidget *widget,gpointer data)
              11. {
              12.     GtkWidget* boite;
              13.     GtkWidget *b1,*b2,*b3,*label;
              14.     boite = gtk_dialog_new();
              15.     label = gtk_label_new("");
              16.     b1 = gtk_button_new_with_label("Je suis");
              17.     g_signal_connect(G_OBJECT(b1),"enter",G_CALLBACK(description),label);
              18.     b2 = gtk_button_new_with_label("Un");
              19.     g_signal_connect(G_OBJECT(b2),"enter",G_CALLBACK(description),label);
              20.     b3 = gtk_button_new_with_label("Zero");
              21.     g_signal_connect(G_OBJECT(b3),"enter",G_CALLBACK(description),label);
              22.     /* ....
              23.             mise en place des élément dans la boite
              24.                                                    ... */
              25.     gtk_dialog_run(GTK_DIALOG(boite));
              26.     gtk_widget_destroy(boite);
              27. }
              • Partager sur Facebook
              • Partager sur Twitter
                9 mars 2008 à 15:20:59

                ca y est, probleme quasiment résolu avec une struct spéciale.

                freecircus
                1. g_signal_connect(G_OBJECT(CB_Progs[0]), "enter", G_CALLBACK( fonction ), (PointerData*)Checkbox);


                le handle passé à la callback par g_signal_connect est celui du boutton. he devais passer en parametre le numéro du bouton et le handle d'une zone de texte. avec
                1. (PointerData*)Checkbox


                dont la définition est :

                1. typedef struct PointerData {
                2.     GtkWidget *widget;
                3.     int *action;
                4. } PointerData;


                voilà

                merci pour votre aide :]

                ++ Tix.
                • Partager sur Facebook
                • Partager sur Twitter

                [GTK+] Mettre à jour des widgets d'une fenetre parent

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown