Guest User

gtkccalc

a guest
Aug 10th, 2013
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.52 KB | None | 0 0
  1. #include<gtk/gtk.h>
  2. #include<ctype.h>
  3. #include<string.h>
  4. #define DOT 10
  5. #define ADD 11
  6. #define SUB 12
  7. #define MUL 13
  8. #define DIV 14
  9. #define EQL 15
  10. void handle(GtkWidget *source, gpointer data)
  11. {
  12.     char *x;
  13.     x =gtk_button_get_label(GTK_BUTTON(source));   
  14. //  g_printf("%s",x);
  15. //  gtk_widget_hide(source);
  16.     GtkEntry *entry = GTK_ENTRY(data);
  17.     char str[50];
  18.     if(isdigit(x) != 0)
  19.     {
  20.         strcpy(str,gtk_entry_get_text(entry));
  21.         strcat(str,x);
  22.         gtk_entry_set_text(entry,str);
  23.     }
  24. }
  25. int main(int argc,char **argv)
  26. {
  27.     gtk_init(&argc,&argv);
  28.     GtkWidget *window;
  29.     GtkWidget *resultbox;
  30.     GtkWidget *table;
  31.     GtkWidget *button[16];
  32.     window =gtk_window_new(GTK_WINDOW_TOPLEVEL);
  33.     gtk_window_set_default_geometry(GTK_WINDOW(window),350,200);
  34.     gtk_window_set_title(GTK_WINDOW(window), "Simple Calculator Application");
  35.  
  36.     table = gtk_table_new(4,4,TRUE);
  37.    
  38.     /*--------------------------------------------------------------*/
  39.     resultbox = gtk_entry_new();
  40.     gtk_table_attach_defaults(GTK_TABLE(table),resultbox,0,4,0,1);
  41.  
  42.     button[7] = gtk_button_new_with_label("7");
  43.     gtk_table_attach_defaults(GTK_TABLE(table),button[7],0,1,1,2);
  44.    
  45.     button[8] = gtk_button_new_with_label("8");
  46.     gtk_table_attach_defaults(GTK_TABLE(table),button[8],1,2,1,2);
  47.    
  48.     button[9] = gtk_button_new_with_label("9");
  49.     gtk_table_attach_defaults(GTK_TABLE(table),button[9],2,3,1,2);
  50.  
  51.     button[DIV] = gtk_button_new_with_label("/");
  52.     gtk_table_attach_defaults(GTK_TABLE(table),button[DIV],3,4,1,2);
  53.     /*-------------------------------------------------------------*/
  54.    
  55.     button[4] = gtk_button_new_with_label("4");
  56.     gtk_table_attach_defaults(GTK_TABLE(table),button[4],0,1,2,3);
  57.    
  58.     button[5] = gtk_button_new_with_label("5");
  59.     gtk_table_attach_defaults(GTK_TABLE(table),button[5],1,2,2,3);
  60.    
  61.     button[6] = gtk_button_new_with_label("6");
  62.     gtk_table_attach_defaults(GTK_TABLE(table),button[6],2,3,2,3);
  63.  
  64.     button[MUL] = gtk_button_new_with_label("X");
  65.     gtk_table_attach_defaults(GTK_TABLE(table),button[MUL],3,4,2,3);
  66.     /*-----------------------------------------------------------*/
  67.     button[1] = gtk_button_new_with_label("1");
  68.     gtk_table_attach_defaults(GTK_TABLE(table),button[1],0,1,3,4);
  69.    
  70.     button[2] = gtk_button_new_with_label("2");
  71.     gtk_table_attach_defaults(GTK_TABLE(table),button[2],1,2,3,4);
  72.    
  73.     button[3] = gtk_button_new_with_label("3");
  74.     gtk_table_attach_defaults(GTK_TABLE(table),button[3],2,3,3,4);
  75.  
  76.     button[SUB] = gtk_button_new_with_label("-");
  77.     gtk_table_attach_defaults(GTK_TABLE(table),button[SUB],3,4,3,4);
  78.     /*----------------------------------------------------------*/
  79.     button[0] = gtk_button_new_with_label("0");
  80.     gtk_table_attach_defaults(GTK_TABLE(table),button[0],0,1,4,5);
  81.    
  82.     button[DOT] = gtk_button_new_with_label(".");
  83.     gtk_table_attach_defaults(GTK_TABLE(table),button[DOT],1,2,4,5);
  84.    
  85.     button[EQL] = gtk_button_new_with_label("=");
  86.     gtk_table_attach_defaults(GTK_TABLE(table),button[EQL],2,3,4,5);
  87.  
  88.     button[ADD] = gtk_button_new_with_label("+");
  89.     gtk_table_attach_defaults(GTK_TABLE(table),button[ADD],3,4,4,5);
  90.    
  91.     gtk_container_add(GTK_CONTAINER(window),table);
  92.     /*-----------------------------------------------------------*/
  93.    
  94.     g_signal_connect(window,"delete-event",G_CALLBACK(gtk_main_quit),NULL);
  95.     int i;
  96.     for(i =0; i<16;i++)
  97.         g_signal_connect(button[i],"clicked",G_CALLBACK(handle),resultbox);
  98.     gtk_widget_show_all(window);
  99.  
  100.     gtk_main();
  101.     return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment