📄 digest-window.c
字号:
/* TradeClient <http://tradeclient.sourceforge.net> * $Id: digest-window.c,v 1.5 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 "puma.h"void digest_window_destroy (GtkWidget *widget, GdkEvent *event, gpointer data) { attachments_destroy (gtk_clist_get_row_data (GTK_CLIST (lookup_widget (widget, "message_clist")), 0)); if (data) free (data); gtk_widget_destroy (lookup_widget (widget, "digest_window"));}void digest_window_close (GtkWidget *widget, gpointer data) { digest_window_destroy (widget, NULL, data);}void digest_window_row_selected (GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { char *insertable=NULL; char *stream=(char *)data; Attachment *att=gtk_clist_get_row_data (GTK_CLIST (clist), row); if (event->type==5 && event->button==1) { } if (event->type==7 && event->button==1) { insertable=mime_get_attachment (stream, att); gtk_text_set_point (GTK_TEXT(lookup_widget (clist, "body")), 0); gtk_text_forward_delete (GTK_TEXT(lookup_widget (clist, "body")), gtk_text_get_length (GTK_TEXT(lookup_widget (clist, "body")))); gtk_text_insert (GTK_TEXT(lookup_widget (clist, "body")), NULL, NULL, NULL, insertable, -1); gtk_text_set_point (GTK_TEXT (lookup_widget (clist, "body")), 0); free (insertable); }}GtkWidget* create_digest_window (void) { GtkWidget *digest_window; GtkWidget *dialog_vbox1; GtkWidget *frame1; GtkWidget *vpaned1; GtkWidget *scrolledwindow2; GtkWidget *message_clist; GtkWidget *label1; GtkWidget *label2; GtkWidget *label3; GtkWidget *scrolledwindow1; GtkWidget *body; GtkWidget *dialog_action_area1; GtkWidget *close_button; digest_window = gtk_dialog_new (); gtk_widget_set_name (digest_window, "digest_window"); gtk_object_set_data (GTK_OBJECT (digest_window), "digest_window", digest_window); gtk_window_set_title (GTK_WINDOW (digest_window), _("Multipart/Digest")); gtk_window_set_default_size (GTK_WINDOW (digest_window), 562, 374); gtk_window_set_policy (GTK_WINDOW (digest_window), TRUE, TRUE, TRUE); dialog_vbox1 = GTK_DIALOG (digest_window)->vbox; gtk_widget_set_name (dialog_vbox1, "dialog_vbox1"); gtk_object_set_data (GTK_OBJECT (digest_window), "dialog_vbox1", dialog_vbox1); gtk_widget_show (dialog_vbox1); frame1 = gtk_frame_new (NULL); gtk_widget_set_name (frame1, "frame1"); gtk_widget_ref (frame1); gtk_object_set_data_full (GTK_OBJECT (digest_window), "frame1", frame1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (frame1); gtk_box_pack_start (GTK_BOX (dialog_vbox1), frame1, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (frame1), 2); vpaned1 = gtk_vpaned_new (); gtk_widget_set_name (vpaned1, "vpaned1"); gtk_widget_ref (vpaned1); gtk_object_set_data_full (GTK_OBJECT (digest_window), "vpaned1", vpaned1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (vpaned1); gtk_container_add (GTK_CONTAINER (frame1), vpaned1); gtk_container_set_border_width (GTK_CONTAINER (vpaned1), 2); gtk_paned_set_handle_size (GTK_PANED (vpaned1), 8); gtk_paned_set_gutter_size (GTK_PANED (vpaned1), 9); gtk_paned_set_position (GTK_PANED (vpaned1), 135); scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow2, "scrolledwindow2"); gtk_widget_ref (scrolledwindow2); gtk_object_set_data_full (GTK_OBJECT (digest_window), "scrolledwindow2", scrolledwindow2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (scrolledwindow2); gtk_container_add (GTK_CONTAINER (vpaned1), scrolledwindow2); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); message_clist = gtk_clist_new (3); gtk_widget_set_name (message_clist, "message_clist"); gtk_widget_ref (message_clist); gtk_object_set_data_full (GTK_OBJECT (digest_window), "message_clist", message_clist, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (message_clist); gtk_container_add (GTK_CONTAINER (scrolledwindow2), message_clist); gtk_clist_set_column_width (GTK_CLIST (message_clist), 0, 149); gtk_clist_set_column_width (GTK_CLIST (message_clist), 1, 279); gtk_clist_set_column_width (GTK_CLIST (message_clist), 2, 80); gtk_clist_column_titles_show (GTK_CLIST (message_clist)); label1 = gtk_label_new (_("Sender")); gtk_widget_set_name (label1, "label1"); gtk_widget_ref (label1); gtk_object_set_data_full (GTK_OBJECT (digest_window), "label1", label1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label1); gtk_clist_set_column_widget (GTK_CLIST (message_clist), 0, label1); label2 = gtk_label_new (_("Subject")); gtk_widget_set_name (label2, "label2"); gtk_widget_ref (label2); gtk_object_set_data_full (GTK_OBJECT (digest_window), "label2", label2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label2); gtk_clist_set_column_widget (GTK_CLIST (message_clist), 1, label2); label3 = gtk_label_new (_("Size")); gtk_widget_set_name (label3, "label3"); gtk_widget_ref (label3); gtk_object_set_data_full (GTK_OBJECT (digest_window), "label3", label3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (label3); gtk_clist_set_column_widget (GTK_CLIST (message_clist), 2, label3); scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_name (scrolledwindow1, "scrolledwindow1"); gtk_widget_ref (scrolledwindow1); gtk_object_set_data_full (GTK_OBJECT (digest_window), "scrolledwindow1", scrolledwindow1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (scrolledwindow1); gtk_container_add (GTK_CONTAINER (vpaned1), scrolledwindow1); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); body = gtk_text_new (NULL, NULL); gtk_widget_set_name (body, "body"); gtk_widget_ref (body); gtk_object_set_data_full (GTK_OBJECT (digest_window), "body", body, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (body); gtk_container_add (GTK_CONTAINER (scrolledwindow1), body); dialog_action_area1 = GTK_DIALOG (digest_window)->action_area; gtk_widget_set_name (dialog_action_area1, "dialog_action_area1"); gtk_object_set_data (GTK_OBJECT (digest_window), "dialog_action_area1", dialog_action_area1); gtk_widget_show (dialog_action_area1); gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 10); close_button = gtk_button_new_with_label (_("Close")); gtk_widget_set_name (close_button, "close_button"); gtk_widget_ref (close_button); gtk_object_set_data_full (GTK_OBJECT (digest_window), "close_button", close_button, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show (close_button); gtk_box_pack_start (GTK_BOX (dialog_action_area1), close_button, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS (close_button, GTK_CAN_DEFAULT); gtk_widget_grab_focus (close_button); gtk_widget_grab_default (close_button); return digest_window;}void digest_window_create (Attachment *att) { GtkWidget *widget=create_digest_window (); GtkCList *clist=GTK_CLIST (lookup_widget (widget, "message_clist")); Attachment *node=att; char *cl_data[3]; int row; gtk_signal_connect (GTK_OBJECT (widget), "delete_event", GTK_SIGNAL_FUNC (digest_window_destroy), NULL); gtk_signal_connect (GTK_OBJECT (lookup_widget (widget, "close")), "clicked", GTK_SIGNAL_FUNC (digest_window_close), NULL); gtk_signal_connect (GTK_OBJECT (lookup_widget (widget, "message_clist")), "select_row", GTK_SIGNAL_FUNC (digest_window_row_selected), NULL); // Need the message passed to this function? clip_handle_editable (lw (widget, "body")); while (node) { cl_data[0]=NULL;//=Sender; cl_data[1]=NULL;//=Subject; cl_data[2]=NULL;//=Date; row=gtk_clist_append (clist, cl_data); gtk_clist_set_row_data (clist, row, (node)); node=node->next; } gtk_widget_show (widget);}void digest_window_create_stream (char *stream) { GtkWidget *widget=create_digest_window (); GtkCList *clist=GTK_CLIST (lookup_widget (widget, "message_clist")); /* generate an attachment list called att */ Attachment *node=(Attachment *)calloc (1, sizeof (Attachment *)); Attachment *tmpatt; char *cl_data[3]; char *tmp; int row; node->name=strdup ("dummyatt"); tmp=mime_process (stream, node, 0); if (tmp) free (tmp); gtk_signal_connect (GTK_OBJECT (widget), "delete_event", GTK_SIGNAL_FUNC (digest_window_destroy), stream); gtk_signal_connect (GTK_OBJECT (lookup_widget (widget, "close_button")), "clicked", GTK_SIGNAL_FUNC (digest_window_close), stream); gtk_signal_connect (GTK_OBJECT (lookup_widget (widget, "message_clist")), "select_row", GTK_SIGNAL_FUNC (digest_window_row_selected), stream); // Need the message passed to this function? clip_handle_editable (lw (widget, "body")); cl_data[2]=(char *)calloc (20, sizeof (char));//=Size; tmpatt=node->next; free (node->name); free (node); node=tmpatt; while (node) { cl_data[0]=node->name; cl_data[1]=node->fname; snprintf (cl_data[2], 19, "%lu", node->length); row=gtk_clist_append (clist, cl_data); gtk_clist_set_row_data (clist, row, (node)); node=node->next; } free (cl_data[2]); gtk_widget_show (widget);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -