#include <gtk++/gtkcombos.hpp> #include <gtk++/gtkdialogs.hpp> #include <gtk++/gtklabels.hpp> #include <gtk++/gtktables.hpp> #include <gtk++/gtkbuttons.hpp> #include <gtk++/gtkentries.hpp> bool CallBackOk (GtkButton* Bouton, lgtkpp::gtk_combo **Combo) { lgtkpp::gtk_entry Entry0 = ENTRY((*Combo[0])->entry); std::cout << "Fruit : " << Entry0.GetText()<<std::endl; lgtkpp::gtk_entry Entry1 = ENTRY((*Combo[1])->entry); std::cout << "Couleur : " << Entry1.GetText()<<std::endl; return true; } int main (int argc, char * argv []) { ::gtk_init (&argc, &argv); // Tableau combo qui contiendra des pointeurs sur les deux combos. lgtkpp::gtk_combo ** Combos = new lgtkpp::p_combo [2]; Combos[0] = Combos[1] = NULL; // La fenetre de dialogue lgtkpp::gtk_dialog Dialogue; Dialogue.SetTitle("Test GtkCombo"); Dialogue.SignalConnect ("delete_event",GtkSignalFunc(gtk_main_quit), gpointer(Combos)); Dialogue.SignalConnect ("destroy",GtkSignalFunc(gtk_main_quit), gpointer(Combos)); // Corps de la boite de dialogue, une table lgtkpp::gtk_table Table (2,2,false); Dialogue.GetVBox () += Table; // Le label fruit : lgtkpp::gtk_label LabelFruit ("Fruit : "); Table.Attach(LabelFruit,0,1,0,1); // Le combo box pour les fruits lgtkpp::gtk_combo Combo0; Combos[0] = &Combo0; Table.Attach(Combo0,1,2,0,1); // La liste des fruits lgtkpp::char_lst Liste0; Liste0.Append(strdup("Banane")); Liste0.Append(strdup("Pomme")); Liste0.Append(strdup("Poire")); Combo0.SetPopdownStrings (Liste0); // Le label couleur : lgtkpp::gtk_label LabelCouleur (strdup("Fruit : ")); Table.Attach(LabelCouleur,0,1,1,2); // Le combo box pour les fruits lgtkpp::gtk_combo Combo1; Combos[1] = &Combo1; Table.Attach(Combo1,1,2,1,2); // La liste des fruits lgtkpp::char_lst Liste1; Liste1.Append(strdup("Bleu")); Liste1.Append(strdup("Vert")); Liste1.Append(strdup("Rouge")); Combo1.SetPopdownStrings (Liste1); // Activation des fleches Combo1.SetUseArrowsAlways (true); // Les boutons de la boite de dialogue // Le bouton OK lgtkpp::gtk_button BoutonOk ("OK"); BoutonOk.SignalConnect ("clicked", GtkSignalFunc(CallBackOk), Combos); BoutonOk.SignalConnectObject("clicked", GtkSignalFunc(gtk_widget_destroy), Dialogue); BoutonOk.SetFlags (GTK_CAN_DEFAULT); Dialogue.GetActionArea().PackStart(BoutonOk,true,true,0); BoutonOk.GrabDefault(); // Le bouton Annuler lgtkpp::gtk_button BoutonAnnuler ("Annuler"); BoutonOk.SignalConnectObject("clicked", GtkSignalFunc(gtk_widget_destroy), Dialogue); BoutonOk.SetFlags (GTK_CAN_DEFAULT); Dialogue.GetActionArea().PackStart(BoutonAnnuler,true,true,0); // Affichage de la boite et boucle principale Dialogue.ShowAll(); ::gtk_main(); return EXIT_SUCCESS; }