[gnome-latex: 13/205] change title of tabs



commit 4d76e222437fe4a26863c1b4967f236dd341c96a
Author: Sébastien Wilmet <sebastien wilmet gmail com>
Date:   Tue Aug 4 17:58:26 2009 +0200

    change title of tabs

 TODO            |  2 +-
 src/callbacks.c | 37 +++++++++++++++++++++++++++++++++++--
 2 files changed, 36 insertions(+), 3 deletions(-)
---
diff --git a/TODO b/TODO
index 0131a95..b9c8445 100644
--- a/TODO
+++ b/TODO
@@ -11,7 +11,7 @@ Jul 31, 2009 to Aug 7, 2009
        x new
        x close
        x tabs
-       - change title of tabs
+       x change title of tabs
        - tabs with close buttons
 
 [-] GtkSourceView
diff --git a/src/callbacks.c b/src/callbacks.c
index 4b913ea..93b6e95 100644
--- a/src/callbacks.c
+++ b/src/callbacks.c
@@ -12,6 +12,7 @@ static void create_document_in_new_tab (gchar *path, gchar *text, GtkWidget *lab
 static void save_as_dialog (void);
 static void file_save (void);
 static gboolean close_all (void);
+static void set_title (void);
 
 void
 cb_new (void)
@@ -69,7 +70,8 @@ cb_save (void)
                        if (docs.active->path == NULL)
                                save_as_dialog ();
 
-                       file_save();
+                       file_save ();
+                       set_title ();
                }
        }
 
@@ -210,14 +212,16 @@ void
 cb_text_changed (GtkWidget *widget, gpointer user_data)
 {
        if (docs.active != NULL)
+       {
                docs.active->saved = FALSE;
+               set_title ();
+       }
 }
 
 void
 cb_page_change (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data)
 {
        docs.active = g_list_nth_data (docs.all, page_num);
-       print_info ("switch-page: %d (%s)", page_num, docs.active->path);
 }
 
 /*****************************
@@ -326,3 +330,32 @@ close_all (void)
 
        return TRUE;
 }
+
+static void
+set_title (void)
+{
+       if (docs.active)
+       {
+               gchar *tmp;
+               gchar *title;
+
+               if (docs.active->path != NULL)
+                       tmp = g_path_get_basename (docs.active->path);
+               else
+                       tmp = g_strdup (_("New document"));
+
+               if (docs.active->saved)
+                       title = g_strdup (tmp);
+               else
+                       title = g_strdup_printf ("*%s", tmp);
+
+               g_free (tmp);
+
+               gint index = gtk_notebook_get_current_page (docs.notebook);
+               GtkWidget *child = gtk_notebook_get_nth_page (docs.notebook, index);
+               GtkLabel *label = GTK_LABEL (gtk_notebook_get_tab_label (docs.notebook, child));
+               gtk_label_set_text (label, title);
+
+               g_free (title);
+       }
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]