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 :

Modifier le contenu d'une page de notebook ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut Modifier le contenu d'une page de notebook ?
    Salut à tous
    alors je vous explique j'ai un petit soucis
    En fait je manipule un notebook basique, à 9 onglets, bon je peut ajouter et retirer des pages sans probleme, mais quand je veux modifier le contenu je seche

    En effet, aprés avoir capturé mon widget child, que fais je ???
    Parce que dans les tutos, il s'agit en general d'un label à changer.

    Or moi sur chaque page, j'ai une vbox de hboxes de labels
    Donc la question est simple : Comment, mais diable ? comment acceder à mes labels ???

    Merci de me répondre si vous avez la moindre idée je pensais vraiment pas avoir ce probleme (idiot ) à l'avant veille (ou à la veille selon les points de vue hein) de la date délai ...

    Ciao

    P.S. voici le code au cas ou j'aurais pas été trés explicite comme à l'accoutumée

    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
     
    /* Création du Notebook */
        app -> notebook = gtk_notebook_new();
        gtk_box_pack_start(GTK_BOX(app -> vbox), app -> notebook, TRUE, TRUE, 0);
        /* Position des onglets : en haut */
        gtk_notebook_set_tab_pos(GTK_NOTEBOOK(app -> notebook), GTK_POS_TOP);
     
        for(i = 1 ; i < nb_adversaires + 2 ; ++i)
        {
            sTabLabel = g_strdup_printf("\t PLAYER %d \t", i);
     
            /* Creation des labels des onglets */
            pTabLabel = gtk_label_new(sTabLabel);
     
            /* Création du complexe de boxs */
            hbox = gtk_hbox_new (FALSE, 0);
            ss_titre[0] = gtk_label_new("Combination");
            ss_titre[1] = gtk_label_new("Flop");
            ss_titre[2] = gtk_label_new("Turn");
            ss_titre[3] = gtk_label_new("River");
            for(j = 0 ; j < 4 ; j ++){
                vbox[j] = gtk_vbox_new (FALSE, 0);
                gtk_box_pack_start (GTK_BOX (hbox), vbox[j], TRUE, TRUE, 0);
                if(j != 3){
                     vsep[j] = gtk_vseparator_new();
                     gtk_box_pack_start (GTK_BOX (hbox), vsep[j], FALSE, FALSE, 0);
                }
                gtk_box_pack_start (GTK_BOX (vbox[j]), ss_titre[j], TRUE, TRUE, 0);
                hsep[j] = gtk_hseparator_new();
                gtk_box_pack_start (GTK_BOX (vbox[j]), hsep[j], TRUE, TRUE, 0);
            }
            for(j = 1 ; j < 4 ; j ++)
                for(k = 0 ; k < 9 ; k ++){
                    sLabel = g_strdup_printf("Probas [%d][%d][%d]", i, j, k);
                    label[j][k] = gtk_label_new(sLabel);
                    gtk_box_pack_start (GTK_BOX (vbox[j]), label[j][k], TRUE, TRUE, 0);
                }
            label[0][0] = gtk_label_new("Pair");
            label[0][1] = gtk_label_new("Double pair");
            label[0][2] = gtk_label_new("3 of a kind");
            label[0][3] = gtk_label_new("Straight");
            label[0][4] = gtk_label_new("Flush");
            label[0][5] = gtk_label_new("Full house");
            label[0][6] = gtk_label_new("Quad");
            label[0][7] = gtk_label_new("Straight Flush");
            label[0][8] = gtk_label_new("Royal Flush");
            for(k = 0 ; k < 9 ; k ++)gtk_box_pack_start (GTK_BOX (vbox[0]), label[0][k], TRUE, TRUE, 0);
     
            /* Insertion de la page */
            gtk_notebook_append_page(GTK_NOTEBOOK(app -> notebook), hbox, pTabLabel);
     
            g_free(sLabel);
            g_free(sTabLabel);
        }
    et donc pour la récup je fais un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pChild  = gtk_notebook_get_nth_page (GTK_NOTEBOOK(app -> notebook), 0);
    mais aprés ?
    Ca fonctionne surement comme une liste chainée ?
    Vraiment si quelqu'un pouvait m'éclairer ca serait adorable
    Parce que là je cours droit à la catastrophe

  2. #2
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Bon j'ai soigneusement relu le tuto et j'ai finalement compris que l'on devait considerer le notebook comme un GtkContainer.

    J'en ai déduis qu'il me fallait autant de labels que je necessitait pour pouvoir les modifier à ma guise.

    Donc j'ai maintenant un tableau de 9*4*9 labels, ce qui fait un peu beaucoup, d'autant plus que le remplissage fonctionne avec seulement 9*4 ...

    Enfin bon aprés refléxion c'est tout à fait logique.

    Excusez moi donc pour cette intervention nocturne

    En tout cas ca fonctionne et je me met donc en auto résolu

    Bonne nuit à tous, et malgrès tout si quelqun à une solution plus propre, je suis preneur
    (du coup je met pas résolu vous l'aurez compris )

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Salut, j'ai le même problème... je dois récupérer mes widgets contenus dans une HBox et je ne sais pas comment faire
    Pourrais tu mettre ta solution ? Merci

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bon ! J'ai finalement réussi... Je vais donc donner ma solution pour ceux qui aurait le même problème

    Exemple d'insertion d'une HBox dans le nom de l'onglet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pHBoxOnglet = gtk_hbox_new(FALSE, 0);
    gtk_widget_show (pHBoxOnglet); // ne pas oublier car sinon vous ne verrez rien !
    gtk_notebook_set_tab_label (GTK_NOTEBOOK (pNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (pNotebook), position), pHBoxOnglet);
    Il faut savoir comment on a créé sa HBox pour pouvoir récupèrer le widget souhaité (pour ma part c'est un label + un bouton (close)) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /* Recuperation du widget enfant */
    pChild = gtk_notebook_get_nth_page(GTK_NOTEBOOK(data), iPageNum);
     
    /* Recuperation du label */
    sLabel = gtk_label_get_text(GTK_LABEL(pChild));
    /* Recuperation du label de l'onglet */
    pHBoxOnglet = (GtkBox*)gtk_notebook_get_tab_label(GTK_NOTEBOOK(data), pChild);
    element = g_list_first(pHBoxOnglet->children);
    boxChild = (GtkBoxChild*)element->data;
     
    sTabLabel = gtk_label_get_text(GTK_LABEL(boxChild->widget));
    En espérant que cela aide !

    ps : si vous avez mieux à proposer, car je trouve que c'est un peu chaud comme code vu que je remonte assez haut dans l'héritage pour récupèrer quelque chose de simple...

  5. #5
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Ouais bon ca m'a l'air bien laborieux à maitriser tout ca

    En tout cas il semblerait que ma theorie sur la liste chainée ne soit pas infondée ?

    J'ai pas exactement compris la mais bon

    Quant à ma solution, bah comme je l'ai dit, j'ai crée un tableau de widgets pour chaque composante de mes notebooks pour pouvoir y acceder en tant voulu.

    C'est plus simple mais bon c'est pas trés propre et ca prend plus de memoire quoi.

    Bonne continuation, Skip.

Discussions similaires

  1. Modifier le contenu d'une page web : modifier un fichier XML
    Par Linnya dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 06/02/2013, 08h33
  2. Peut on modifier le contenu d'une page web statique?
    Par Velojif dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 07/01/2013, 00h30
  3. Réponses: 5
    Dernier message: 19/03/2008, 03h44
  4. [JSP][WEB] recuperer le contenu d'une page web
    Par ypikahe dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 14/03/2008, 10h10
  5. [EXCEL]Modifier les marges d'une page dans Excel
    Par ms91fr dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/01/2004, 15h26

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