Changeset 1276

Show
Ignore:
Timestamp:
11/29/06 01:58:05
Author:
pvanhoof
Message:

A few tryouts

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bindings/python/tinymailui-gtk.override

    r1237 r1276  
    3030import gobject.GObject as PyGObject_Type 
    3131import gtk.Table as PyGtkTable_Type 
     32import gtk.Bin as PyGtkBin_Type 
     33import gtk.VBox as PyGtkVBox_Type 
    3234import gtk.ScrolledWindow as PyGtkScrolledWindow_Type 
    3335import gtk.TextBuffer as PyGtkTextBuffer_Type 
  • trunk/libtinymail-camel/tny-camel-mime-part.c

    r1240 r1276  
    278278                         || camel_content_type_is(dw->mime_type, "application", "x-inlinepgp-signed") 
    279279                         || 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)); 
    282282        } 
    283283 
  • trunk/libtinymailui-gtk/tny-gtk-msg-view.c

    r1235 r1276  
    6161struct _TnyGtkMsgViewPriv 
    6262{ 
    63         TnyMimePart *part
     63        TnyMimePart *part, *root_part
    6464        TnyHeaderView *headerview; 
    6565        GtkIconView *attachview; 
    6666        GtkWidget *attachview_sw; 
    6767        GList *unattached_views; 
    68  
    6968        gboolean display_one_body; 
    7069        gboolean display_html; 
     
    7271        gboolean display_attachments; 
    7372        gboolean display_rfc822; 
    74  
     73        gboolean first_attachment; 
    7574        TnyMimePartView *text_body_viewer; 
     75        GtkBox *kid; 
    7676}; 
    7777 
     
    7979{ 
    8080        gulong signal; 
    81         TnyMimePart *part
     81        TnyMimePart *part, *root_part
    8282} RealizePriv; 
    8383 
     
    332332tny_gtk_msg_view_create_new_inline_viewer_default (TnyMsgView *self) 
    333333{ 
    334         return tny_gtk_msg_view_new (); 
     334        TnyMsgView *retval = tny_gtk_msg_view_new (); 
     335        return retval; 
    335336} 
    336337 
     
    384385 
    385386        /* 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/*"))) 
    387389        { 
    388390                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); 
    391391 
    392392        /* 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)) 
    395394        { 
    396                 static gboolean first = TRUE; 
    397395                GtkTreeModel *model; 
    398396 
     
    400398                gtk_widget_show (GTK_WIDGET (priv->attachview)); 
    401399 
    402                 if (first) 
     400                if (priv->first_attachment) 
    403401                { 
    404402                        model = tny_gtk_attach_list_model_new (); 
    405403                        gtk_icon_view_set_model (priv->attachview, model); 
    406                         first = FALSE; 
     404                        priv->first_attachment = FALSE; 
    407405                } else { 
     406 
    408407                        model = gtk_icon_view_get_model (priv->attachview); 
    409408                        if (!model || !TNY_IS_LIST (model)) 
     
    435434 **/ 
    436435static 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)) 
     436tny_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)) 
    442439                { 
    443440                        TnyList *list = tny_simple_list_new (); 
     
    457454                        tny_gtk_msg_view_display_parts (TNY_MSG_VIEW (mpview), list); 
    458455                        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 
    459466                } else 
    460467                        tny_mime_part_view_set_part (mpview, part); 
     
    466473        RealizePriv *prv = user_data; 
    467474 
    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); 
    469476        g_signal_handler_disconnect (widget, prv->signal); 
    470477        g_object_unref (prv->part); 
     478        if (prv->root_part) 
     479                g_object_unref (G_OBJECT (prv->root_part)); 
    471480 
    472481        g_slice_free (RealizePriv, prv); 
     
    555564                                RealizePriv *prv = g_slice_new (RealizePriv); 
    556565                                prv->part = g_object_ref (part); 
     566                                prv->root_part = priv->part?g_object_ref (G_OBJECT (priv->part)):NULL; 
    557567                                prv->signal = g_signal_connect (G_OBJECT (mpview), 
    558568                                        "realize", G_CALLBACK (on_mpview_realize), prv); 
    559569                        } 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); 
    561571 
    562572                } 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); 
    564574                else if (!TNY_IS_GTK_ATTACHMENT_MIME_PART_VIEW (mpview))  
    565575                { 
    566576                        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); 
    568578                } 
    569579        } else if (!tny_mime_part_content_type_is (part, "multipart/*") && 
     
    751761{ 
    752762        TnyGtkMsgView *self = g_object_new (TNY_TYPE_GTK_MSG_VIEW, NULL); 
    753  
    754763        return TNY_MSG_VIEW (self); 
    755764} 
    756765 
     766static GtkWidget* 
     767get_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 
    757782static void 
    758783tny_gtk_msg_view_instance_init (GTypeInstance *instance, gpointer g_class) 
     
    760785        TnyGtkMsgView *self = (TnyGtkMsgView *)instance; 
    761786        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; 
    763791 
    764792        /* Defaults */ 
     
    768796        priv->display_rfc822 = TRUE; 
    769797        priv->display_one_body = FALSE; 
    770  
    771798        priv->text_body_viewer = NULL; 
    772  
     799        priv->first_attachment = TRUE; 
    773800        priv->unattached_views = NULL; 
    774801        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; 
    783803 
    784804        priv->headerview = tny_gtk_header_view_new (); 
     
    791811 
    792812        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); 
    798813        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->attachview_sw), 
    799814                                        GTK_SHADOW_NONE); 
    800815        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->attachview_sw), 
    801816                                        GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); 
    802  
    803817        priv->attachview = GTK_ICON_VIEW (gtk_icon_view_new ()); 
    804  
    805818        gtk_icon_view_set_selection_mode (priv->attachview, GTK_SELECTION_SINGLE); 
    806  
    807819        gtk_icon_view_set_text_column (priv->attachview, 
    808820                        TNY_GTK_ATTACH_LIST_MODEL_FILENAME_COLUMN); 
    809  
    810821        gtk_icon_view_set_pixbuf_column (priv->attachview, 
    811822                        TNY_GTK_ATTACH_LIST_MODEL_PIXBUF_COLUMN); 
    812  
    813823        gtk_icon_view_set_columns (priv->attachview, -1); 
    814824        gtk_icon_view_set_item_width (priv->attachview, 100); 
     
    816826 
    817827        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)); 
    820828        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)); 
    821832 
    822833        gtk_widget_show (GTK_WIDGET (vbox)); 
     
    826837        return; 
    827838} 
     839 
     840static void 
     841widget_size_request (GtkWidget *widget, GtkRequisition *requisition) 
     842{ 
     843        if (((GtkBin *) widget)->child) 
     844                gtk_widget_size_request (((GtkBin *) widget)->child, requisition); 
     845} 
     846 
     847static void 
     848widget_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 
    828856 
    829857static void 
     
    876904{ 
    877905        GObjectClass *object_class; 
     906        GtkWidgetClass *widget_class; 
    878907 
    879908        parent_class = g_type_class_peek_parent (class); 
    880909        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; 
    881914 
    882915        object_class->finalize = tny_gtk_msg_view_finalize; 
     
    892925 
    893926        g_type_class_add_private (object_class, sizeof (TnyGtkMsgViewPriv)); 
     927 
    894928 
    895929        return; 
     
    931965                }; 
    932966 
    933                 type = g_type_register_static (GTK_TYPE_SCROLLED_WINDOW
     967                type = g_type_register_static (GTK_TYPE_BIN
    934968                        "TnyGtkMsgView", 
    935969                        &info, 0); 
  • trunk/libtinymailui-gtk/tny-gtk-msg-view.h

    r1235 r1276  
    4444struct _TnyGtkMsgView 
    4545{ 
    46         GtkScrolledWindow parent; 
     46        GtkBin parent; 
    4747        GtkContainer *viewers; 
    4848}; 
     
    5050struct _TnyGtkMsgViewClass 
    5151{ 
    52         GtkScrolledWindowClass parent_class; 
     52        GtkBinClass parent_class; 
    5353 
    5454        /* virtual methods */