📄 callbacks.c
字号:
#ifdef HAVE_CONFIG_H# include <config.h>#endif#include <gtk/gtk.h>#include <sqlite3.h>#include <stdlib.h>#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include "callbacks.h"#include "interface.h"#include "support.h"gbooleanon_mainwindow_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data){ gtk_main_quit(); return FALSE;}voidon_quitbutton_clicked (GtkButton *button, gpointer user_data){ gtk_main_quit();}static int callback(void *mainwindow, int argc, char **argv, char **azColName){ GtkWidget* mwnd = (GtkWidget*) mainwindow; GtkWidget* combo = lookup_widget(mwnd, "addresscombobox"); int i; char combotext[1024]; for(i=0; i<argc; i++){ if(strcmp(azColName[i],"Last_Name") == 0) { sprintf(combotext, "%s, ", argv[i]); } if(strcmp(azColName[i],"First_Name") == 0) { g_strlcat(combotext,argv[i],1024); //strcat(combotext, argv[i]); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), combotext); } } return 0;}static int callback_group(void *groupcombo, int argc, char **argv, char **azColName){ GtkWidget* combo = (GtkWidget*) groupcombo; GtkWidget* combogroup = lookup_widget(combo, "comboboxgroup"); int i; char combotext[1024]; for(i=0; i<argc; i++){ if(strcmp(azColName[i],"group_name") == 0) { //g_strlcat(combotext,argv[i],1024); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), argv[i]); gtk_combo_box_append_text(GTK_COMBO_BOX(combogroup), argv[i]); } } return 0;}static int callback_change(void *addresscombo, int argc, char **argv, char **azColName){ GtkWidget* combo = (GtkWidget*) addresscombo; int i; char combotext[1024]; for(i=0; i<argc; i++){ if(strcmp(azColName[i],"Last_Name") == 0) { sprintf(combotext, "%s, ", argv[i]); } if(strcmp(azColName[i],"First_Name") == 0) { g_strlcat(combotext,argv[i],1024); gtk_combo_box_append_text(GTK_COMBO_BOX(combo), combotext); } } return 0;}static int callback_insert(void *button, int argc, char **argv, char **azColName){ GtkWidget* btn = (GtkWidget*) button; GtkWidget* combo = lookup_widget(btn, "addresscombobox"); int i; for(i=0;i<argc;i++) { gtk_combo_box_remove_text (GTK_COMBO_BOX(combo), i); } return 0;}static int callback_id(void *id, int argc, char **argv, char **azColName){ strcpy(id,argv[0]); return 0;}static int del_file_callback(void *unused, int argc, char **argv, char **azColName){ int i; char del[1024]; for(i=0; i<argc; i++){ if(strcmp(azColName[i],"Image") == 0) { sprintf(del, "rm -f %s", argv[i]); } } if (!g_strrstr(del, "person.png")){ system(del); } return 0;}static int check_insert(void *unused, int argc, char **argv, char **azColName){ if (argc != 0) return 1; return 0;}static int oldcheck(void *db, int argc, char **argv, char **azColName){ if (argc < 17) { sqlite3* database = (sqlite3*)db; char *zErrMsg = 0; sqlite3_exec(db,"alter table gfa add column Birth char(30) DEFAULT '';", NULL, 0, &zErrMsg); sqlite3_exec(db,"alter table gfa add column Web char(200) DEFAULT '';", NULL, 0, &zErrMsg); sqlite3_exec(db,"alter table gfa add column Icq char(20) DEFAULT '';", NULL, 0, &zErrMsg); sqlite3_exec(db,"alter table gfa add column Yahoo char(20) DEFAULT '';", NULL, 0, &zErrMsg); sqlite3_exec(db,"alter table gfa add column Msn char(50) DEFAULT '';", NULL, 0, &zErrMsg); sqlite3_exec(db,"alter table gfa add column Workphone char(30) DEFAULT '';", NULL, 0, &zErrMsg); sqlite3_exec(db,"alter table gfa add column Workmobile char(30) DEFAULT '';", NULL, 0, &zErrMsg); sqlite3_exec(db,"alter table gfa add column Workemail char(200) DEFAULT '';", NULL, 0, &zErrMsg); } return 0;}static int combo_active(void *combobox, int argc, char **argv, char **azColName){ GtkWidget* btn = GTK_WIDGET(combobox); GtkWidget* lastname = lookup_widget(btn, "lastnameentry"); GtkWidget* firstname = lookup_widget(btn, "firstnameentry"); GtkWidget* street = lookup_widget(btn, "streetentry"); GtkWidget* no = lookup_widget(btn, "noentry"); GtkWidget* zip = lookup_widget(btn, "zipentry"); GtkWidget* city = lookup_widget(btn, "cityentry"); GtkWidget* phone = lookup_widget(btn, "phoneentry"); GtkWidget* mobile = lookup_widget(btn, "mobileentry"); GtkWidget* email = lookup_widget(btn, "emailentry"); GtkWidget* label = lookup_widget(btn, "url"); GtkWidget* image = lookup_widget(btn, "buddy"); GtkWidget* birth = lookup_widget(btn, "birthdateentry"); GtkWidget* web = lookup_widget(btn, "webentry"); GtkWidget* icq = lookup_widget(btn, "icqentry"); GtkWidget* yahoo = lookup_widget(btn, "yahooentry"); GtkWidget* msn = lookup_widget(btn, "msnentry"); GtkWidget* workphone = lookup_widget(btn, "workphoneentry"); GtkWidget* workmobile = lookup_widget(btn, "workmobileentry"); GtkWidget* workemail = lookup_widget(btn, "workemailentry"); GtkWidget* groupcombo = lookup_widget(btn, "comboboxgroup"); GtkWidget* groupselect = lookup_widget(btn, "groupcombobox"); const char* active_group = gtk_combo_box_get_active_text(GTK_COMBO_BOX(groupselect)); int active_group_id = gtk_combo_box_get_active(GTK_COMBO_BOX(groupselect)); int i; char entrytext[1024]; for(i=0; i<argc; i++){ if(strcmp(azColName[i],"Last_Name") == 0) { gtk_entry_set_text(GTK_ENTRY(lastname),argv[i]); } if(strcmp(azColName[i],"First_Name") == 0) { gtk_entry_set_text(GTK_ENTRY(firstname),argv[i]); } if(strcmp(azColName[i],"Street") == 0) { gtk_entry_set_text(GTK_ENTRY(street),argv[i]); } if(strcmp(azColName[i],"No") == 0) { gtk_entry_set_text(GTK_ENTRY(no),argv[i]); } if(strcmp(azColName[i],"Zip") == 0) { gtk_entry_set_text(GTK_ENTRY(zip),argv[i]); } if(strcmp(azColName[i],"City") == 0) { gtk_entry_set_text(GTK_ENTRY(city),argv[i]); } if(strcmp(azColName[i],"Phone") == 0) { gtk_entry_set_text(GTK_ENTRY(phone),argv[i]); } if(strcmp(azColName[i],"Mobile") == 0) { gtk_entry_set_text(GTK_ENTRY(mobile),argv[i]); } if(strcmp(azColName[i],"Email") == 0) { gtk_entry_set_text(GTK_ENTRY(email),argv[i]); } if(strcmp(azColName[i],"Image")==0) { if(argv[i] != NULL) { gtk_image_set_from_file(GTK_IMAGE(image),argv[i]); gtk_label_set_text(GTK_LABEL(label),argv[i]); }else{ gtk_image_set_from_file(GTK_IMAGE(image),"/usr/share/gfa/pixmaps/person.png"); gtk_label_set_text(GTK_LABEL(label),"/usr/share/gfa/pixmaps/person.png"); } } if(strcmp(azColName[i],"Birth") == 0) { gtk_entry_set_text(GTK_ENTRY(birth),argv[i]); } if(strcmp(azColName[i],"Web") == 0) { gtk_entry_set_text(GTK_ENTRY(web),argv[i]); } if(strcmp(azColName[i],"Icq") == 0) { gtk_entry_set_text(GTK_ENTRY(icq),argv[i]); } if(strcmp(azColName[i],"Yahoo") == 0) { gtk_entry_set_text(GTK_ENTRY(yahoo),argv[i]); } if(strcmp(azColName[i],"Msn") == 0) { gtk_entry_set_text(GTK_ENTRY(msn),argv[i]); } if(strcmp(azColName[i],"Workphone") == 0) { gtk_entry_set_text(GTK_ENTRY(workphone),argv[i]); } if(strcmp(azColName[i],"Workmobile") == 0) { gtk_entry_set_text(GTK_ENTRY(workmobile),argv[i]); } if(strcmp(azColName[i],"Workemail") == 0) { gtk_entry_set_text(GTK_ENTRY(workemail),argv[i]); } if(strcmp(azColName[i],"Groups") == 0) { if ( !(strcmp(active_group,"All") == 0) ) { gtk_combo_box_set_active(GTK_COMBO_BOX(groupcombo),active_group_id-1); } } } return 0;}voidon_addresscombobox_changed (GtkComboBox *combobox, gpointer user_data){ char* text = gtk_combo_box_get_active_text(combobox); const char* div = ","; char* lname = strtok(text, div); char* fname = strtok(NULL,div); fname = g_strchug(fname); sqlite3 *db; int rc; char *zErrMsg = 0; char* home = getenv("HOME"); char path[1024]; sprintf(path,"%s/.gfa", home); char filename[1024]; sprintf(filename, "%s/gfa.db",path); rc = sqlite3_open(filename, &db); char query[1024]; sprintf(query, "SELECT * FROM gfa WHERE Last_Name = '%s' AND First_Name = '%s';", lname, fname); rc = sqlite3_exec(db, query, combo_active, combobox, &zErrMsg); sqlite3_close(db);}voidon_savebutton_clicked (GtkButton *button, gpointer user_data){ sqlite3 *db; int rc; char *zErrMsg = 0; char* home = getenv("HOME"); char path[1024]; sprintf(path,"%s/.gfa", home); char filename[1024]; sprintf(filename, "%s/gfa.db",path); rc = sqlite3_open(filename, &db); GtkWidget* lastname = lookup_widget(GTK_WIDGET(button), "lastnameentry"); GtkWidget* firstname = lookup_widget(GTK_WIDGET(button), "firstnameentry"); GtkWidget* street = lookup_widget(GTK_WIDGET(button), "streetentry"); GtkWidget* no = lookup_widget(GTK_WIDGET(button), "noentry"); GtkWidget* zip = lookup_widget(GTK_WIDGET(button), "zipentry"); GtkWidget* city = lookup_widget(GTK_WIDGET(button), "cityentry"); GtkWidget* phone = lookup_widget(GTK_WIDGET(button), "phoneentry"); GtkWidget* mobile = lookup_widget(GTK_WIDGET(button), "mobileentry"); GtkWidget* email = lookup_widget(GTK_WIDGET(button), "emailentry"); GtkWidget* label = lookup_widget(GTK_WIDGET(button), "url"); GtkWidget* birth = lookup_widget(GTK_WIDGET(button), "birthdateentry"); GtkWidget* web = lookup_widget(GTK_WIDGET(button), "webentry"); GtkWidget* icq = lookup_widget(GTK_WIDGET(button), "icqentry"); GtkWidget* yahoo = lookup_widget(GTK_WIDGET(button), "yahooentry"); GtkWidget* msn = lookup_widget(GTK_WIDGET(button), "msnentry"); GtkWidget* workphone = lookup_widget(GTK_WIDGET(button), "workphoneentry"); GtkWidget* workmobile = lookup_widget(GTK_WIDGET(button), "workmobileentry"); GtkWidget* workemail = lookup_widget(GTK_WIDGET(button), "workemailentry"); GtkWidget* group = lookup_widget(GTK_WIDGET(button), "comboboxgroup"); GtkWidget* addresscombobox = lookup_widget(GTK_WIDGET(button), "addresscombobox"); GtkWidget* image = lookup_widget(GTK_WIDGET(button), "buddy"); int comboid = gtk_combo_box_get_active(GTK_COMBO_BOX(addresscombobox)); const char* groupname = gtk_combo_box_get_active_text(GTK_COMBO_BOX(group)); char id[1024]; char id_request[1024]; sprintf(id_request, "select group_id from gfa_groups where group_name = '%s';", groupname); rc = sqlite3_exec(db, id_request, callback_id, &id, &zErrMsg); GtkWidget* active_group = lookup_widget(GTK_WIDGET(button), "groupcombobox"); const char* activegroupname = gtk_combo_box_get_active_text(GTK_COMBO_BOX(active_group)); char id_active[1024]; char id_request_active[1024];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -