Changeset 1276
- Timestamp:
- 11/29/06 01:58:05
- Files:
-
- trunk/bindings/python/tinymailui-gtk.override (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-mime-part.c (modified) (1 diff)
- trunk/libtinymailui-gtk/tny-gtk-msg-view.c (modified) (19 diffs)
- trunk/libtinymailui-gtk/tny-gtk-msg-view.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/bindings/python/tinymailui-gtk.override
r1237 r1276 30 30 import gobject.GObject as PyGObject_Type 31 31 import gtk.Table as PyGtkTable_Type 32 import gtk.Bin as PyGtkBin_Type 33 import gtk.VBox as PyGtkVBox_Type 32 34 import gtk.ScrolledWindow as PyGtkScrolledWindow_Type 33 35 import gtk.TextBuffer as PyGtkTextBuffer_Type trunk/libtinymail-camel/tny-camel-mime-part.c
r1240 r1276 278 278 || camel_content_type_is(dw->mime_type, "application", "x-inlinepgp-signed") 279 279 || camel_content_type_is(dw->mime_type, "application", "x-inlinepgp-encrypted") 280 || ( camel_content_type_is (dw->mime_type, "text", "*")281 && camel_mime_part_get_filename(priv->part) == NULL));280 || ( /* camel_content_type_is (dw->mime_type, "text", "*") text/x-patch 281 && */ camel_mime_part_get_filename(priv->part) == NULL)); 282 282 } 283 283 trunk/libtinymailui-gtk/tny-gtk-msg-view.c
r1235 r1276 61 61 struct _TnyGtkMsgViewPriv 62 62 { 63 TnyMimePart *part ;63 TnyMimePart *part, *root_part; 64 64 TnyHeaderView *headerview; 65 65 GtkIconView *attachview; 66 66 GtkWidget *attachview_sw; 67 67 GList *unattached_views; 68 69 68 gboolean display_one_body; 70 69 gboolean display_html; … … 72 71 gboolean display_attachments; 73 72 gboolean display_rfc822; 74 73 gboolean first_attachment; 75 74 TnyMimePartView *text_body_viewer; 75 GtkBox *kid; 76 76 }; 77 77 … … 79 79 { 80 80 gulong signal; 81 TnyMimePart *part ;81 TnyMimePart *part, *root_part; 82 82 } RealizePriv; 83 83 … … 332 332 tny_gtk_msg_view_create_new_inline_viewer_default (TnyMsgView *self) 333 333 { 334 return tny_gtk_msg_view_new (); 334 TnyMsgView *retval = tny_gtk_msg_view_new (); 335 return retval; 335 336 } 336 337 … … 384 385 385 386 /* Inline message RFC822 */ 386 } else if (priv->display_rfc822 && tny_mime_part_content_type_is (part, "message/rfc822")) 387 } else if (priv->display_rfc822 && (tny_mime_part_content_type_is (part, "message/rfc822")|| 388 tny_mime_part_content_type_is (part, "multipart/*"))) 387 389 { 388 390 retval = TNY_MIME_PART_VIEW (tny_msg_view_create_new_inline_viewer (self)); 389 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (retval),390 GTK_POLICY_NEVER, GTK_POLICY_NEVER);391 391 392 392 /* Attachments */ 393 } else if (priv->display_attachments && tny_mime_part_get_content_type (part) && 394 tny_mime_part_is_attachment (part)) 393 } else if (priv->display_attachments && tny_mime_part_is_attachment (part)) 395 394 { 396 static gboolean first = TRUE;397 395 GtkTreeModel *model; 398 396 … … 400 398 gtk_widget_show (GTK_WIDGET (priv->attachview)); 401 399 402 if ( first)400 if (priv->first_attachment) 403 401 { 404 402 model = tny_gtk_attach_list_model_new (); 405 403 gtk_icon_view_set_model (priv->attachview, model); 406 first = FALSE;404 priv->first_attachment = FALSE; 407 405 } else { 406 408 407 model = gtk_icon_view_get_model (priv->attachview); 409 408 if (!model || !TNY_IS_LIST (model)) … … 435 434 **/ 436 435 static void 437 tny_mime_part_view_proxy_func_set_part (TnyMimePartView *mpview, TnyMimePart *part) 438 { 439 440 if (tny_mime_part_content_type_is (part, "message/rfc822") || 441 TNY_IS_GTK_MSG_VIEW (mpview)) 436 tny_mime_part_view_proxy_func_set_part (TnyMimePartView *mpview, TnyMimePart *part, TnyMimePart *root_part) 437 { 438 if (tny_mime_part_content_type_is (part, "message/rfc822") && TNY_IS_GTK_MSG_VIEW (mpview)) 442 439 { 443 440 TnyList *list = tny_simple_list_new (); … … 457 454 tny_gtk_msg_view_display_parts (TNY_MSG_VIEW (mpview), list); 458 455 g_object_unref (G_OBJECT (list)); 456 } else if (tny_mime_part_content_type_is (part, "multipart/*") && TNY_IS_GTK_MSG_VIEW (mpview)) 457 { 458 if (part != root_part) 459 { 460 TnyList *list = tny_simple_list_new (); 461 tny_mime_part_get_parts (part, list); 462 tny_gtk_msg_view_display_parts (TNY_MSG_VIEW (mpview), list); 463 g_object_unref (G_OBJECT (list)); 464 } 465 459 466 } else 460 467 tny_mime_part_view_set_part (mpview, part); … … 466 473 RealizePriv *prv = user_data; 467 474 468 tny_mime_part_view_proxy_func_set_part (TNY_MIME_PART_VIEW (widget), prv->part );475 tny_mime_part_view_proxy_func_set_part (TNY_MIME_PART_VIEW (widget), prv->part, prv->root_part); 469 476 g_signal_handler_disconnect (widget, prv->signal); 470 477 g_object_unref (prv->part); 478 if (prv->root_part) 479 g_object_unref (G_OBJECT (prv->root_part)); 471 480 472 481 g_slice_free (RealizePriv, prv); … … 555 564 RealizePriv *prv = g_slice_new (RealizePriv); 556 565 prv->part = g_object_ref (part); 566 prv->root_part = priv->part?g_object_ref (G_OBJECT (priv->part)):NULL; 557 567 prv->signal = g_signal_connect (G_OBJECT (mpview), 558 568 "realize", G_CALLBACK (on_mpview_realize), prv); 559 569 } else 560 tny_mime_part_view_proxy_func_set_part (mpview, part );570 tny_mime_part_view_proxy_func_set_part (mpview, part, priv->part); 561 571 562 572 } else if (TNY_IS_GTK_ATTACHMENT_MIME_PART_VIEW (mpview)) 563 tny_mime_part_view_proxy_func_set_part (mpview, part );573 tny_mime_part_view_proxy_func_set_part (mpview, part, priv->part); 564 574 else if (!TNY_IS_GTK_ATTACHMENT_MIME_PART_VIEW (mpview)) 565 575 { 566 576 priv->unattached_views = g_list_prepend (priv->unattached_views, mpview); 567 tny_mime_part_view_proxy_func_set_part (mpview, part );577 tny_mime_part_view_proxy_func_set_part (mpview, part, priv->root_part); 568 578 } 569 579 } else if (!tny_mime_part_content_type_is (part, "multipart/*") && … … 751 761 { 752 762 TnyGtkMsgView *self = g_object_new (TNY_TYPE_GTK_MSG_VIEW, NULL); 753 754 763 return TNY_MSG_VIEW (self); 755 764 } 756 765 766 static GtkWidget* 767 get_non_inline_container (TnyGtkMsgView *self, GtkBox *kid) 768 { 769 GtkWidget *widget = gtk_scrolled_window_new (NULL, NULL); 770 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (widget), 771 GTK_SHADOW_NONE); 772 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (widget), 773 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); 774 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (widget), 775 GTK_WIDGET (kid)); 776 777 gtk_widget_show (widget); 778 779 return widget; 780 } 781 757 782 static void 758 783 tny_gtk_msg_view_instance_init (GTypeInstance *instance, gpointer g_class) … … 760 785 TnyGtkMsgView *self = (TnyGtkMsgView *)instance; 761 786 TnyGtkMsgViewPriv *priv = TNY_GTK_MSG_VIEW_GET_PRIVATE (self); 762 GtkWidget *vbox = gtk_vbox_new (FALSE, 0); 787 GtkBox *vbox; 788 789 priv->kid = GTK_BOX (gtk_vbox_new (FALSE, 0)); 790 vbox = priv->kid; 763 791 764 792 /* Defaults */ … … 768 796 priv->display_rfc822 = TRUE; 769 797 priv->display_one_body = FALSE; 770 771 798 priv->text_body_viewer = NULL; 772 799 priv->first_attachment = TRUE; 773 800 priv->unattached_views = NULL; 774 801 priv->part = NULL; 775 776 gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (self), NULL); 777 gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (self), NULL); 778 779 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (self), 780 GTK_SHADOW_NONE); 781 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (self), 782 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); 802 priv->root_part = NULL; 783 803 784 804 priv->headerview = tny_gtk_header_view_new (); … … 791 811 792 812 priv->attachview_sw = gtk_scrolled_window_new (NULL, NULL); 793 794 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (self),795 GTK_SHADOW_NONE);796 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (self),797 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);798 813 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->attachview_sw), 799 814 GTK_SHADOW_NONE); 800 815 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->attachview_sw), 801 816 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); 802 803 817 priv->attachview = GTK_ICON_VIEW (gtk_icon_view_new ()); 804 805 818 gtk_icon_view_set_selection_mode (priv->attachview, GTK_SELECTION_SINGLE); 806 807 819 gtk_icon_view_set_text_column (priv->attachview, 808 820 TNY_GTK_ATTACH_LIST_MODEL_FILENAME_COLUMN); 809 810 821 gtk_icon_view_set_pixbuf_column (priv->attachview, 811 822 TNY_GTK_ATTACH_LIST_MODEL_PIXBUF_COLUMN); 812 813 823 gtk_icon_view_set_columns (priv->attachview, -1); 814 824 gtk_icon_view_set_item_width (priv->attachview, 100); … … 816 826 817 827 gtk_box_pack_start (GTK_BOX (vbox), priv->attachview_sw, FALSE, TRUE, 0); 818 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (self),819 GTK_WIDGET (vbox));820 828 gtk_container_add (GTK_CONTAINER (priv->attachview_sw), GTK_WIDGET (priv->attachview)); 829 830 /* Default is a non-online viewer */ 831 gtk_container_add (GTK_CONTAINER (self), get_non_inline_container (self, vbox)); 821 832 822 833 gtk_widget_show (GTK_WIDGET (vbox)); … … 826 837 return; 827 838 } 839 840 static void 841 widget_size_request (GtkWidget *widget, GtkRequisition *requisition) 842 { 843 if (((GtkBin *) widget)->child) 844 gtk_widget_size_request (((GtkBin *) widget)->child, requisition); 845 } 846 847 static void 848 widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation) 849 { 850 widget->allocation = *allocation; 851 852 if (((GtkBin *) widget)->child) 853 gtk_widget_size_allocate (((GtkBin *) widget)->child, allocation); 854 } 855 828 856 829 857 static void … … 876 904 { 877 905 GObjectClass *object_class; 906 GtkWidgetClass *widget_class; 878 907 879 908 parent_class = g_type_class_peek_parent (class); 880 909 object_class = (GObjectClass*) class; 910 911 widget_class = (GtkWidgetClass *) class; 912 widget_class->size_request = widget_size_request; 913 widget_class->size_allocate = widget_size_allocate; 881 914 882 915 object_class->finalize = tny_gtk_msg_view_finalize; … … 892 925 893 926 g_type_class_add_private (object_class, sizeof (TnyGtkMsgViewPriv)); 927 894 928 895 929 return; … … 931 965 }; 932 966 933 type = g_type_register_static (GTK_TYPE_ SCROLLED_WINDOW,967 type = g_type_register_static (GTK_TYPE_BIN, 934 968 "TnyGtkMsgView", 935 969 &info, 0); trunk/libtinymailui-gtk/tny-gtk-msg-view.h
r1235 r1276 44 44 struct _TnyGtkMsgView 45 45 { 46 Gtk ScrolledWindowparent;46 GtkBin parent; 47 47 GtkContainer *viewers; 48 48 }; … … 50 50 struct _TnyGtkMsgViewClass 51 51 { 52 Gtk ScrolledWindowClass parent_class;52 GtkBinClass parent_class; 53 53 54 54 /* virtual methods */
