jsq.c
#include <gtk/gtk.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
//#define BUFSIZE 1024 //定义临时字符串长度
#define w_(builder,type,name) name=GTK_##type(gtk_builder_get_object(builder,#name))
double num1;
double num2;//分别代表两个数
int flag; //1表示加法,2表示减法,3表示乘法,4表示除法
int fflag = 0; //0表示整数,1表示小数
//-------------- 载入glade文件,返回GtkBuilder对象----------------
GtkBuilder* gtk_load_glade(gchar* filename)
{
GtkBuilder *gb;
//新建一个GtkBuilder对象
gb=gtk_builder_new();
//载入文件,失败则返回NULL
if(!gtk_builder_add_from_file(gb,filename,NULL))
return NULL;
//连接文件中所包含的所有信号
gtk_builder_connect_signals(gb,NULL);
//返回GtkBuilder对象供后面操作使用
return gb;
}
//----- 根据GtkBuilder对象,获得glade中对应的计算器中的控件------
GtkWindow *jsq_window;
GtkEntry *show_entry;
GtkButton *button_add;
GtkButton *button_equal;
GtkButton *button_dot;
GtkButton *button_jian;
GtkButton *button_cheng;
GtkButton *button_chu;
GtkButton *button0;
GtkButton *button1;
GtkButton *button2;
GtkButton *button3;
GtkButton *button4;
GtkButton *button5;
GtkButton *button6;
GtkButton *button7;
GtkButton *button8;
GtkButton *button9;
GtkButton *button0;
GtkButton *button_c;
void cal_get_widgets(GtkBuilder* gb)
{
w_(gb,WINDOW,jsq_window);
w_(gb,ENTRY,show_entry);
w_(gb,BUTTON,button_add);
w_(gb,BUTTON,button_equal);
w_(gb,BUTTON,button_dot);
w_(gb,BUTTON,button_jian);
w_(gb,BUTTON,button_cheng);
w_(gb,BUTTON,button_chu);
w_(gb,BUTTON,button0);
w_(gb,BUTTON,button1);
w_(gb,BUTTON,button2);
w_(gb,BUTTON,button3);
w_(gb,BUTTON,button4);
w_(gb,BUTTON,button5);
w_(gb,BUTTON,button6);
w_(gb,BUTTON,button7);
w_(gb,BUTTON,button8);
w_(gb,BUTTON,button9);
w_(gb,BUTTON,button0);
w_(gb,BUTTON,button_c);
}
//判断Entry内是否有数字
int HaveNum()
{
const gchar* keywords = gtk_entry_get_text(show_entry);
char* message;
message = (char*)malloc(1024*sizeof(char));
sprintf(message, "%s", keywords);
if(strlen(message) == 0)//之前没有数字
{
free(message);
return -1;//如果返回-1,则代表Entry内没有数字
}
free(message);