[gnome-latex: 120/205] Reopen files on startup: option in prefs



commit 1d2adb3e9bb0a7ecd678e4a58bbd6ad61adb73e7
Author: Sébastien Wilmet <sebastien wilmet gmail com>
Date:   Tue Nov 17 18:40:28 2009 +0100

    Reopen files on startup: option in prefs

 TODO        |  4 ++--
 src/main.c  |  5 +++--
 src/main.h  |  1 +
 src/prefs.c | 31 +++++++++++++++++++++++++++++++
 4 files changed, 37 insertions(+), 4 deletions(-)
---
diff --git a/TODO b/TODO
index 9d51d65..7937217 100644
--- a/TODO
+++ b/TODO
@@ -20,9 +20,9 @@ TODO LaTeXila
 
 [-] delete auxiliaries files on exit (*.aux, *.log, *.out, *.toc, ...)
 
-[-] remember the files opened at exit and reopen them at starting
+[x] remember the files opened at exit and reopen them on startup
        x do the main work
-       - add an option in the preferences
+       x add an option in the preferences
 
 [-] Documents menu
        - close all
diff --git a/src/main.c b/src/main.c
index 03c8be1..0f2338d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -312,8 +312,9 @@ main (int argc, char *argv[])
        if (! latexila.prefs.show_edit_toolbar)
                gtk_widget_hide (latexila.edit_toolbar);
 
-       /* open documents opened the last time */
-       for (int i = 0 ; i < latexila.prefs.nb_opened_docs ; i++)
+       /* reopen files on startup */
+       for (int i = 0 ; i < latexila.prefs.nb_opened_docs
+                       && latexila.prefs.reopen_files_on_startup ; i++)
        {
                gchar *path = latexila.prefs.list_opened_docs[i];
                gchar *uri = g_filename_to_uri (path, NULL, &error);
diff --git a/src/main.h b/src/main.h
index 9669049..015c5d5 100644
--- a/src/main.h
+++ b/src/main.h
@@ -93,6 +93,7 @@ typedef struct
        gchar                                   *file_browser_dir;
        gchar                                   **list_opened_docs;
        guint                                   nb_opened_docs;
+       gboolean                                reopen_files_on_startup;
 } preferences_t;
 
 typedef struct
diff --git a/src/prefs.c b/src/prefs.c
index d59e20d..b581d3e 100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -62,6 +62,7 @@ static gchar  *command_latex_         = COMMAND_LATEX;
 static gchar   *command_pdflatex_      = COMMAND_PDFLATEX;
 static gchar   *command_dvipdf_        = COMMAND_DVIPDF;
 static gchar   *command_dvips_         = COMMAND_DVIPS;
+static gboolean reopen_files_on_startup_ = TRUE;
 
 void
 load_preferences (preferences_t *prefs)
@@ -284,6 +285,16 @@ load_preferences (preferences_t *prefs)
        else
                prefs->nb_opened_docs = (guint) nb_opened_docs;
 
+       prefs->reopen_files_on_startup = g_key_file_get_boolean (key_file,
+                       PROGRAM_NAME, "reopen_files_on_startup", &error);
+       if (error != NULL)
+       {
+               print_warning ("%s", error->message);
+               prefs->reopen_files_on_startup = reopen_files_on_startup_;
+               g_error_free (error);
+               error = NULL;
+       }
+
        print_info ("load user preferences: OK");
        g_key_file_free (key_file);
 }
@@ -318,6 +329,8 @@ save_preferences (preferences_t *prefs)
                        prefs->file_browser_dir);
        g_key_file_set_string_list (key_file, PROGRAM_NAME, "list_opened_documents",
                        (const gchar **) prefs->list_opened_docs, prefs->nb_opened_docs);
+       g_key_file_set_boolean (key_file, PROGRAM_NAME, "reopen_files_on_startup",
+                       prefs->reopen_files_on_startup);
 
        /* set the keys that must be taken from the widgets */
        GdkWindowState flag = gdk_window_get_state (gtk_widget_get_window (
@@ -409,6 +422,7 @@ load_default_preferences (preferences_t *prefs)
        prefs->file_browser_dir = g_strdup (g_get_home_dir ());
        prefs->list_opened_docs = NULL;
        prefs->nb_opened_docs = 0;
+       prefs->reopen_files_on_startup = reopen_files_on_startup_;
 
        set_current_font_prefs (prefs);
 }
@@ -519,6 +533,13 @@ cb_pref_command_dvips (GtkEditable *editable, gpointer user_data)
        latexila.prefs.command_dvips = g_strdup (new_command);
 }
 
+static void
+cb_reopen_files_on_startup (GtkToggleButton *toggle_button, gpointer user_data)
+{
+       latexila.prefs.reopen_files_on_startup = gtk_toggle_button_get_active (toggle_button);
+}
+
+
 static void
 create_preferences (void)
 {
@@ -614,6 +635,16 @@ create_preferences (void)
 
        gtk_box_pack_start (GTK_BOX (content_area), table, TRUE, TRUE, 5);
 
+       /* reopen files on startup */
+       GtkWidget *reopen = gtk_check_button_new_with_label (
+                       _("Reopen files on startup"));
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (reopen),
+                       latexila.prefs.reopen_files_on_startup);
+       g_signal_connect (G_OBJECT (reopen), "toggled",
+                       G_CALLBACK (cb_reopen_files_on_startup), NULL);
+       gtk_box_pack_start (GTK_BOX (content_area), reopen, FALSE, FALSE, 5);
+
+
        gtk_widget_show_all (content_area);
 }
 


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