SF.net SVN: geany: [1888] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue Sep 18 16:04:27 UTC 2007
Revision: 1888
http://geany.svn.sourceforge.net/geany/?rev=1888&view=rev
Author: ntrel
Date: 2007-09-18 09:04:22 -0700 (Tue, 18 Sep 2007)
Log Message:
-----------
Save and restore the current notebook page when quitting.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/keyfile.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-09-17 16:33:17 UTC (rev 1887)
+++ trunk/ChangeLog 2007-09-18 16:04:22 UTC (rev 1888)
@@ -1,3 +1,9 @@
+2007-09-18 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/keyfile.c:
+ Save and restore the current notebook page when quitting.
+
+
2007-09-17 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/build.h, src/plugindata.h, src/plugins.c:
Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c 2007-09-17 16:33:17 UTC (rev 1887)
+++ trunk/src/keyfile.c 2007-09-18 16:04:22 UTC (rev 1888)
@@ -55,6 +55,7 @@
static gchar *scribble_text = NULL;
static GPtrArray *session_files = NULL;
+static gint session_notebook_page;
static gint hpan_position;
static gint vpan_position;
@@ -88,54 +89,54 @@
static void save_session_files(GKeyFile *config)
{
- gint idx;
- gboolean have_session_files;
+ gint idx, npage;
gchar *tmp;
- gchar *entry = g_malloc(14);
+ gchar entry[14];
guint i = 0, j = 0, max;
- if (cl_options.load_session)
+ if (! cl_options.load_session)
+ return;
+
+ npage = gtk_notebook_get_current_page(GTK_NOTEBOOK(app->notebook));
+ g_key_file_set_integer(config, "files", "current_page", npage);
+
+ // store the filenames to reopen them the next time
+ max = gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook));
+ for (i = 0; i < max; i++)
{
- // store the filenames to reopen them the next time
- max = gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook));
- for(i = 0; i < max; i++)
+ idx = document_get_n_idx(i);
+ if (idx >= 0 && doc_list[idx].file_name)
{
- idx = document_get_n_idx(i);
- if (idx >= 0 && doc_list[idx].file_name)
- {
- gchar *fname;
- filetype *ft = doc_list[idx].file_type;
+ gchar *fname;
+ filetype *ft = doc_list[idx].file_type;
- if (ft == NULL) // can happen when saving a new file when quitting
- ft = filetypes[GEANY_FILETYPES_ALL];
- g_snprintf(entry, 13, "FILE_NAME_%d", j);
- fname = g_strdup_printf("%d:%d:%s", sci_get_current_position(doc_list[idx].sci),
- ft->uid, doc_list[idx].file_name);
- g_key_file_set_string(config, "files", entry, fname);
- g_free(fname);
- j++;
- }
+ if (ft == NULL) // can happen when saving a new file when quitting
+ ft = filetypes[GEANY_FILETYPES_ALL];
+ g_snprintf(entry, 13, "FILE_NAME_%d", j);
+ fname = g_strdup_printf("%d:%d:%s", sci_get_current_position(doc_list[idx].sci),
+ ft->uid, doc_list[idx].file_name);
+ g_key_file_set_string(config, "files", entry, fname);
+ g_free(fname);
+ j++;
}
- // if open filenames less than saved session files, delete existing entries in the list
- have_session_files = TRUE;
- i = j;
- while (have_session_files)
+ }
+ // if open filenames less than saved session files, delete existing entries in the list
+ i = j;
+ while (TRUE)
+ {
+ g_snprintf(entry, 13, "FILE_NAME_%d", i);
+ tmp = g_key_file_get_string(config, "files", entry, NULL);
+ if (tmp == NULL)
{
- g_snprintf(entry, 13, "FILE_NAME_%d", i);
- tmp = g_key_file_get_string(config, "files", entry, NULL);
- if (tmp == NULL)
- {
- have_session_files = FALSE;
- }
- else
- {
- g_key_file_remove_key(config, "files", entry, NULL);
- g_free(tmp);
- i++;
- }
+ break;
}
+ else
+ {
+ g_key_file_remove_key(config, "files", entry, NULL);
+ g_free(tmp);
+ i++;
+ }
}
- g_free(entry);
}
@@ -349,10 +350,12 @@
guint i;
gsize len = 0;
gboolean have_session_files;
- gchar *entry = g_malloc(14);
+ gchar entry[14];
gchar *tmp_string;
GError *error = NULL;
+ session_notebook_page = utils_get_setting_integer(config, "files", "current_page", -1);
+
recent_files = g_key_file_get_string_list(config, "files", "recent_files", &len, NULL);
if (recent_files != NULL)
{
@@ -380,7 +383,6 @@
g_ptr_array_add(session_files, tmp_string);
i++;
}
- g_free(entry);
}
@@ -652,6 +654,7 @@
}
+// open session files
gboolean configuration_open_files()
{
gint i;
@@ -723,8 +726,11 @@
document_colourise_new();
g_ptr_array_free(session_files, TRUE);
+
if (failure)
msgwin_status_add(_("Failed to load one or more session files."));
+ else if (session_notebook_page >= 0)
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), session_notebook_page);
return ret;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list