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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
1 #include <stdlib.h>
2 #include <gtk/gtk.h>
3
4 struct _MainWindow
5 {
6 GtkWidget *fenetre_pr;
7 GtkWidget *box_pr;
8 GtkWidget *box_2;
9 GtkWidget *but_continuer;
10 GtkWidget *label_1;
11 GtkWidget *radio1;
12 GtkWidget *radio2;
13 GtkWidget *radio3;
14 GSList *group;
15 };
16 typedef struct _MainWindow MainWindow;
17
18 struct _Secondo
19 {
20 GtkWidget *fenetre_2;
21 GtkWidget *box_2;
22 GtkWidget *circuit;
23 GtkWidget *trafric;
24 };
25 typedef struct _Secondo Secondo;
26
27 //les prototypes de mes fonctions
28 void OnDestroy(GtkWidget *pWidget, gpointer pData);
29 void Afficher(GtkWidget *widget, gpointer data);
30 void Resultat(GtkWidget *widget, gpointer data);
31
32
33 int main(int argc, char **argv)
34 {
35 /* Initialisation de GTK+ */
36 gtk_init(&argc, &argv);
37
38 //initialisation
39 MainWindow *pApp; // pour les autres
40 pApp = g_malloc(sizeof(MainWindow));
41
42 //juste pour la fenetre
43 pApp->fenetre_pr= gtk_window_new(GTK_WINDOW_TOPLEVEL);
44 gtk_window_set_title (GTK_WINDOW(pApp->fenetre_pr), "Projet");
45 gtk_window_set_position(GTK_WINDOW(pApp->fenetre_pr), GTK_WIN_POS_CENTER);
46 gtk_window_set_default_size(GTK_WINDOW(pApp->fenetre_pr), 620, 400);
48
49 //pour le label
50 pApp->label_1=gtk_label_new("<b>Bienvenue</b>");
51 gtk_label_set_use_markup(GTK_LABEL(pApp->label_1), TRUE);
52 gtk_label_set_justify (GTK_LABEL(pApp->label_1), GTK_JUSTIFY_CENTER);
53
54 //pour le button
55 pApp->but_continuer = gtk_button_new_with_label("Continuer");
56
57 //creation des button radio
58 pApp->radio1 = gtk_radio_button_new_with_label(NULL, "calcul de proba de perte");
59 pApp->group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(pApp->radio1));
60 pApp->radio2 = gtk_radio_button_new_with_label(pApp->group, "calcul de je ne sais quoi");
61
62 // le box secondair (horizontal)
63 pApp->box_2 = gtk_hbox_new(TRUE, 0);
64
65 // le box principal
66 pApp-> box_pr = gtk_vbox_new(TRUE, 0);
67
68 //ajout du box principal dans la fenetre principal, ce box va contenir les autres widget
69 gtk_container_add(GTK_CONTAINER(pApp->fenetre_pr),pApp-> box_pr);
70
71 //ajout des button dans le box horizontal
72 gtk_box_pack_start(GTK_BOX(pApp->box_2), pApp->radio1, TRUE, FALSE, 0);
73 gtk_box_pack_start(GTK_BOX(pApp->box_2), pApp->radio2, TRUE, FALSE, 0);
74
75 //ajout des autres widget dans le box principal
76 gtk_box_pack_start(GTK_BOX(pApp->box_pr), pApp->label_1, TRUE, FALSE, 0);
77 gtk_box_pack_start(GTK_BOX(pApp->box_pr), pApp->box_2, TRUE, FALSE, 0);
78 gtk_box_pack_start(GTK_BOX(pApp->box_pr),pApp-> but_continuer, TRUE, FALSE, 0);
79
80 //appel des fonctions evenementielles
81 g_signal_connect(G_OBJECT(pApp->fenetre_pr), "destroy", G_CALLBACK(OnDestroy), NULL);
82
83 g_signal_connect(G_OBJECT(GTK_BUTTON(pApp->but_continuer)), "clicked", G_CALLBACK(Afficher),(gpointer*) pApp);
84
85 gtk_widget_show_all(pApp->fenetre_pr);
86 // Demarrage de la boucle evenementielle
87 gtk_main();
88
89 //liberation de la memoir allouee
90 g_free(pApp);
91
92 return EXIT_SUCCESS;
93 }
94
void OnDestroy(GtkWidget *pWidget, gpointer pData)
96 {
97 /* Arret de la boucle evenementielle */
98 gtk_main_quit();
99 }
100
101 void Afficher(GtkButton *widget, gpointer data)
102 {
103 MainWindow *pApp;
104 GtkWidget *box_horiz=NULL;
105 GtkWidget *box_horiz2=NULL;
106 GtkWidget *box_horiz3=NULL;
107 GtkWidget *but_resultat;
108 GtkWidget *label_circuit=NULL;
109 GtkWidget *label_trafric=NULL;
110 GtkWidget *label_bourage=NULL;
111 GtkWidget *label_bourage2=NULL;
112
113 pApp = (MainWindow*) data; // recupretion de data
114 const gchar *label_test;
115 Secondo *proba;
116
117 //allocation de la memoire
118 proba = g_malloc(sizeof(Secondo));
119
120 // Le bouton radio1 est il selectionne ?
121 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pApp->radio1)))
122 {
123
124 //oui donc on ouvre une nouvelle fenetre
125 //juste pour la fenetre secondaire
126 proba->fenetre_2= gtk_window_new(GTK_WINDOW_TOPLEVEL);
127 gtk_window_set_title (GTK_WINDOW(proba->fenetre_2), "calcul de probalite de perte d'apres Erlang");
128 gtk_window_set_position(GTK_WINDOW(proba->fenetre_2), GTK_WIN_POS_NONE);
129 gtk_window_set_default_size(GTK_WINDOW(proba->fenetre_2), 420, 300);
130
131 // creation des widget
132 proba->box_2=gtk_vbox_new(TRUE, 0);
133 box_horiz2=gtk_hbox_new(TRUE, 0);
134 box_horiz= gtk_hbox_new(TRUE, 0);
135 box_horiz3= gtk_hbox_new(TRUE, 0);
136 proba->circuit = gtk_entry_new();
137 proba->trafric= gtk_entry_new();
138 label_circuit= gtk_label_new("circuit :");
139 label_trafric= gtk_label_new("trafric :");
140 label_bourage=gtk_label_new(" ");
141 label_bourage2=gtk_label_new(" ");
142 but_resultat = gtk_button_new_with_label("Resultat");
143
144 // ajout du label circuit et la zone de saisie du nbre de circuit dans le box horizontal
145 gtk_box_pack_start(GTK_BOX(box_horiz), label_circuit, TRUE, FALSE, 0);
146 gtk_box_pack_start(GTK_BOX(box_horiz), proba->circuit, TRUE, FALSE, 0);
147
148 // ------------||-------------------||---------------nbre de trafric----||---horizontal2
149 gtk_box_pack_start(GTK_BOX(box_horiz2), label_trafric, TRUE, FALSE, 0);
150 gtk_box_pack_start(GTK_BOX(box_horiz2),proba->trafric, TRUE, FALSE, 0);
151
152 //ajout pour le box horizontal 3
153 gtk_box_pack_start(GTK_BOX(box_horiz3), label_bourage, TRUE, FALSE, 0);
154 gtk_box_pack_start(GTK_BOX(box_horiz3), label_bourage2, TRUE, FALSE, 0);
155 gtk_box_pack_start(GTK_BOX(box_horiz3), but_resultat, TRUE, FALSE, 0);
156
157 // ajout des box horizontal dans le box principale(vertical )
158 gtk_box_pack_start(GTK_BOX(proba->box_2), box_horiz, TRUE, FALSE, 0);
159 gtk_box_pack_start(GTK_BOX(proba->box_2), box_horiz2, TRUE, FALSE, 0);
160 gtk_box_pack_start(GTK_BOX(proba->box_2), box_horiz3, TRUE, FALSE, 0);
161
162 //ajout du box principal dans la fenetre principal, ce box a contenu les autres widget
163 gtk_container_add(GTK_CONTAINER(proba->fenetre_2),proba->box_2);
164 gtk_widget_show_all(proba->fenetre_2);
165
166 g_signal_connect(G_OBJECT(GTK_BUTTON(but_resultat)), "clicked", G_CALLBACK(Resultat),(gpointer*) proba);
167 }
168 else
169 {
170
171 }
172 g_free(proba);
173 }
174
175 void Resultat(GtkButton *widget, gpointer data)
176 {
177 Secondo * proba;
178 proba =(Secondo*) data; //recuperation de data
179
180 const gchar* data_temp_cir=NULL;
181 const gchar* data_temp_traf=NULL;
182 data_temp_cir=gtk_entry_get_text(GTK_ENTRY(proba->circuit));
183 data_temp_traf=gtk_entry_get_text(GTK_ENTRY(proba->trafric));
} |
Partager