SF.net SVN: geany: [2057] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Nov 18 18:24:23 UTC 2007


Revision: 2057
          http://geany.svn.sourceforge.net/geany/?rev=2057&view=rev
Author:   eht16
Date:     2007-11-18 10:24:23 -0800 (Sun, 18 Nov 2007)

Log Message:
-----------
Apply patch from Bo Lorentsen to improve support for project session files (thank you).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/callbacks.c
    trunk/src/keyfile.c
    trunk/src/keyfile.h
    trunk/src/main.c
    trunk/src/project.c
    trunk/src/project.h

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-11-18 17:40:08 UTC (rev 2056)
+++ trunk/ChangeLog	2007-11-18 18:24:23 UTC (rev 2057)
@@ -9,6 +9,10 @@
    Disable use of non-ASCII characters for PHP parser, it caused
    problems when using with locales other than "C".
    Add missing line break characters in error messages in lregex.c.
+ * src/callbacks.c, src/keyfile.c, src/keyfile.h, src/main.c,
+   src/project.c, src/project.h:
+   Apply patch from Bo Lorentsen to improve support for project session
+   files (thank you).
 
 
 2007-11-17  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2007-11-18 17:40:08 UTC (rev 2056)
+++ trunk/src/callbacks.c	2007-11-18 18:24:23 UTC (rev 2057)
@@ -1871,7 +1871,7 @@
 on_project_close1_activate             (GtkMenuItem     *menuitem,
                                         gpointer         user_data)
 {
-	project_close();
+	project_close(TRUE);
 }
 
 

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2007-11-18 17:40:08 UTC (rev 2056)
+++ trunk/src/keyfile.c	2007-11-18 18:24:23 UTC (rev 2057)
@@ -698,6 +698,46 @@
 }
 
 
+/*
+ * Save current session in default configuration file
+ */
+void configuration_save_default_session()
+{
+	gchar *configfile = g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "geany.conf", NULL);
+	gchar *data;
+	GKeyFile *config = g_key_file_new();
+
+	g_key_file_load_from_file(config, configfile, G_KEY_FILE_NONE, NULL);
+
+	configuration_save_session_files(config);
+
+	// write the file
+	data = g_key_file_to_data(config, NULL, NULL);
+	utils_write_file(configfile, data);
+	g_free(data);
+
+	g_key_file_free(config);
+	g_free(configfile);
+}
+
+
+/*
+ * Only reload the session part of the default configuration
+ */
+void configuration_reload_default_session()
+{
+	gchar *configfile = g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "geany.conf", NULL);
+	GKeyFile *config = g_key_file_new();
+
+	g_key_file_load_from_file(config, configfile, G_KEY_FILE_NONE, NULL);
+
+	configuration_load_session_files(config);
+
+	g_key_file_free(config);
+	g_free(configfile);
+}
+
+
 gboolean configuration_load()
 {
 	gchar *configfile = g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "geany.conf", NULL);

Modified: trunk/src/keyfile.h
===================================================================
--- trunk/src/keyfile.h	2007-11-18 17:40:08 UTC (rev 2056)
+++ trunk/src/keyfile.h	2007-11-18 18:24:23 UTC (rev 2057)
@@ -31,6 +31,10 @@
 
 gboolean configuration_open_files();
 
+void configuration_reload_default_session();
+
+void configuration_save_default_session();
+
 void configuration_load_session_files(GKeyFile *config);
 
 void configuration_save_session_files(GKeyFile *config);

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2007-11-18 17:40:08 UTC (rev 2056)
+++ trunk/src/main.c	2007-11-18 18:24:23 UTC (rev 2057)
@@ -799,7 +799,7 @@
 		plugins_free();
 #endif
 	if (app->project != NULL)
-		project_close();
+		project_close(FALSE);
 
 	navqueue_free();
 	keybindings_free();

Modified: trunk/src/project.c
===================================================================
--- trunk/src/project.c	2007-11-18 17:40:08 UTC (rev 2056)
+++ trunk/src/project.c	2007-11-18 18:24:23 UTC (rev 2057)
@@ -42,6 +42,7 @@
 # include "win32.h"
 #endif
 #include "build.h"
+#include "document.h"
 
 
 ProjectPrefs project_prefs = {NULL};
@@ -299,9 +300,10 @@
 }
 
 
-void project_close()
+// open_default will make function reload default session files on close
+void project_close(gboolean open_default)
 {
-	//~ gint i, max = gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook));
+	gint i, max = gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook));
 	g_return_if_fail(app->project != NULL);
 
 	ui_set_statusbar(TRUE, _("Project \"%s\" closed."), app->project->name);
@@ -315,16 +317,21 @@
 	g_free(app->project);
 	app->project = NULL;
 
-/// TODO really close all tabs? maybe it should configurable
-/*
-	for(i = 0; i < max; i++)
+	// close all existing tabs first
+	for (i = 0; i < max; i++)
 	{
 		if (! document_remove(0))
 			break;
 	}
+
+	// after closing all tabs let's open the tabs found in the default config
+	if (open_default == TRUE)
+	{
+		configuration_reload_default_session();
+		configuration_open_files();
+	}
+
 	tm_workspace_update(TM_WORK_OBJECT(app->tm_workspace), TRUE, TRUE, FALSE);
-*/
-
 	update_ui();
 }
 
@@ -524,7 +531,7 @@
 			_("Do you want to close it before proceeding?"),
 			_("The '%s' project is already open. "), app->project->name))
 		{
-			project_close();
+			project_close(FALSE);
 			return TRUE;
 		}
 		else
@@ -844,7 +851,7 @@
 	g_return_val_if_fail(app->project == NULL && filename != NULL, FALSE);
 
 	config = g_key_file_new();
-	if (! g_key_file_load_from_file(config, filename, G_KEY_FILE_KEEP_COMMENTS, NULL))
+	if (! g_key_file_load_from_file(config, filename, G_KEY_FILE_NONE, NULL))
 	{
 		g_key_file_free(config);
 		return FALSE;
@@ -859,6 +866,9 @@
 	p->run_cmd = utils_get_setting_string(config, "project", "run_cmd", "");
 	p->file_patterns = g_key_file_get_string_list(config, "project", "file_patterns", NULL, NULL);
 
+	// save current (non-project) session (it could has been changed since program startup)
+	configuration_save_default_session();
+
 	// fetch session files too
 	configuration_load_session_files(config);
 
@@ -885,7 +895,7 @@
 	config = g_key_file_new();
 	// try to load an existing config to keep manually added comments
 	filename = utils_get_locale_from_utf8(p->file_name);
-	g_key_file_load_from_file(config, filename, G_KEY_FILE_KEEP_COMMENTS, NULL);
+	g_key_file_load_from_file(config, filename, G_KEY_FILE_NONE, NULL);
 
 	g_key_file_set_string(config, "project", "name", p->name);
 	g_key_file_set_string(config, "project", "base_path", p->base_path);

Modified: trunk/src/project.h
===================================================================
--- trunk/src/project.h	2007-11-18 17:40:08 UTC (rev 2056)
+++ trunk/src/project.h	2007-11-18 18:24:23 UTC (rev 2057)
@@ -55,7 +55,7 @@
 
 void project_save();
 
-void project_close();
+void project_close(gboolean open_default);
 
 void project_properties();
 


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