Boutton radio et boite de dialogue
Bonjour,
Je viens de commencer le Gtk+.
J'ai une fenetre qui propose 4 boutton radio: Nom, Jour, Mois, Année avec un bouton valider. Le boutton est lié à un callback qui ouvre une boite de dialogue pour demander par exemple le nom, ou alors les dates.
J'ai deux problème:
D'abord, je veux savoir quel bouton radio est choisi. J'ai fait le toggle button get active et il trouve bien le sLabel qui correspond, mais quand je teste if(strcmp(sLabel,"Nom")==1), je ne rentre pas dans la boucle. J'ai même essayé de mettre un puts("a") juste pour voir si je rentre dedans et j'ai une erreur de segmentation juste quand je la rajoute.
Mon autre problème: une fois que j'ai trouvé les dates (j'ai testé sans le if et ca fonctionne), je souhaite afficher sur la fenetre de base les résultats. Quand j'affiche seulement ce qui a été tapé, ca fonctionne, mais quand j'essaie de concaténér avec une autre chaine, j'ai une erreur de segmentation. Je ne comprends pas pourquoi.
Je vous mets les bouts de code correspondants:
Code:
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| void cb_valider(GtkWidget *pBtn, gpointer data)
{
GtkWidget *pInfo;
GtkWidget *pWindow;
GSList *pList;
const gchar *sLabel;
GtkWidget* pEntry;
GtkWidget* pEntry1;
GtkWidget* pEntry2;
const gchar* sNom;
const gchar* date1;
const gchar* date2;
GtkWidget *lab;
GtkWidget *labb;
mwind *wind;
wind=g_malloc(sizeof(mwind));
wind=(mwind*) data;
/* Recuperation de la liste des boutons */
pList = gtk_radio_button_get_group(GTK_RADIO_BUTTON(wind->pRadio));
while(pList) /* Parcours de la liste */
{
/* Le bouton est il selectionne */
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pList->data)))
{
sLabel = gtk_button_get_label(GTK_BUTTON(pList->data));
/* On sort de la boucle */
pList = NULL;
}
else
{ pList = g_slist_next(pList);}
}
//printf("%s",strcmp(sLabel,"Nom"));
//if(strcmp(sLabel,"Nom")==1){
pInfo = gtk_dialog_new_with_buttons("Saisie du nom",
GTK_WINDOW(wind->pWind),
GTK_DIALOG_MODAL,
GTK_STOCK_OK,GTK_RESPONSE_OK,
GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,
NULL);
lab=gtk_label_new( "M/Mme:");
gtk_label_set_justify(lab,GTK_JUSTIFY_LEFT);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pInfo)->vbox),lab, TRUE, FALSE, 0);
pEntry = gtk_entry_new();
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pInfo)->vbox), pEntry, TRUE, FALSE, 0);
gtk_widget_show_all(GTK_DIALOG(pInfo)->vbox);
switch (gtk_dialog_run(GTK_DIALOG(pInfo)))
{
case GTK_RESPONSE_OK:
sNom = gtk_entry_get_text(GTK_ENTRY(pEntry));
gtk_label_set_text(GTK_LABEL(wind->pLabel1),sNom);
break;
case GTK_RESPONSE_CANCEL:
case GTK_RESPONSE_NONE:
default:
gtk_label_set_text(GTK_LABEL(wind->pLabel1), "Vous n'avez rien saisi !");
break;
}
gtk_widget_destroy(pInfo);
// }
} |
Merci !