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 73 74 75
| #include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <glib/gprintf.h>
void req_menu (GtkWidget * p_wid, gpointer *p_data)
{
GtkWidget *p_combo2 = NULL;
GtkComboBox *p_combo1 = p_wid;
GtkBox *p_vbox = p_data;
gchar *active_text = gtk_combo_box_get_active_text(p_combo1);
if(strcmp(active_text, "DAMA") == 0) {
p_combo2 = gtk_combo_box_new_text();
gtk_combo_box_append_text(p_combo2, "Determinist");
gtk_combo_box_append_text(p_combo2, "Contention");
gtk_combo_box_append_text(p_combo2, "Contention+Determinist");
gtk_box_pack_start(p_vbox, p_combo2, FALSE, FALSE, 0);
}
}
int main(int argc, char **argv)
{
/* Variables */
GtkWidget * p_win = NULL;
GtkWidget * p_vbox = NULL;
GtkWidget * p_button = NULL;
GtkWidget * p_combo = NULL;
/* Initialisation de GTK+ */
gtk_init(&argc, &argv);
/* Création de la fenêtre */
p_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(p_win), 300, 300);
/* Ajout du conteneur principal et des boutons*/
p_vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER (p_win), p_vbox);
p_combo = gtk_combo_box_new_text();
gtk_combo_box_append_text(p_combo, "Determinist");
gtk_combo_box_append_text(p_combo, "Contention");
gtk_combo_box_append_text(p_combo, "DAMA");
gtk_combo_box_append_text(p_combo, "DAMA+Contention");
gtk_box_pack_start(p_vbox, p_combo, FALSE, FALSE, 0);
gtk_widget_show_all(p_win);
g_signal_connect(G_OBJECT(p_combo), "changed", G_CALLBACK (req_menu), p_vbox);
g_signal_connect(G_OBJECT(p_win), "delete-event", G_CALLBACK( gtk_main_quit ), NULL);
gtk_widget_show_all(p_win);
/* Affichage et boucle événementielle */
gtk_main();
/* Fermeture de GTK+ */
gtk_exit(EXIT_SUCCESS);
return EXIT_SUCCESS;
} |
Partager