[Xfce4-commits] <mousepad:matt/gtksourceview> Update statusbar filetype when notebook pages are changed.

Matthew Brush noreply at xfce.org
Thu Oct 6 23:18:13 CEST 2011


Updating branch refs/heads/matt/gtksourceview
         to ba38b4940b2998c30ba9bde6c707bf1c589cae0b (commit)
       from 82b6e834ddeea4be8bf901307e6e093bde24631c (commit)

commit ba38b4940b2998c30ba9bde6c707bf1c589cae0b
Author: Matthew Brush <mbrush at codebrainz.ca>
Date:   Mon Oct 3 22:33:51 2011 -0700

    Update statusbar filetype when notebook pages are changed.
    
    Note the FIXME in the comments, this will probably need some refactoring.

 mousepad/mousepad-statusbar.c |   31 +++++++++++++++++++++++++++++++
 mousepad/mousepad-statusbar.h |    3 +++
 mousepad/mousepad-window.c    |    8 +++++++-
 3 files changed, 41 insertions(+), 1 deletions(-)

diff --git a/mousepad/mousepad-statusbar.c b/mousepad/mousepad-statusbar.c
index 9ed0d94..a7da0f8 100644
--- a/mousepad/mousepad-statusbar.c
+++ b/mousepad/mousepad-statusbar.c
@@ -50,6 +50,7 @@ struct _MousepadStatusbar
   guint               overwrite_enabled : 1;
 
   /* extra labels in the statusbar */
+  GtkWidget          *language;
   GtkWidget          *position;
   GtkWidget          *overwrite;
 };
@@ -119,6 +120,16 @@ mousepad_statusbar_init (MousepadStatusbar *statusbar)
   separator = gtk_vseparator_new ();
   gtk_box_pack_start (GTK_BOX (box), separator, FALSE, FALSE, 0);
   gtk_widget_show (separator);
+  
+  /* language/filetype */
+  statusbar->language = gtk_label_new (_("Filetype: None"));
+  gtk_box_pack_start (GTK_BOX (box), statusbar->language, FALSE, TRUE, 0);
+  gtk_widget_show (statusbar->language);
+
+  /* separator */
+  separator = gtk_vseparator_new ();
+  gtk_box_pack_start (GTK_BOX (box), separator, FALSE, FALSE, 0);
+  gtk_widget_show (separator);
 
   /* line and column numbers */
   statusbar->position = gtk_label_new (NULL);
@@ -169,6 +180,26 @@ mousepad_statusbar_overwrite_clicked (GtkWidget         *widget,
 
 
 void
+mousepad_statusbar_set_language (MousepadStatusbar *statusbar,
+                                 GtkSourceLanguage *language)
+{
+  gchar *label;
+  
+  mousepad_return_if_fail (MOUSEPAD_IS_STATUSBAR (statusbar));
+  
+  if (language == NULL)
+      gtk_label_set_text (GTK_LABEL (statusbar->language), _("Filetype: None"));
+  else
+    {
+      label = g_strdup_printf (_("Filetype: %s"), gtk_source_language_get_name (language));
+      gtk_label_set_text (GTK_LABEL (statusbar->language), label);
+      g_free (label);
+    }
+}
+
+
+
+void
 mousepad_statusbar_set_cursor_position (MousepadStatusbar *statusbar,
                                         gint               line,
                                         gint               column,
diff --git a/mousepad/mousepad-statusbar.h b/mousepad/mousepad-statusbar.h
index c44b54e..8ebe7a6 100644
--- a/mousepad/mousepad-statusbar.h
+++ b/mousepad/mousepad-statusbar.h
@@ -41,6 +41,9 @@ void        mousepad_statusbar_set_cursor_position  (MousepadStatusbar *statusba
 void        mousepad_statusbar_set_overwrite        (MousepadStatusbar *statusbar,
                                                      gboolean           overwrite);
 
+void        mousepad_statusbar_set_language         (MousepadStatusbar *statusbar,
+                                                     GtkSourceLanguage *language);
+
 G_END_DECLS
 
 #endif /* !__MOUSEPAD_STATUSBAR_H__ */
diff --git a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c
index 4c5e33e..54a3520 100644
--- a/mousepad/mousepad-window.c
+++ b/mousepad/mousepad-window.c
@@ -1306,7 +1306,8 @@ mousepad_window_notebook_switch_page (GtkNotebook     *notebook,
                                       guint            page_num,
                                       MousepadWindow  *window)
 {
-  MousepadDocument *document;
+  MousepadDocument  *document;
+  GtkSourceLanguage *language;
 
   mousepad_return_if_fail (MOUSEPAD_IS_WINDOW (window));
   mousepad_return_if_fail (GTK_IS_NOTEBOOK (notebook));
@@ -1328,6 +1329,11 @@ mousepad_window_notebook_switch_page (GtkNotebook     *notebook,
 
       /* update the statusbar */
       mousepad_document_send_signals (window->active);
+      
+      /* set the filetype in the status bar 
+       * FIXME: this doesn't belong here */
+      language = gtk_source_buffer_get_language (GTK_SOURCE_BUFFER (window->active->buffer));
+      mousepad_statusbar_set_language (MOUSEPAD_STATUSBAR (window->statusbar), language);
     }
 }
 


More information about the Xfce4-commits mailing list