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
| #include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <math.h>
void afficher(GtkWidget* monBouton, gpointer entry);
int main(int argc,char **argv) {
GtkWidget* maFenetre = NULL;
GtkWidget* monBouton[16];
GtkWidget* maTable = NULL;
GtkWidget* monTexte = NULL;
int i = 0;
gtk_init(&argc,&argv);
maFenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(maFenetre), "Calculatrice");
gtk_window_set_default_size(GTK_WINDOW(maFenetre), 200, 200);
// Création de la table
maTable = gtk_table_new(5,4,TRUE);
gtk_container_add(GTK_CONTAINER(maFenetre), GTK_WIDGET(maTable));
// Creation du label
monTexte = gtk_entry_new();
gtk_entry_set_editable(GTK_ENTRY(monTexte), NULL);
// Création des boutons :
monBouton[0] = gtk_button_new_with_label("1");
monBouton[1] = gtk_button_new_with_label("2");
monBouton[2] = gtk_button_new_with_label("3");
monBouton[3] = gtk_button_new_with_label(" + ");
monBouton[4] = gtk_button_new_with_label("4");
monBouton[5] = gtk_button_new_with_label("5");
monBouton[6] = gtk_button_new_with_label("6");
monBouton[7] = gtk_button_new_with_label(" - ");
monBouton[8] = gtk_button_new_with_label("7");
monBouton[9] = gtk_button_new_with_label("8");
monBouton[10] = gtk_button_new_with_label("9");
monBouton[11] = gtk_button_new_with_label(" / ");
monBouton[12] = gtk_button_new_with_label(".");
monBouton[13] = gtk_button_new_with_label("0");
monBouton[14] = gtk_button_new_with_label(" = ");
monBouton[15] = gtk_button_new_with_label(" * ");
for (i = 0 ; i < 16 ; i++)
{
gtk_widget_set_size_request (GTK_WIDGET(monBouton[i]), 40, 30);
}
// Insertion des boutons et du label :
gtk_table_attach(GTK_TABLE(maTable), monTexte, 0, 4, 0, 1, GTK_EXPAND, GTK_EXPAND, 0,0);
gtk_table_attach(GTK_TABLE(maTable), monBouton[0], 0, 1, 1, 2, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[0]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[1], 1, 2, 1, 2, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[1]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[2], 2, 3, 1, 2, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[2]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[3], 3, 4, 1, 2, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[3]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[4], 0, 1, 2, 3, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[4]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[5], 1, 2, 2, 3, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[5]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[6], 2, 3, 2, 3, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[6]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[7], 3, 4, 2, 3, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[7]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[8], 0, 1, 3, 4, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[8]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[9], 1, 2, 3, 4, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[9]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[10], 2, 3, 3, 4, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[10]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[11], 3, 4, 3, 4, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[11]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[12], 0, 1, 4, 5, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[12]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[13], 1, 2, 4, 5, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[13]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[14], 2, 3, 4, 5, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[14]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
gtk_table_attach(GTK_TABLE(maTable), monBouton[15], 3, 4, 4, 5, GTK_EXPAND, GTK_EXPAND, 0,0);
g_signal_connect(G_OBJECT(monBouton[15]), "clicked", G_CALLBACK(afficher),(GtkWidget*)monTexte);
// Affichage de la fenetre et de tout ce qu'elle contient
gtk_widget_show_all(maFenetre);
g_signal_connect(G_OBJECT(maFenetre), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_main();
return EXIT_SUCCESS;
}
void afficher(GtkWidget* monBouton, gpointer entry) {
gchar stext[100];
sprintf(stext, "%s", gtk_entry_get_text(GTK_ENTRY(entry)));
strcat(stext, gtk_button_get_label(GTK_BUTTON(monBouton)));
gtk_entry_set_text(GTK_ENTRY(entry), stext);
} |
Partager