⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callbacks.c

📁 gfa is a small and fast address book written in C and GTK+.
💻 C
📖 第 1 页 / 共 3 页
字号:
		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 + -