📄 abook-callbacks.c
字号:
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 + -