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

📄 callbacks.c

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