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

📄 abook-callbacks.c

📁 一个功能全面的电子邮件客户端
💻 C
📖 第 1 页 / 共 3 页
字号:
void abook_widget_delete_abook (GtkWidget *widget, gpointer data) {	/*if (!current_abook)*/	if(!abook_first())  /* Check against the option menu list */		return;	abook_question ("Delete Address Book", 	                "Are you sure you want to delete the current addressbook?", 	                GTK_SIGNAL_FUNC (abook_widget_delete_abook_final), NULL);}int email_row=-1;void abook_widget_entry_destroy (GtkWidget *widget, GdkEvent *event, Abook_entry *entry) {	if (entry)		abook_entry_destroy (current_abook, entry);	gtk_widget_destroy (lw (widget, "abook_entry"));	email_row=-1;}void abook_widget_entry_accept (GtkWidget *widget, Abook_entry *entry) {	  char *street, *notes;  g_return_if_fail (entry != NULL);	  street=gtk_editable_get_chars (GTK_EDITABLE (lw (widget, "street_address")), 0, -1);  notes=gtk_editable_get_chars (GTK_EDITABLE (lw (widget, "notes")), 0, -1);    abook_entry_edit (entry,		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "first_name"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "middle_name"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "last_name"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "title"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "nickname"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "sex"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "home_phone"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "work_phone"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "mobile_phone"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "pager"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "fax"))), 		    street, 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "web_page"))), 		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "company"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "position"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "caddress"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "ccity"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "cstate"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "czip"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "ccountry"))),		    NULL,		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "cphone1"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "cphone2"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "cfax"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "cpager"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "cwebpage"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "cmanager"))),		    gtk_entry_get_text (GTK_ENTRY (lw (widget, "cassistant"))),		    notes);  g_free (street);  g_free (notes);    abook_widget_rehash_abook (current_abook);  abook_widget_entry_destroy (widget, NULL, NULL);  return ;}void abook_widget_entry_cancel (GtkWidget *widget, Abook_entry *entry) {	abook_widget_entry_destroy (widget, NULL, entry);}void abook_widget_entry_email_activate (GtkEntry *widget, Abook_entry *entry) {	GtkCList *clist=GTK_CLIST (lw (GTK_WIDGET (widget), "addr_clist"));	g_return_if_fail (entry != NULL);	g_return_if_fail (gtk_entry_get_text (widget) > 0);	if (email_row==-1) {		char *cl_data[2];		char *tmp;		int row;		cl_data[0]=gtk_entry_get_text (widget);		if (!entry->email) {			cl_data[1]=strdup ("DEFAULT");		} else {			cl_data[1]=NULL;		}		row=gtk_clist_append (clist, cl_data);		tmp=abook_entry_add_email (entry, cl_data[0]);		if (!entry->def_email)			entry->def_email=tmp;		gtk_clist_set_row_data (clist, row, tmp);		gtk_entry_set_text (widget, "");		if (cl_data[1]) free (cl_data[1]);	} else {		char *oldmail=gtk_clist_get_row_data (clist, email_row);		char *newmail=gtk_entry_get_text (widget);		char *stored;		g_return_if_fail (oldmail != NULL);		stored=abook_entry_edit_email (entry, oldmail, newmail);				gtk_clist_set_row_data (clist, email_row, stored);		gtk_clist_set_text (clist, email_row, 0, stored);	}}void abook_widget_entry_add_email (GtkWidget *widget, gpointer data) {	abook_widget_entry_email_activate (GTK_ENTRY (lw (widget, "email_address_entry")), data);}void abook_widget_entry_email_selectrow (GtkWidget *widget, gint row,                    gint column, GdkEventButton *event, gpointer data) {	GtkEntry *entry=GTK_ENTRY (lw (widget, "email_address_entry"));	gtk_entry_set_text (entry, gtk_clist_get_row_data (GTK_CLIST (widget), row));	email_row=row;}void abook_widget_entry_email_unselectrow (GtkWidget *widget, gint row,                    gint column, GdkEventButton *event, gpointer data) {	GtkEntry *entry=GTK_ENTRY (lw (widget, "email_address_entry"));	gtk_entry_set_text (entry, "");	email_row=-1;}void abook_widget_entry_set_default_email (GtkWidget *widget, Abook_entry *entry) {	GtkCList *clist=GTK_CLIST (lw (widget, "addr_clist"));	char *email;	int row;	g_return_if_fail (entry != NULL);	if (email_row==-1)		return;	email=gtk_clist_get_row_data (clist, email_row);	row=gtk_clist_find_row_from_data (clist, entry->def_email);	gtk_clist_set_text (clist, row, 1, "");	gtk_clist_set_text (clist, email_row, 1, "DEFAULT");	abook_entry_set_default (entry, email);}void abook_widget_entry_remove_email (GtkWidget *widget, Abook_entry *entry) {	GtkCList *clist=GTK_CLIST (lw (widget, "addr_clist"));	char *email;	if (email_row==-1)		return;	email=gtk_clist_get_row_data (clist, email_row);	g_return_if_fail (email != NULL);	gtk_clist_remove (clist, email_row);	abook_entry_remove_email (entry, email);	if (entry->def_email) {		email_row=gtk_clist_find_row_from_data (clist, entry->def_email);		gtk_clist_set_text (clist, email_row, 1, "DEFAULT");	}	email_row=-1;}int ngroup=-1, ogroup=-1;void abook_widget_entry_newgroup_sel (GtkWidget *widget, gint row,                    gint column, GdkEventButton *event, Abook_entry *entry) {		ngroup=row;}void abook_widget_entry_newgroup_unsel (GtkWidget *widget, gint row,                    gint column, GdkEventButton *event, Abook_entry *entry) {	ngroup=-1;}void abook_widget_entry_memgroup_sel (GtkWidget *widget, gint row,                    gint column, GdkEventButton *event, Abook_entry *entry) {	ogroup=row;}void abook_widget_entry_memgroup_unsel (GtkWidget *widget, gint row,                    gint column, GdkEventButton *event, Abook_entry *entry) {	ogroup=-1;}void abook_widget_entry_addgroup (GtkWidget *widget, Abook_entry *entry) {	GtkCList *clist1, *clist2;	Abook_group *group;	clist1=GTK_CLIST (lw (widget, "groups_avail"));	clist2=GTK_CLIST (lw (widget, "groups_member"));	if (ngroup!=-1) {		group=gtk_clist_get_row_data (clist1, ngroup);		if (!g_list_find (entry->groups, group)) {			char *cl_data[1];			int row;			entry->groups=g_list_append (entry->groups, group);			cl_data[0]=group->name;			row=gtk_clist_append (clist2, cl_data);			gtk_clist_set_row_data (clist2, row, group);		}	}}void abook_widget_entry_delgroup (GtkWidget *widget, Abook_entry *entry) {	Abook_group *group;	if (ogroup!=-1) {		GtkCList *clist=GTK_CLIST (lw (widget, "groups_member"));		group=gtk_clist_get_row_data (clist, ogroup);		entry->groups=g_list_remove (entry->groups, group);		gtk_clist_remove (clist, ogroup);	}}int gr1=-1, gr2=-1;void abook_widget_group_accept (GtkWidget *widget, Abook_group *group) {	char *group_name=gtk_entry_get_text (GTK_ENTRY (lw (widget, "group_name")));	if (strlen (group_name)>0) {		if (group->name) free (group->name);		group->name=strdup (group_name);	} else {		insert_message ("The group must have a name\n");		return;	}	abook_widget_rehash_abook (current_abook);	gtk_widget_destroy (lw (widget, "group_editor"));}void abook_widget_group_cancel (GtkWidget *widget, Abook_group *group) {	gtk_widget_destroy (lw (widget, "group_editor"));}void abook_widget_group_selentry (GtkWidget *widget, gint row) {	gr1=row;}void abook_widget_group_unselentry () {	gr1=-1;}void abook_widget_group_selmember (GtkWidget *widget, gint row) {	gr2=row;}void abook_widget_group_unselmember () {	gr2=-1;}void abook_widget_group_addmember (GtkWidget *widget, Abook_group *group) {	if (gr1!=-1) {		GtkCList *entries=GTK_CLIST (lw (widget, "entries"));		GtkCList *members=GTK_CLIST (lw (widget, "members"));		Abook_entry *entry=gtk_clist_get_row_data (entries, gr1);		char *cl_data[2];		int row;		if (gtk_clist_find_row_from_data (members, entry)<0) {			entry->groups=g_list_append (entry->groups, group);			cl_data[0]=(char *)calloc (1024, sizeof (char));#if 0			format_name (cl_data[0], entry->first, entry->last);#else			format_name (1024, cl_data[0], entry->first, entry->last, entry->def_email );#endif			cl_data[1]=entry->def_email;			row=gtk_clist_append (members, cl_data);			gtk_clist_set_row_data (members, row, (gpointer)entry);		}	}}void abook_widget_group_delmember (GtkWidget *widget, Abook_group *group) {	if (gr2!=-1) {		GtkCList *clist=GTK_CLIST (lw (widget, "members"));		Abook_entry *entry=gtk_clist_get_row_data (clist, gr2);		entry->groups=g_list_remove (entry->groups, group);		gtk_clist_remove (clist, gr2);		gr2=-1;	}}void abook_widget_new_accept (GtkWidget *widget, gpointer data) {	char *name=gtk_entry_get_text (GTK_ENTRY (lw (widget, "abook_entry")));	if (strlen (name)>0) {		Abook *abook=abook_new ();		abook->name=rm_crlf (name);		gtk_widget_destroy (lw (widget, "new_abook"));		abook_widget_rehash ();	} else {		insert_message ("Must have a name for this addressbook\n");	}}void abook_widget_new_cancel (GtkWidget *widget, gpointer data) {	gtk_widget_destroy (lw (widget, "new_abook"));	}gint compare_function (Abook_rd *rd, Abook_entry *entry) {	if (!rd)		return FALSE;	if (rd->entry==entry)		return TRUE;	return FALSE;}voidabook_widget_find_entry_changed (GtkEditable *edit) {  char *tmp=gtk_entry_get_text (GTK_ENTRY (edit));  GtkCTree *ctree=GTK_CTREE (lw (abook_widget, "entry_ctree"));  GtkCTreeNode *node=NULL;  Abook_entry *entry;  if (current_abook==NULL)    return;  entry=abook_entry_seek_name_in_part (current_abook, tmp);  if (entry) {    GList *seek;    for (seek=entry->nodes;seek;seek=seek->next)      node=seek->data;    gtk_ctree_select (ctree, node);    gtk_ctree_node_moveto (ctree, node, 0, 0, 0);  } else {    gtk_clist_unselect_all (GTK_CLIST (ctree));		  }  return ;}GList *list=NULL;GList *types=NULL;int rsel;GtkCTreeNode *lsel;gboolean my_compare_func (Abook_rd *rd1, Abook_rd *rd2) {	if (rd1 && rd2) {		if (rd1->entry && rd2->entry) {			if (rd1->entry==rd2->entry) {				return FALSE;			}		}		if (rd1->group && rd2->group && rd2->group==rd2->group)			return FALSE;	}	return TRUE;}gint gtk_clist_find_by_row_data_custom (GtkCList *clist, gpointer data, GCompareFunc func) {	int i=0;	g_return_val_if_fail (clist != NULL, -1);		for (i=0;i<clist->rows;i++) {		gpointer row_data=gtk_clist_get_row_data (clist, i);		if (!func (row_data, data)==TRUE)			return i;	}	return -1;}void abook_widget_set_types (GList *list) {	if (types)		g_list_free (types);	types=list;}void abook_widget_set_list (GList *l) {	if (list)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -