📄 main-window-callbacks.c
字号:
} else if (strcasecmp(sens, "Company-Confidential")==0) { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_u4); } else { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_u5); } } else { if (strcasecmp(sens, "Internal-Document")==0) { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r1); } else if (strcasecmp(sens, "Personal")==0) { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r2); } else if (strcasecmp(sens, "Private")==0) { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r3); } else if (strcasecmp(sens, "Company-Confidential")==0) { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r4); } else { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->sens_r5); } } } else { if ((msgCnt % 2) == 0) { /* even data */ if (unread) { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->unread_even); } else { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->read_even); } } else { /* odd data */ if (unread) { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->unread_odd); } else { for (x=0; x < 6; x++) gtk_clist_set_cell_style (GTK_CLIST (clist), rowNum, x, tm_globs->read_odd); } } } } gtk_clist_thaw (clist); return;}void reindex_accept (GtkWidget *widget, gpointer data) { folder_reindex (data); folder_display (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), data); gtk_widget_destroy (lookup_widget (widget, "yesno"));}void clicked_on_folder (GtkWidget *widget, GtkCTreeNode *node, int column) { Folder *folder=gtk_ctree_node_get_row_data (GTK_CTREE (widget), node); if (folder->flags & F_INDEX_MISSING) { folder_reindex (folder); folder_display (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), folder); } else { folder_display (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), folder); }}void t_clicked_on_folder (GtkWidget *widget, GdkEventButton *event, gpointer data) { int row, column; Folder *folder; GtkWidget *newf; GtkWidget *delete; message_selection_null() ; if (event) { switch (event->button) { case 1 : gtk_clist_get_selection_info (GTK_CLIST (widget), event->x, event->y, &row, &column); folder=gtk_clist_get_row_data (GTK_CLIST (widget), row); break; case 2 : gtk_clist_get_selection_info (GTK_CLIST (widget), event->x, event->y, &row, &column); folder=gtk_clist_get_row_data (GTK_CLIST (widget), row); break; case 3 : gtk_clist_get_selection_info (GTK_CLIST (widget), event->x, event->y, &row, &column); folder=gtk_clist_get_row_data (GTK_CLIST (widget), row); if (folder) { gtk_ctree_select (GTK_CTREE (widget), folder->tree_item); } else { return; } if (GTK_IS_WIDGET (tm_globs->folder_popup)) { gtk_widget_destroy (tm_globs->folder_popup); } tm_globs->folder_popup=create_folder_popup (); /* if (tm_globs->h1>0) gtk_signal_disconnect (GTK_OBJECT (empty), tm_globs->h1); if (tm_globs->h2>0) gtk_signal_disconnect (GTK_OBJECT (newf), tm_globs->h2); if (tm_globs->h3>0) gtk_signal_disconnect (GTK_OBJECT (delete), tm_globs->h3);*/ //empty=lookup_widget (tm_globs->folder_popup, "empty_folder1"); newf=lookup_widget (tm_globs->folder_popup, "new_folder1"); delete=lookup_widget (tm_globs->folder_popup, "delete_folder1"); if ((strcasecmp (folder->name, "inbox")==0) || (strcasecmp (folder->name, "outbox")==0) || (strcasecmp (folder->name, "sent-items")==0) || (strcasecmp (folder->name, "trash")==0)) { gtk_widget_set_sensitive (delete, FALSE); } else { gtk_widget_set_sensitive (delete, TRUE); } /* tm_globs->h1=gtk_signal_connect (GTK_OBJECT (empty), "activate", GTK_SIGNAL_FUNC (empty_folder_activate), (gpointer)folder);*/ tm_globs->h2=gtk_signal_connect (GTK_OBJECT (newf), "activate", GTK_SIGNAL_FUNC (new_folder_activate), (gpointer)folder); tm_globs->h3=gtk_signal_connect (GTK_OBJECT (delete), "activate", GTK_SIGNAL_FUNC (delete_folder_activate), (gpointer)folder); gtk_menu_popup (GTK_MENU (tm_globs->folder_popup), NULL, NULL, NULL, NULL, 3, 0); break; } }}void unclicked_on_folder (GtkWidget *widget, GtkCTreeNode *node, int column) { GtkWidget *message_clist=lookup_widget (tm_globs->main_window, "message_clist"); gtk_clist_freeze (GTK_CLIST (message_clist)); gtk_clist_clear (GTK_CLIST (message_clist)); gtk_clist_thaw (GTK_CLIST (message_clist)); tm_globs->visable=NULL; protect_unprotect_actions (FALSE);}void message_clist_remove_row (GtkCList *clist, int row) {#if DEBUG > 5 printf ("Removing row %d\n", row);#endif}void destroy_selected_message (GtkWidget *widget, gpointer data) { GtkWidget *message_body=lookup_widget (tm_globs->main_window, "message_body"); GtkWidget *folder_ctree=lookup_widget (tm_globs->main_window, "folder_tree"); Folder *fl = NULL, *trash; msg_info *info=NULL; GList *seek=NULL; char *number; int row;#if DEBUG > 6 printf( "destroying selected message.\n" ) ;#endif /* different methods for getting the same thing done */ /*for (seek=message_get_selection();seek;seek=seek->next) {*/ /*for (seek=g_list_last(message_get_selection());seek;seek=g_list_previous(seek)) {*/ for (seek=message_get_selection();seek;seek=g_list_next(seek)) { info=seek->data; if( info ) { fl=folder_seek (folder_seek_by_name (info->msg->folder)); trash=folder_seek (folder_seek_by_name ("Trash")); if (strcasecmp (info->msg->folder, "trash")==0) { trash->total--; if (info->msg->flags & MESSAGE_UNREAD) trash->unread--; destroy_message (info->msg); } else { trash->total++; fl->total--; if (info->msg->flags & MESSAGE_UNREAD) { trash->unread++; fl->unread--; } if( info->msg->folder ) free( info->msg->folder ) ; info->msg->folder=strdup ("Trash"); } row=gtk_clist_find_row_from_data (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), (gpointer)info); {#if DEBUG > 5 printf( "when deleting, got a row of %d.\n", row ) ;#endif unclicked_ignore=TRUE; gtk_clist_remove (GTK_CLIST (lookup_widget (tm_globs->main_window, "message_clist")), row); gtk_text_set_point (GTK_TEXT(message_body), 0); gtk_text_forward_delete (GTK_TEXT(message_body), gtk_text_get_length (GTK_TEXT(message_body))); populate_attachment_clist (NULL); number=(char *)calloc (5, sizeof(char)); snprintf (number, 5, "%d", fl->unread); gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), fl->tree_item, 1, number); snprintf (number, 5, "%d", fl->total); gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), fl->tree_item, 2, number); snprintf (number, 5, "%d", trash->unread); gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), trash->tree_item, 1, number); snprintf (number, 5, "%d", trash->total); gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), trash->tree_item, 2, number); free (number); } } } message_selection_null() ; protect_unprotect_actions (FALSE); /* Now, redisplay the folder */#if DEBUG > 5 printf( "Redisplaying folder.\n" ) ;#endif folder_display( GTK_CLIST( lookup_widget( tm_globs->main_window, "message_clist" ) ), fl ) ; return ;}void msearch_callback (GtkWidget *widget, gpointer data){ GtkWidget *msearch_window=create_msearch_window(); gtk_widget_show (msearch_window);}voidmark_unread_callback (GtkWidget * widget, gpointer data){ GList *seek = NULL; msg_info *info = NULL; for (seek = message_get_selection (); seek; seek = seek->next) { info = seek->data; if (info) { Message *msg = info->msg; Folder *vfolder = folder_seek (folder_seek_by_name (msg->folder)); GtkWidget *folder_ctree = lookup_widget (tm_globs->main_window, "folder_tree"); char *number = (char *) calloc (5, sizeof (char)); if (info->msg->flags & MESSAGE_UNREAD) { msg->flags &=~ MESSAGE_UNREAD; vfolder->unread--; snprintf (number, 5, "%d", vfolder->unread); gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), vfolder->tree_item, 1, number); if (number) free (number); } else { msg->flags |= MESSAGE_UNREAD; vfolder->unread++; snprintf (number, 5, "%d", vfolder->unread); gtk_ctree_node_set_text (GTK_CTREE (folder_ctree), vfolder->tree_item, 1, number); if (number) free (number); } } } message_clist_reset_shading (lookup_widget (tm_globs->main_window, "message_clist"));}void send_to_html_callback (GtkWidget *widget, gpointer data) { int fd; GtkWidget *message_body=lookup_widget (tm_globs->main_window, "message_body"); char *body=gtk_editable_get_chars (GTK_EDITABLE(message_body), 0, -1); char *msg=strdup(body); char *browser = getenv ("BROWSER"); char *file = "/tmp/tradeclient/tmpmsg.html"; char *command; MimeType *tmpmtype = mime_type_search_ext ("html"); char *handler = NULL; char *orph ; if (tmpmtype) { handler = (char *)calloc (strlen (orph=cut_string(tmpmtype->handle, ' ', 1, 1)), sizeof (char)); free( orph ) ; sprintf (handler, "%s", orph=cut_string(tmpmtype->handle, ' ', 1, 1)); free( orph ) ; } if (browser) { command = (char *)calloc (strlen (browser) + 10 + strlen (file) + 2, sizeof (char)); sprintf (command, "%s %s &", browser, file); } else if (strlen (handler)) { command = (char *)calloc (strlen (handler) + 10 + strlen (file) + 2, sizeof (char)); sprintf (command, "%s %s &", handler, file); } else { command = (char *)calloc (strlen ("netscape") + 10 + strlen (file) + 2, sizeof (char)); sprintf (command, "netscape %s &", file); } if (handler) free (handler); g_free(body); mkdir ("/tmp/tradeclient", S_IREAD | S_IWRITE | S_IEXEC); fd=open ("/tmp/tradeclient/tmpmsg.html", O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR | S_IWUSR); if (fd<0) { perror ("Cannot open /tmp/tradeclient/tmpmsg.html"); return; } write (fd, msg, strlen (msg)); close (fd); if (command) { system (command); free (command); }}void delete_activate (GtkWidget *widget, gpointer data) { destroy_selected_message (widget, data); destroy_message_popup (widget, data);}void send_on_its_merry_way_stream (char *msg, char *type) { char *email, *first, *last; GtkWidget *window; GtkTree *tree; Header_Info *info; RecipSignalData *recip ; char *head; int hsize; if (!msg) { return; } if (!type) type=strdup ("Re:"); hsize=message_hsize (msg); head=(char *)calloc (hsize, sizeof (char)); memmove (head, msg, hsize); info=parse_header (head); free (head); recip = (RecipSignalData *)calloc( 1, sizeof(RecipSignalData) ) ; window=make_new_message_window (NULL, NULL); if (strcasecmp (type, "re:")==0) { tree=GTK_TREE (lw (window, "recip_tree")); if ((info->replyto)&&(strlen(info->replyto)>0)) { if (!parse_from_line (info->replyto, &email, &first, &last)) { if (email) free (email); if (first) free (first); if (last) free (last); if (!parse_from_line (info->from, &email, &first, &last)) { insert_warning ("Unable to parse from line\n"); if (email) free (email); if (first) free (first); if (last) free (last); return; } } } else { if (!parse_from_line (info->from, &email, &first, &last)) { insert_warning ("Unable to parse from line\n"); if (email) free (email); if (first) free (first); if (last) free (last); return; } } gtk_tree_clear_items (tree, 0, g_list_length (tree->children)); recip -> tree = tree ; recip -> email = email ; recip -> type = 0 ; new_message_window_add_recip( NULL, recip ) ;// TREY if (email) free (email); if (first) free (first); if (last) free (last); } if (info->subject) { if (strncasecmp (info->subject, type, strlen (type))==0) { gtk_entry_set_text (GTK_ENTRY (lw (window, "subject_entry")), info->subject); } else { email=(char *)calloc (strlen (info->subject) + 10, sizeof (char)); sprintf (email, "%s %s", type, info->subject); gtk_entry_set_text (GTK_ENTRY (lw (window, "subject_entry")), email); free (email); } } if (strcasecmp (type, "re:")==0 && tm_globs->flags & REPLY_NONE) return; if (tm_globs->flags & REPLY_QUOTED && strcasecmp (type, "re:")==0) { char *message ; GtkText *text=GTK_TEXT (lw (window, "body_textbox")); message = message_get_reply_quoted_stream( msg ) ; /* Please the new text into the compose message window. */ gtk_text_insert (text, NULL, NULL, NULL, message, -1); free (message); } else { GtkCList *clist=GTK_CLIST (lw (window, "attachment_clist")); AFS *afs;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -