Bonjour,
j'ai une application GTK, avec une fenetre principale, crée comme ceci donc :
Et tout ce qu'il faut ensuite pour l'affichage. Ca marche jusqu'au moment ou je crée une boite de dialogue. Ma boite de dialogue est vraiment plus qu'un simple "voulez faire ca ? oui ou non", et nottament elle crée d'autres boites de dialogues. Et c'est à ce niveau que j'ai un problème lors de l'execution de mon programme, avec un jolie warning :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
J'ai cherché dans mon code source et je pense que ca doit venir d'ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 (31701): Gtk-WARNING **: Attempting to add a widget with type GtkDialog to a GtkWindow, but as a GtkBin subclass a GtkWindow can only contain one widget at a time; it already contains a widget of type GtkVBox (31701): Gtk-CRITICAL **: gtk_box_pack_start: assertion `child->parent == NULL' failed (31701): Gtk-CRITICAL **: gtk_box_pack_start: assertion `child->parent == NULL' failed
En effet je lie toutes mes boites de dialogues à la fenetre principale, ce qui est apparemment pas possible (une boite par fenetre principale ?), d'ou mon interrogation, comment résoudre ce problème, en créant de nouvelles fenetres ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 gtk_container_add(GTK_CONTAINER(win), boitedialogue1); ... gtk_container_add(GTK_CONTAINER(win), boitedialogue2);
Et comme vous avez pu le voir, j'ai 3 warning à l'execution, cela vient également du code ci dessous :
Ce code crée des boutons, leur donne une action quand on clique dessus (gtk_dialog_add_action_widget) (1 pour le bouton buttonok ...) et ensuite insére ces boutons dans l'action_area de la boite de dialogue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 gtk_dialog_add_action_widget (GTK_DIALOG(pabout),buttonok,1); gtk_dialog_add_action_widget (GTK_DIALOG(pabout),buttonno,0); ... gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pabout)->action_area), buttonok, TRUE, TRUE, 1); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pabout)->action_area), buttonno, TRUE, TRUE, 0);
La aussi c'est meme genre de problème, le widget (un bouton en l'occurrence) buttonok ne peut etre ajouté que dans un seul containeur ou quelque chose comme ca. Or meme si je suis d'accord avec le warning, (ajouter un widget qu'a un seul containeur), je suis bien obligé de faire ce que j'ai fait ci dessus, ca m'a l'air d'etre le minimum pour que ma boite de dialogue marche (lui ajouter des boutons et leur donner une action) !
J'arrive pas à m'en sortir !
Merci de votre aide.
Partager