📄 imap-window-callbacks.c
字号:
/* TradeClient <http://tradeclient.sourceforge.net> * $Id: imap-window-callbacks.c,v 1.7 2001/03/20 22:19:33 ttabner Exp $ * * Copyright (C) 1999-2000 Bynari Inc. * Copyright (C) 2001 Project TradeClient * * LGPL * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Library General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library * General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include <gtk/gtk.h>#include "imap-window-callbacks.h"gbooleanon_imap_window_delete_event (GtkWidget * widget, GdkEvent * event, gpointer user_data){ return FALSE;}voidon_imap_window_destroy (GtkObject * object, gpointer user_data){ ImapInfo *imapinfo = user_data; char *mailbox; if (imapinfo->mailbox) { mailbox = strdup (imapinfo->mailbox); } else { mailbox = (char *) calloc (4096, sizeof (char)); snprintf (mailbox, 4094, "{%s:%d/imap/user=\"%s\"}%s", imapinfo->acct->phost, imapinfo->acct->pport, imapinfo->acct->puser, "INBOX"); } mmpopid = imapinfo->acct->id; tm_globs->imap_node = imapinfo->node; mail_expunge (tm_globs->mailstream); mail_ping (tm_globs->mailstream); mail_status (tm_globs->mailstream, mailbox, SA_UNSEEN | SA_MESSAGES); free (mailbox); tm_globs->imap_window = NULL;}voidon_print_activate (GtkMenuItem * menuitem, gpointer user_data){ GtkWidget *clist = lookup_widget (GTK_WIDGET (menuitem), "imap_clist"); char *header, *body, *msg; int length; int row; ImapMsg *imapmsg = NULL; GList *seek; if (!GTK_CLIST (clist)->selection) return; for (seek = GTK_CLIST (clist)->selection; seek; seek = seek->next) { row = (int) seek->data; imapmsg = gtk_clist_get_row_data (GTK_CLIST (clist), row); if (!imapmsg) return; header = mail_fetchheader (tm_globs->mailstream, imapmsg->msgno); body = mail_fetchtext (tm_globs->mailstream, imapmsg->msgno); length = strlen (header) + strlen (body) + 2; msg = (char *) malloc (length * sizeof (char)); msg = strncpy (msg, header, length); msg = strncat (msg, body, length); if (!msg) break; insert_message ("Printing Message... "); message_print_stream (msg); free (msg); } insert_message ("Done!\n");}voidon_close_activate (GtkMenuItem * menuitem, gpointer user_data){ GtkWidget *window = tm_globs->imap_window; tm_globs->imap_window = NULL; gtk_widget_destroy (window);}voidon_exit_activate (GtkMenuItem * menuitem, gpointer user_data){ puma_die (tm_globs->imap_window, user_data);}voidon_reply_activate (GtkMenuItem * menuitem, gpointer user_data){ GtkWidget *clist = user_data; int row; ImapMsg *imapmsg = NULL; char *header, *body, *msg; int length; GList *seek; if (!GTK_CLIST (clist)->selection) return; for (seek = GTK_CLIST (clist)->selection; seek; seek = seek->next) { row = (int) seek->data; imapmsg = gtk_clist_get_row_data (GTK_CLIST (clist), row); if (!imapmsg) return; header = mail_fetchheader (tm_globs->mailstream, imapmsg->msgno); body = mail_fetchtext (tm_globs->mailstream, imapmsg->msgno); length = strlen (header) + strlen (body) + 2; msg = (char *) malloc (length * sizeof (char)); msg = strncpy (msg, header, length); msg = strncat (msg, body, length); send_on_its_merry_way_stream (msg, "Re:"); }}voidon_forward_activate (GtkMenuItem * menuitem, gpointer user_data){ GtkWidget *clist = user_data; int row; ImapMsg *imapmsg = NULL; char *header, *body, *msg; int length; GList *seek; if (!GTK_CLIST (clist)->selection) return; for (seek = GTK_CLIST (clist)->selection; seek; seek = seek->next) { row = (int) seek->data; imapmsg = gtk_clist_get_row_data (GTK_CLIST (clist), row); if (!imapmsg) return; header = mail_fetchheader (tm_globs->mailstream, imapmsg->msgno); body = mail_fetchtext (tm_globs->mailstream, imapmsg->msgno); length = strlen (header) + strlen (body) + 2; msg = (char *) malloc (length * sizeof (char)); msg = strncpy (msg, header, length); msg = strncat (msg, body, length); send_on_its_merry_way_stream (msg, "Fwd:"); }}voidon_delete_activate (GtkMenuItem * menuitem, gpointer user_data){ GtkWidget *clist = user_data; GList *del; int row; ImapMsg *imapmsg = NULL; char *msg; GList *dellist = NULL; if (!GTK_CLIST (clist)->selection) return; gtk_clist_freeze (GTK_CLIST (clist)); for (del = GTK_CLIST (clist)->selection; del; del = del->next) { row = (int) del->data; imapmsg = gtk_clist_get_row_data (GTK_CLIST (clist), row); dellist = g_list_append (dellist, imapmsg); } for (del = dellist; del; del = del->next) { imapmsg = del->data; msg = (char *) calloc (5, sizeof (char)); snprintf (msg, 5, "%d", abs (imapmsg->msgno)); mail_setflag (tm_globs->mailstream, msg, "\\DELETED"); free (msg); row = gtk_clist_find_row_from_data (GTK_CLIST (clist), (gpointer) imapmsg); gtk_clist_remove (GTK_CLIST (clist), row); } gtk_clist_thaw (GTK_CLIST (clist));}voidon_b_reply_clicked (GtkButton * button, gpointer user_data){ GtkWidget *clist = lookup_widget (GTK_WIDGET (button), "imap_clist"); int row; ImapMsg *imapmsg = NULL; char *header, *body, *msg; int length; GList *seek; if (!GTK_CLIST (clist)->selection) return; for (seek = GTK_CLIST (clist)->selection; seek; seek = seek->next) { row = (int) seek->data; imapmsg = gtk_clist_get_row_data (GTK_CLIST (clist), row); if (!imapmsg) return; header = mail_fetchheader (tm_globs->mailstream, imapmsg->msgno); body = mail_fetchtext (tm_globs->mailstream, imapmsg->msgno); length = strlen (header) + strlen (body) + 2; msg = (char *) malloc (length * sizeof (char)); msg = strncpy (msg, header, length); msg = strncat (msg, body, length); send_on_its_merry_way_stream (msg, "Re:"); }}voidon_b_forward_clicked (GtkButton * button, gpointer user_data){ GtkWidget *clist = lookup_widget (GTK_WIDGET (button), "imap_clist"); int row; ImapMsg *imapmsg = NULL; char *header, *body, *msg; int length; GList *seek; if (!GTK_CLIST (clist)->selection) return; for (seek = GTK_CLIST (clist)->selection; seek; seek = seek->next) { row = (int) seek->data; imapmsg = gtk_clist_get_row_data (GTK_CLIST (clist), row); if (!imapmsg) return; header = mail_fetchheader (tm_globs->mailstream, imapmsg->msgno); body = mail_fetchtext (tm_globs->mailstream, imapmsg->msgno); length = strlen (header) + strlen (body) + 2; msg = (char *) malloc (length * sizeof (char)); msg = strncpy (msg, header, length); msg = strncat (msg, body, length); send_on_its_merry_way_stream (msg, "Fwd:"); }}voidon_b_delete_clicked (GtkButton * button, gpointer user_data){ GtkWidget *clist = lookup_widget (GTK_WIDGET (button), "imap_clist"); GList *del; int row; ImapMsg *imapmsg = NULL; char *msg; GList *dellist = NULL; if (!GTK_CLIST (clist)->selection) return; gtk_clist_freeze (GTK_CLIST (clist)); for (del = GTK_CLIST (clist)->selection; del; del = del->next) { row = (int) del->data; imapmsg = gtk_clist_get_row_data (GTK_CLIST (clist), row); dellist = g_list_append (dellist, imapmsg); } for (del = dellist; del; del = del->next) { imapmsg = del->data; msg = (char *) calloc (5, sizeof (char)); snprintf (msg, 5, "%d", abs (imapmsg->msgno)); mail_setflag (tm_globs->mailstream, msg, "\\DELETED"); free (msg); row = gtk_clist_find_row_from_data (GTK_CLIST (clist), (gpointer) imapmsg); gtk_clist_remove (GTK_CLIST (clist), row); } gtk_clist_thaw (GTK_CLIST (clist));}voidon_imap_clist_click_column (GtkCList * clist, gint column, gpointer user_data){ if (GTK_CLIST (clist)->sort_type == GTK_SORT_ASCENDING) { GTK_CLIST (clist)->sort_type = GTK_SORT_DESCENDING; } else { GTK_CLIST (clist)->sort_type = GTK_SORT_ASCENDING; } gtk_clist_freeze (GTK_CLIST (clist)); gtk_clist_set_sort_column (GTK_CLIST (clist), column); if (column == 2) { gtk_clist_set_compare_func (GTK_CLIST (clist), (GtkCListCompareFunc) new_clist_sort_func); } else { gtk_clist_set_compare_func (GTK_CLIST (clist), (GtkCListCompareFunc) NULL); } gtk_clist_sort (GTK_CLIST (clist)); gtk_clist_thaw (GTK_CLIST (clist));}voidon_imap_clist_select_row (GtkWidget * widget, GdkEventButton * event, gpointer data){ ImapMsg *imapmsg; int row, column; char *header = NULL, *body = NULL; int length;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -