Use GtkSourceView for editor instead of GtkTextView
authorJose Dapena Paz <jdapena@igalia.com>
Sun, 10 May 2009 14:39:08 +0000 (16:39 +0200)
committerJose Dapena Paz <jdapena@igalia.com>
Sun, 10 May 2009 14:39:08 +0000 (16:39 +0200)
* configure.ac: add detection of GtkSourceView dependency for gnome.
* src/gnome/modest-msg-edit-window.c: use GtkSourceView instead of TextView.
  We also set a visible margin of 78 characters (good hint for using
  typical standards on writing mails). Also fix priority settings.
* src/gnome/ui/modest-msg-edit-window-ui.xml: remove formatting options.
* src/widgets/modest-gtkhtml-msg-view.c: only show the priority in a separate
  line for hildon 2.2.

configure.ac
src/gnome/modest-msg-edit-window.c
src/gnome/ui/modest-msg-edit-window-ui.xml
src/widgets/modest-gtkhtml-msg-view.c

index 0133311..a0662b0 100644 (file)
@@ -286,7 +286,7 @@ AC_SUBST(MAEMO_LAUNCHER_MODEST_LDFLAGS)
 
 have_easysetup=false
 if test "x$with_toolkit" == "xgtk"; then
-   PKG_CHECK_MODULES(MODEST_TOOLKIT,glib-2.0 >= 2.8 gtk+-2.0 >= 2.10 libnotify)
+   PKG_CHECK_MODULES(MODEST_TOOLKIT,glib-2.0 >= 2.8 gtk+-2.0 >= 2.10 libnotify gtksourceview-2.0)
    AC_DEFINE_UNQUOTED(MODEST_TOOLKIT_GTK, 1, ["Whether modest is being build for the gtk toolkit."])
    MODEST_TOOLKIT_DIR=gnome
 else
index 0103993..de5044a 100644 (file)
@@ -50,6 +50,7 @@
 #include <libgnomevfs/gnome-vfs.h>
 #include <tny-vfs-stream.h>
 #include <tny-gtk-text-buffer-stream.h>
+#include <gtksourceview/gtksourceview.h>
 
 static void  modest_msg_edit_window_class_init   (ModestMsgEditWindowClass *klass);
 static void  modest_msg_edit_window_init         (ModestMsgEditWindow *obj);
@@ -286,9 +287,17 @@ init_window (ModestMsgEditWindow *obj, const gchar* account)
        gtk_table_attach_defaults (GTK_TABLE(header_table), priv->subject_field,1,2,4,5);
        gtk_table_attach_defaults (GTK_TABLE(header_table), priv->attachments_view,1,2,5,6);
 
-       priv->msg_body = gtk_text_view_new ();
+       priv->msg_body = gtk_source_view_new ();
+       gtk_source_view_set_highlight_current_line (GTK_SOURCE_VIEW (priv->msg_body), TRUE);
+       gtk_source_view_set_right_margin_position (GTK_SOURCE_VIEW (priv->msg_body), 78);
+       gtk_source_view_set_show_right_margin (GTK_SOURCE_VIEW (priv->msg_body), TRUE);
        gtk_text_view_set_editable (GTK_TEXT_VIEW (priv->msg_body), TRUE);
        gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (priv->msg_body), GTK_WRAP_WORD_CHAR);
+
+       PangoFontDescription *font_desc;
+       font_desc = pango_font_description_from_string ("Monospace");
+       gtk_widget_modify_font (priv->msg_body, font_desc);
+       pango_font_description_free (font_desc);
        
        main_vbox = gtk_vbox_new  (FALSE, 0);
 
@@ -496,6 +505,12 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account,
                                             modest_msg_edit_toggle_action_entries,
                                             G_N_ELEMENTS (modest_msg_edit_toggle_action_entries),
                                             self);
+       gtk_action_group_add_radio_actions (action_group,
+                                           modest_msg_edit_priority_action_entries,
+                                           G_N_ELEMENTS (modest_msg_edit_priority_action_entries),
+                                           0,
+                                           G_CALLBACK (modest_ui_actions_msg_edit_on_change_priority),
+                                           self);
        gtk_ui_manager_insert_action_group (parent_priv->ui_manager, action_group, 0);
        g_object_unref (action_group);
 
index e5a2ca8..a4844d9 100644 (file)
       <menuitem name="ViewBccFieldMenu" action="ViewBccField"/>
     </menu>
 
-    <menu name="FormatMenu" action="Format">
-      <menuitem name="SelectFontMenu" action="SelectFont"/>
-<!--      <menuitem name="BulletedListMenu" action="ActionsBulletedList"/> -->
-      <menu name="AlignmentMenu" action="Alignment">
-         <menuitem name="AlignmentLeftMenu" action="AlignmentLeft"/>
-         <menuitem name="AlignmentCenterMenu" action="AlignmentCenter"/>
-         <menuitem name="AlignmentRightMenu" action="AlignmentRight"/>
-      </menu>
-      <separator/>
-      <menu name="FileFormatMenu" action="FileFormat">
-       <menuitem name="FileFormatPlainTextMenu" action="FileFormatPlainText"/>
-       <menuitem name="FileFormatFormattedTextMenu" action="FileFormatFormattedText"/>
-      </menu>
-    </menu>
-
     <menu name="AttachmentsMenu" action="Attachments">
       <menuitem name="AttachFileMenu" action="AttachFile"/>
       <menuitem name="InsertImageMenu" action="InsertImage"/>
 
   <toolbar name="ToolBar">
     <toolitem action="ToolbarSend"/>
-    <separator/>
-    <placeholder name="FontAttributes" />
-    <toolitem action="ActionsBold"/>
-    <toolitem action="ActionsItalics"/>
-    <placeholder name="FontColor" />
   </toolbar>
 
   <accelerator name="AccelZoomMinus" action="ZoomMinus"/>
index 469d6d7..4d40ed3 100644 (file)
@@ -238,16 +238,19 @@ struct _ModestGtkhtmlMsgViewPrivate {
        GtkWidget   *body_view;
        GtkWidget   *mail_header_view;
        GtkWidget   *attachments_view;
-       GtkWidget   *priority_icon;
 
        TnyMsg      *msg;
 
        /* embedded elements */
        GtkWidget   *headers_box;
-       GtkWidget   *priority_box;
        GtkWidget   *html_scroll;
        GtkWidget   *attachments_box;
 
+#ifdef MODEST_TOOLKIT_HILDON2
+       GtkWidget   *priority_box;
+       GtkWidget   *priority_icon;
+#endif
+
        /* internal adjustments for set_scroll_adjustments */
        GtkAdjustment *hadj;
        GtkAdjustment *vadj;
@@ -1144,7 +1147,8 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj)
 
        if (priv->mail_header_view)
                gtk_box_pack_start (GTK_BOX(priv->headers_box), priv->mail_header_view, FALSE, FALSE, 0);
-       
+
+#ifdef MODEST_TOOLKIT_HILDON2
        priv->priority_icon = gtk_image_new ();
        gtk_misc_set_alignment (GTK_MISC (priv->priority_icon), 0.0, 0.5);
        if (priv->priority_icon) {
@@ -1156,7 +1160,7 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj)
                                                                   
                gtk_widget_hide_all (priv->priority_box);
        }
-
+#endif
        if (priv->attachments_view) {
 #ifndef MODEST_TOOLKIT_HILDON2
                gchar *att_label = g_strconcat (_("mcen_me_viewer_attachments"), ":", NULL);
@@ -1690,7 +1694,9 @@ set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg)
                modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), NULL);
                gtk_widget_hide_all (priv->mail_header_view);
                gtk_widget_hide_all (priv->attachments_box);
+#ifdef MODEST_TOOKIT_HILDON2
                gtk_widget_hide_all (priv->priority_box);
+#endif
                gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
                tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
                gtk_widget_queue_resize (GTK_WIDGET(self));
@@ -1741,11 +1747,15 @@ set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg)
        set_priority (self, tny_header_get_flags (header));
 
        gtk_widget_show (priv->body_view);
+#ifdef MODEST_TOOLKIT_HILDON2
        gtk_widget_set_no_show_all (priv->priority_box, TRUE);
+#endif
        gtk_widget_set_no_show_all (priv->attachments_box, TRUE);
        gtk_widget_show_all (priv->mail_header_view);
        gtk_widget_set_no_show_all (priv->attachments_box, FALSE);
+#ifdef MODEST_TOOLKIT_HILDON2
        gtk_widget_set_no_show_all (priv->priority_box, FALSE);
+#endif
        gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
        gtk_widget_queue_resize (GTK_WIDGET(self));
        gtk_widget_queue_draw (GTK_WIDGET(self));
@@ -1797,7 +1807,9 @@ set_header (ModestGtkhtmlMsgView *self, TnyHeader *header)
        modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), NULL);
        gtk_widget_show_all (priv->mail_header_view);
        gtk_widget_hide_all (priv->attachments_box);
+#ifdef MODEST_TOOLKIT_HILDON2
        gtk_widget_hide_all (priv->priority_box);
+#endif
        gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
        tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
        gtk_widget_queue_resize (GTK_WIDGET(self));
@@ -1868,15 +1880,17 @@ static void
 set_priority (ModestGtkhtmlMsgView *self, TnyHeaderFlags flags)
 {
        ModestGtkhtmlMsgViewPrivate *priv;
-       TnyHeaderFlags priority_flags;
-       gboolean show_priority = FALSE;
 
        g_return_if_fail (MODEST_IS_GTKHTML_MSG_VIEW (self));
        priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (self);
 
        modest_mail_header_view_set_priority (MODEST_MAIL_HEADER_VIEW (priv->mail_header_view), flags);
-       priority_flags = flags & TNY_HEADER_FLAG_PRIORITY_MASK;
 
+#ifdef MODEST_TOOLKIT_HILDON2
+       gboolean show_priority = FALSE;
+       TnyHeaderFlags priority_flags;
+
+       priority_flags = flags & TNY_HEADER_FLAG_PRIORITY_MASK;
        if (priority_flags == TNY_HEADER_FLAG_HIGH_PRIORITY) {
                show_priority = TRUE;
                gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), MODEST_HEADER_ICON_HIGH, GTK_ICON_SIZE_MENU);
@@ -1885,7 +1899,6 @@ set_priority (ModestGtkhtmlMsgView *self, TnyHeaderFlags flags)
                gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), MODEST_HEADER_ICON_LOW, GTK_ICON_SIZE_MENU);
        }
 
-#ifdef MODEST_TOOLKIT_HILDON2
        if (show_priority && MODEST_IS_COMPACT_MAIL_HEADER_VIEW (priv->mail_header_view)) {
                gtk_widget_show_all  (priv->priority_box);
        } else {