📄 callbacks.c
字号:
break; default: break; } gtk_widget_destroy(chooser);}voidexpander_callback (GObject *object, GParamSpec *param_spec, gpointer user_data){ GtkExpander *expander; expander = GTK_EXPANDER (object); GtkWidget* label = lookup_widget(GTK_WIDGET(expander), "label25"); if (gtk_expander_get_expanded (expander)) { gtk_label_set_text(GTK_LABEL(label),"less fields"); } else { gtk_label_set_text(GTK_LABEL(label),"more fields"); }}voidon_calendar_day_selected_double_click (GtkCalendar *calendar, gpointer user_data){ GtkWidget* button = GTK_WIDGET(user_data); GtkWidget* birth = lookup_widget(button, "birthdateentry"); int year; int month; int day; gtk_calendar_get_date(calendar,&year,&month,&day); char date[1024]; sprintf(date,"%i/%i/%i",month+1,day,year); gtk_entry_set_text(GTK_ENTRY(birth), date); GtkWidget* dlg = lookup_widget(GTK_WIDGET(calendar), "caldialog"); gtk_widget_destroy(dlg);} voidon_datebutton_clicked (GtkButton *button, gpointer user_data){ GtkWidget* date = create_caldialog(); GtkWidget* cal = lookup_widget(GTK_WIDGET(date), "calendar"); g_signal_connect ((gpointer)cal, "day_selected_double_click", G_CALLBACK (on_calendar_day_selected_double_click), button); gtk_dialog_run (GTK_DIALOG(date));}voidon_group1_activate (GtkMenuItem *menuitem, gpointer user_data){}static int callback_insert_group(void *groupcombo, int argc, char **argv, char **azColName){ GtkWidget* combo = (GtkWidget*) groupcombo; GtkWidget* combogroup = lookup_widget(combo, "comboboxgroup"); int i; for(i=0;i<argc;i++) { gtk_combo_box_remove_text (GTK_COMBO_BOX(combo), i); gtk_combo_box_remove_text (GTK_COMBO_BOX(combogroup), i); } return 0;}static int callback_change_group(void *addresscombo, int argc, char **argv, char **azColName){ GtkWidget* combo = (GtkWidget*) addresscombo; int i; for(i=0;i<argc;i++) { gtk_combo_box_remove_text (GTK_COMBO_BOX(combo), i); } return 0;}voidon_new_group_activate (GtkMenuItem *menuitem, gpointer user_data){ GtkWidget* group = create_dialog4(); int result = gtk_dialog_run (GTK_DIALOG(group)); sqlite3 *db; int rc; char *zErrMsg = 0; if(result == GTK_RESPONSE_OK) { 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* groupname = lookup_widget(GTK_WIDGET(group), "groupentry"); const char* gname = gtk_entry_get_text(GTK_ENTRY(groupname)); GtkWidget* groupcombo = lookup_widget(GTK_WIDGET(menuitem), "groupcombobox"); GtkWidget* combogroup = lookup_widget(GTK_WIDGET(menuitem), "comboboxgroup"); int id = gtk_combo_box_get_active(GTK_COMBO_BOX(groupcombo)); int group_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combogroup)); gtk_combo_box_remove_text (GTK_COMBO_BOX(groupcombo), 0); rc = sqlite3_exec(db, "select * from gfa_groups;", callback_insert_group, groupcombo, &zErrMsg); char groupbuffer[1024]; sprintf(groupbuffer, "insert into gfa_groups (group_name) values('%s');", gname); rc = sqlite3_exec(db, groupbuffer, NULL, 0, &zErrMsg); gtk_combo_box_append_text(GTK_COMBO_BOX(groupcombo),"All"); rc = sqlite3_exec(db, "select group_name from gfa_groups;", callback_group, groupcombo, &zErrMsg); gtk_combo_box_set_active(GTK_COMBO_BOX(groupcombo),id); gtk_combo_box_set_active(GTK_COMBO_BOX(combogroup),group_id); } gtk_widget_destroy (group); sqlite3_close(db);}voidon_rename_group_activate (GtkMenuItem *menuitem, gpointer user_data){ GtkWidget* groupcombo = lookup_widget(GTK_WIDGET(menuitem), "groupcombobox"); GtkWidget* combogroup = lookup_widget(GTK_WIDGET(menuitem), "comboboxgroup"); int id = gtk_combo_box_get_active(GTK_COMBO_BOX(groupcombo)); int group_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combogroup)); const char* groupname = gtk_combo_box_get_active_text(GTK_COMBO_BOX(groupcombo)); if(strcmp(groupname,"All") == 0 || strcmp(groupname,"General") == 0 ){ GtkWidget* info = create_dialog6(); gtk_dialog_run (GTK_DIALOG(info)); gtk_widget_destroy (info); }else{ GtkWidget* group = create_dialog5(); GtkWidget* entry = lookup_widget(GTK_WIDGET(group), "entry1"); gtk_entry_set_text(GTK_ENTRY(entry), groupname); gtk_editable_select_region(GTK_EDITABLE(entry),0,-1); int result = gtk_dialog_run (GTK_DIALOG(group)); sqlite3 *db; int rc; char *zErrMsg = 0; if(result == GTK_RESPONSE_OK) { 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); const char* newname = gtk_entry_get_text(GTK_ENTRY(entry)); rc = sqlite3_exec(db, "select * from gfa_groups;", callback_insert_group, groupcombo, &zErrMsg); char group[1024]; sprintf(group, "UPDATE gfa_groups SET group_name = '%s' WHERE group_name = '%s';", newname, groupname); rc = sqlite3_exec(db, group, NULL, 0, &zErrMsg); gtk_combo_box_append_text(GTK_COMBO_BOX(groupcombo),"All"); rc = sqlite3_exec(db, "select group_name from gfa_groups;", callback_group, groupcombo, &zErrMsg); sqlite3_close(db); gtk_combo_box_set_active(GTK_COMBO_BOX(groupcombo),id); gtk_combo_box_set_active(GTK_COMBO_BOX(combogroup),group_id); } gtk_widget_destroy (group); }}voidon_delete_group_activate (GtkMenuItem *menuitem, gpointer user_data){ GtkWidget* groupcombo = lookup_widget(GTK_WIDGET(menuitem), "groupcombobox"); GtkWidget* combogroup = lookup_widget(GTK_WIDGET(menuitem), "comboboxgroup"); GtkWidget* addresscombo = lookup_widget(GTK_WIDGET(menuitem), "addresscombobox"); const char* groupname = gtk_combo_box_get_active_text(GTK_COMBO_BOX(groupcombo)); if(strcmp(groupname,"All") == 0 || strcmp(groupname,"General") == 0 ){ GtkWidget* info = create_dialog7(); gtk_dialog_run (GTK_DIALOG(info)); gtk_widget_destroy (info); }else{ 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 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* dialog = create_dialog8(); int result = gtk_dialog_run (GTK_DIALOG(dialog)); if (result == 1) //delete all contacts { char delete_contacts[1024]; sprintf(delete_contacts, "DELETE FROM gfa WHERE Groups = '%s';", id); sqlite3_exec(db,delete_contacts,NULL,0,&zErrMsg); rc = sqlite3_exec(db, "select * from gfa_groups;", callback_insert_group, groupcombo, &zErrMsg); gtk_combo_box_append_text(GTK_COMBO_BOX(groupcombo),"All"); char delete_group[1024]; sprintf(delete_group, "DELETE FROM gfa_groups WHERE group_id = '%s';", id); sqlite3_exec(db,delete_group,NULL,0,&zErrMsg); rc = sqlite3_exec(db, "select group_name from gfa_groups;", callback_group, groupcombo, &zErrMsg); sqlite3_close(db); gtk_combo_box_set_active(GTK_COMBO_BOX(groupcombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(combogroup),0); gtk_combo_box_set_active(GTK_COMBO_BOX(addresscombo),-1); } if ( result == 0 ) //move all contacts to general { char group[1024]; sprintf(group, "UPDATE gfa SET Groups = '1' WHERE Groups = '%s';", id); rc = sqlite3_exec(db, group, NULL, 0, &zErrMsg); rc = sqlite3_exec(db, "select * from gfa_groups;", callback_insert_group, groupcombo, &zErrMsg); gtk_combo_box_append_text(GTK_COMBO_BOX(groupcombo),"All"); char delete_group[1024]; sprintf(delete_group, "DELETE FROM gfa_groups WHERE group_id = '%s';", id); sqlite3_exec(db,delete_group,NULL,0,&zErrMsg); rc = sqlite3_exec(db, "select group_name from gfa_groups;", callback_group, groupcombo, &zErrMsg); sqlite3_close(db); gtk_combo_box_set_active(GTK_COMBO_BOX(groupcombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(combogroup),0); gtk_combo_box_set_active(GTK_COMBO_BOX(addresscombo),-1); } gtk_widget_destroy(dialog); }}voidon_groupcombobox_changed (GtkComboBox *combobox, gpointer user_data){ GtkWidget* addresscombo = lookup_widget(GTK_WIDGET(combobox), "addresscombobox"); const char* groupname = gtk_combo_box_get_active_text(GTK_COMBO_BOX(combobox)); 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); if(strcmp(groupname,"All") == 0 ) { char contacts[1024]; rc = sqlite3_exec(db, "select * from gfa;", callback_change_group, addresscombo, &zErrMsg); rc = sqlite3_exec(db, "select * from gfa ORDER BY Last_Name,First_Name ASC;", callback_change, addresscombo, &zErrMsg); }else{ 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); char contacts[1024]; rc = sqlite3_exec(db, "select * from gfa;", callback_change_group, addresscombo, &zErrMsg); sprintf(contacts, "select * from gfa where Groups = '%s' ORDER BY Last_Name,First_Name ASC;",id); rc = sqlite3_exec(db, contacts, callback_change, addresscombo, &zErrMsg); } sqlite3_close(db); GtkWidget* lastname = lookup_widget(GTK_WIDGET(combobox), "lastnameentry"); GtkWidget* firstname = lookup_widget(GTK_WIDGET(combobox), "firstnameentry"); GtkWidget* street = lookup_widget(GTK_WIDGET(combobox), "streetentry"); GtkWidget* no = lookup_widget(GTK_WIDGET(combobox), "noentry"); GtkWidget* zip = lookup_widget(GTK_WIDGET(combobox), "zipentry"); GtkWidget* city = lookup_widget(GTK_WIDGET(combobox), "cityentry"); GtkWidget* phone = lookup_widget(GTK_WIDGET(combobox), "phoneentry"); GtkWidget* mobile = lookup_widget(GTK_WIDGET(combobox), "mobileentry"); GtkWidget* email = lookup_widget(GTK_WIDGET(combobox), "emailentry"); GtkWidget* label = lookup_widget(GTK_WIDGET(combobox), "url"); GtkWidget* birth = lookup_widget(GTK_WIDGET(combobox), "birthdateentry"); GtkWidget* web = lookup_widget(GTK_WIDGET(combobox), "webentry"); GtkWidget* icq = lookup_widget(GTK_WIDGET(combobox), "icqentry"); GtkWidget* yahoo = lookup_widget(GTK_WIDGET(combobox), "yahooentry"); GtkWidget* msn = lookup_widget(GTK_WIDGET(combobox), "msnentry"); GtkWidget* workphone = lookup_widget(GTK_WIDGET(combobox), "workphoneentry"); GtkWidget* workmobile = lookup_widget(GTK_WIDGET(combobox), "workmobileentry"); GtkWidget* workemail = lookup_widget(GTK_WIDGET(combobox), "workemailentry"); GtkWidget* image = lookup_widget(GTK_WIDGET(combobox), "buddy"); GtkWidget* groupcombo = lookup_widget(GTK_WIDGET(combobox), "comboboxgroup"); gtk_entry_set_text(GTK_ENTRY(lastname),""); gtk_entry_set_text(GTK_ENTRY(firstname),""); gtk_entry_set_text(GTK_ENTRY(street),""); gtk_entry_set_text(GTK_ENTRY(no),""); gtk_entry_set_text(GTK_ENTRY(zip),""); gtk_entry_set_text(GTK_ENTRY(city),""); gtk_entry_set_text(GTK_ENTRY(phone),""); gtk_entry_set_text(GTK_ENTRY(mobile),""); gtk_entry_set_text(GTK_ENTRY(email),""); gtk_label_set_text(GTK_LABEL(label),"/usr/share/gfa/pixmaps/person.png"); gtk_image_set_from_file(GTK_IMAGE(image),"/usr/share/gfa/pixmaps/person.png"); gtk_entry_set_text(GTK_ENTRY(birth),""); gtk_entry_set_text(GTK_ENTRY(web),""); gtk_entry_set_text(GTK_ENTRY(icq),""); gtk_entry_set_text(GTK_ENTRY(yahoo),""); gtk_entry_set_text(GTK_ENTRY(msn),""); gtk_entry_set_text(GTK_ENTRY(workphone),""); gtk_entry_set_text(GTK_ENTRY(workmobile),""); gtk_entry_set_text(GTK_ENTRY(workemail),""); gtk_combo_box_set_active(GTK_COMBO_BOX(groupcombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(addresscombo),-1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -