SF.net SVN: geany:[5036] branches/sm
statc at users.sourceforge.net
statc at xxxxx
Thu Jun 17 14:53:19 UTC 2010
Revision: 5036
http://geany.svn.sourceforge.net/geany/?rev=5036&view=rev
Author: statc
Date: 2010-06-17 14:53:18 +0000 (Thu, 17 Jun 2010)
Log Message:
-----------
Apply patch from Dimitar Zhekov to improve saving of project configuration files together with some refactoring.
* limit Project -> Properties to saving the preferences only;
* limit project_close() to saving the file list only;
* use enums instead of separate functions for saving particular types of settings.
Modified Paths:
--------------
branches/sm/ChangeLog.sm
branches/sm/src/document.c
branches/sm/src/keyfile.c
branches/sm/src/keyfile.h
branches/sm/src/main.c
branches/sm/src/prefs.c
branches/sm/src/project.c
branches/sm/src/project.h
branches/sm/src/ui_utils.c
Modified: branches/sm/ChangeLog.sm
===================================================================
--- branches/sm/ChangeLog.sm 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/ChangeLog.sm 2010-06-17 14:53:18 UTC (rev 5036)
@@ -1,3 +1,12 @@
+2010-06-16 Eugene Arshinov <earshinov(at)gmail(dot)com>
+
+ * src/document.c, src/keyfile.c, src/keyfile.h, src/main.c, src/prefs.c,
+ src/project.c, src/project.h src/ui_utils.c:
+ Apply patch from Dimitar Zhekov to improve saving of project
+ configuration files:
+ - limit Project -> Properties to saving the preferences only;
+ - limit project_close() to saving the file list only.
+
2010-05-31 Eugene Arshinov <earshinov(at)gmail(dot)com>
* src/callbacks.c, src/document.c, src/document.h, src/keyfile.c,
Modified: branches/sm/src/document.c
===================================================================
--- branches/sm/src/document.c 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/src/document.c 2010-06-17 14:53:18 UTC (rev 5036)
@@ -1402,7 +1402,7 @@
document_open_file_full(NULL, filename, 0, FALSE, NULL, NULL, FALSE);
g_free(filename);
}
- configuration_save_recent_files();
+ configuration_save(GEANY_SETTINGS_RECENT_FILES);
g_strfreev(list);
}
@@ -1425,7 +1425,7 @@
{
document_open_file_full(NULL, item->data, 0, readonly, ft, forced_enc, FALSE);
}
- configuration_save_recent_files();
+ configuration_save(GEANY_SETTINGS_RECENT_FILES);
}
Modified: branches/sm/src/keyfile.c
===================================================================
--- branches/sm/src/keyfile.c 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/src/keyfile.c 2010-06-17 14:53:18 UTC (rev 5036)
@@ -368,12 +368,8 @@
}
-void configuration_save_dialog_prefs(void)
+static void save_dialog_prefs(GKeyFile *config)
{
- GKeyFile *config;
- gchar *configfile;
- open_config(&config, &configfile);
-
/* new settings should be added in init_pref_groups() */
settings_action(config, SETTING_WRITE);
@@ -521,9 +517,6 @@
g_key_file_set_string(config, "VTE", "last_dir", vte_info.dir);
}
#endif
-
- write_config(config, configfile);
- close_config(config, configfile);
}
@@ -578,7 +571,7 @@
}
-void configuration_save(void)
+void configuration_save(GeanySettingsTypes flags)
{
GKeyFile *config;
gchar *configfile;
@@ -587,49 +580,35 @@
/* this signal can be used e.g. to prepare any settings before Stash code reads them below */
g_signal_emit_by_name(geany_object, "save-settings", config);
- save_ui_prefs(config);
- project_save_prefs(config); /* save project filename, etc. */
+ if (flags & GEANY_SETTINGS_DIALOG)
+ save_dialog_prefs(config);
- if (cl_options.load_session)
- configuration_save_session_files(config);
+ if (flags & GEANY_SETTINGS_RUNTIME)
+ {
+ save_ui_prefs(config);
+ project_save_prefs(config); /* save project filename, etc. */
- write_config(config, configfile);
- close_config(config, configfile);
-}
+ if (cl_options.load_session)
+ configuration_save_session_files(config);
+ }
+ if (flags & GEANY_SETTINGS_RECENT_FILES)
+ {
+ load_recent_files(config, ui_prefs.recent_queue, "recent_files");
+ save_recent_files(config, ui_prefs.recent_queue, "recent_files");
+ }
-/* Write recent file names to geany.conf.
- * Clears `ui_prefs.recent_queue'. */
-void configuration_save_recent_files(void)
-{
- GKeyFile *config;
- gchar *configfile;
- open_config(&config, &configfile);
+ if (flags & GEANY_SETTINGS_RECENT_PROJECTS)
+ {
+ load_recent_files(config, ui_prefs.recent_projects_queue, "recent_projects");
+ save_recent_files(config, ui_prefs.recent_projects_queue, "recent_projects");
+ }
- load_recent_files(config, ui_prefs.recent_queue, "recent_files");
- save_recent_files(config, ui_prefs.recent_queue, "recent_files");
-
write_config(config, configfile);
close_config(config, configfile);
}
-/* Write recent project file names to geany.conf.
- * Clears `ui_prefs.recent_projects_queue'. */
-void configuration_save_recent_projects(void)
-{
- GKeyFile *config;
- gchar *configfile;
- open_config(&config, &configfile);
-
- load_recent_files(config, ui_prefs.recent_projects_queue, "recent_projects");
- save_recent_files(config, ui_prefs.recent_projects_queue, "recent_projects");
-
- write_config(config, configfile);
- close_config(config, configfile);
-}
-
-
/*
* Load session list from the given keyfile, and store it in the global
* session_files variable for later file loading
Modified: branches/sm/src/keyfile.h
===================================================================
--- branches/sm/src/keyfile.h 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/src/keyfile.h 2010-06-17 14:53:18 UTC (rev 5036)
@@ -29,6 +29,17 @@
extern GPtrArray *pref_groups;
+/* Flags for configuration_save() */
+typedef enum
+{
+ GEANY_SETTINGS_RUNTIME = 1,
+ GEANY_SETTINGS_DIALOG = 2,
+ GEANY_SETTINGS_RECENT_FILES = 4,
+ GEANY_SETTINGS_RECENT_PROJECTS = 8,
+ GEANY_SETTINGS_ALL = 15
+} GeanySettingsTypes;
+
+
void configuration_init(void);
void configuration_finalize(void);
@@ -37,14 +48,8 @@
void configuration_add_pref_group(struct StashGroup *group, gboolean for_prefs_dialog);
-void configuration_save_dialog_prefs(void);
+void configuration_save(GeanySettingsTypes flags);
-void configuration_save(void);
-
-void configuration_save_recent_files(void);
-
-void configuration_save_recent_projects(void);
-
gboolean configuration_load(void);
void configuration_open_files(void);
Modified: branches/sm/src/main.c
===================================================================
--- branches/sm/src/main.c 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/src/main.c 2010-06-17 14:53:18 UTC (rev 5036)
@@ -784,7 +784,7 @@
/* Used for command-line arguments at startup or from socket.
* this will strip any :line:col filename suffix from locale_filename.
*
- * After calling this function use configuration_save_recent_files() to
+ * After calling this function use configuration_save(GEANY_SETTINGS_RECENT_FILES) to
* update list of recent files stored in geany.conf. */
gboolean main_handle_filename(const gchar *locale_filename)
{
@@ -852,7 +852,7 @@
}
g_free(filename);
}
- configuration_save_recent_files();
+ configuration_save(GEANY_SETTINGS_RECENT_FILES);
}
@@ -1202,10 +1202,10 @@
return FALSE;
if (!cl_options.new_instance)
- configuration_save();
+ configuration_save(GEANY_SETTINGS_RUNTIME);
if (app->project)
- project_save(FALSE);
+ project_save(FALSE, GEANY_PROJECT_SETTINGS_RUNTIME);
return TRUE;
}
Modified: branches/sm/src/prefs.c
===================================================================
--- branches/sm/src/prefs.c 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/src/prefs.c 2010-06-17 14:53:18 UTC (rev 5036)
@@ -1181,8 +1181,8 @@
ui_document_show_hide(NULL);
ui_update_view_editor_menu_items();
- /* store all settings */
- configuration_save_dialog_prefs();
+ /* store dialog settings */
+ configuration_save(GEANY_SETTINGS_DIALOG);
}
if (response != GTK_RESPONSE_APPLY)
Modified: branches/sm/src/project.c
===================================================================
--- branches/sm/src/project.c 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/src/project.c 2010-06-17 14:53:18 UTC (rev 5036)
@@ -79,11 +79,10 @@
} PropertyDialogElements;
-
static gboolean update_config(const PropertyDialogElements *e);
static void on_file_save_button_clicked(GtkButton *button, PropertyDialogElements *e);
static gboolean load_config(const gchar *filename);
-static gboolean write_config(gboolean emit_signal);
+static gboolean write_config(gboolean emit_signal, GeanyProjectSettingsTypes flags);
static void on_name_entry_changed(GtkEditable *editable, PropertyDialogElements *e);
static void on_entries_changed(GtkEditable *editable, PropertyDialogElements *e);
static void on_radio_long_line_custom_toggled(GtkToggleButton *radio, GtkWidget *spin_long_line);
@@ -331,9 +330,9 @@
}
-void project_save(gboolean emit_signal)
+void project_save(gboolean emit_signal, GeanyProjectSettingsTypes flags)
{
- write_config(emit_signal);
+ write_config(emit_signal, flags);
}
@@ -346,7 +345,7 @@
/* use write_config() to save project session files */
if (save_config)
- write_config(FALSE);
+ write_config(FALSE, GEANY_PROJECT_SETTINGS_RUNTIME);
/* remove project filetypes build entries */
if (app->project->build_filetypes_list != NULL)
@@ -797,11 +796,17 @@
g_free(tmp);
#endif
}
- write_config(TRUE);
+
if (new_project)
+ {
+ write_config(TRUE, GEANY_PROJECT_SETTINGS_ALL);
ui_set_statusbar(TRUE, _("Project \"%s\" created."), p->name);
+ }
else
+ {
+ write_config(TRUE, GEANY_PROJECT_SETTINGS_DIALOG);
ui_set_statusbar(TRUE, _("Project \"%s\" saved."), p->name);
+ }
update_ui();
@@ -1036,7 +1041,7 @@
* is called while closing a project, this is used to skip emitting the signal because
* project-close will be emitted afterwards.
* Returns: TRUE if project file was written successfully. */
-static gboolean write_config(gboolean emit_signal)
+static gboolean write_config(gboolean emit_signal, GeanyProjectSettingsTypes flags)
{
GeanyProject *p;
GKeyFile *config;
@@ -1053,24 +1058,32 @@
filename = utils_get_locale_from_utf8(p->file_name);
g_key_file_load_from_file(config, filename, G_KEY_FILE_NONE, NULL);
- stash_group_save_to_key_file(indent_group, config);
+ if (flags & GEANY_PROJECT_SETTINGS_DIALOG)
+ {
+ stash_group_save_to_key_file(indent_group, config);
- g_key_file_set_string(config, "project", "name", p->name);
- g_key_file_set_string(config, "project", "base_path", p->base_path);
+ g_key_file_set_string(config, "project", "name", p->name);
+ g_key_file_set_string(config, "project", "base_path", p->base_path);
- if (p->description)
- g_key_file_set_string(config, "project", "description", p->description);
- if (p->file_patterns)
- g_key_file_set_string_list(config, "project", "file_patterns",
- (const gchar**) p->file_patterns, g_strv_length(p->file_patterns));
+ if (p->description)
+ g_key_file_set_string(config, "project", "description", p->description);
+ if (p->file_patterns)
+ g_key_file_set_string_list(config, "project", "file_patterns",
+ (const gchar**) p->file_patterns, g_strv_length(p->file_patterns));
- g_key_file_set_integer(config, "long line marker", "long_line_behaviour", p->long_line_behaviour);
- g_key_file_set_integer(config, "long line marker", "long_line_column", p->long_line_column);
+ g_key_file_set_integer(config, "long line marker", "long_line_behaviour", p->long_line_behaviour);
+ g_key_file_set_integer(config, "long line marker", "long_line_column", p->long_line_column);
- /* store the session files into the project too */
- if (project_prefs.project_session)
- configuration_save_session_files(config);
- build_save_menu(config, (gpointer)p, GEANY_BCS_PROJ);
+ build_save_menu(config, (gpointer)p, GEANY_BCS_PROJ);
+ }
+
+ if (flags & GEANY_PROJECT_SETTINGS_RUNTIME)
+ {
+ /* store the session files into the project too */
+ if (project_prefs.project_session)
+ configuration_save_session_files(config);
+ }
+
if (emit_signal)
{
g_signal_emit_by_name(geany_object, "project-save", config);
Modified: branches/sm/src/project.h
===================================================================
--- branches/sm/src/project.h 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/src/project.h 2010-06-17 14:53:18 UTC (rev 5036)
@@ -61,6 +61,14 @@
extern ProjectPrefs project_prefs;
+/* Flags for project_save() */
+typedef enum {
+ GEANY_PROJECT_SETTINGS_RUNTIME = 1,
+ GEANY_PROJECT_SETTINGS_DIALOG = 2,
+ GEANY_PROJECT_SETTINGS_ALL = 3,
+} GeanyProjectSettingsTypes;
+
+
void project_init(void);
void project_finalize(void);
@@ -70,7 +78,7 @@
void project_open(void);
-void project_save(gboolean emit_signal);
+void project_save(gboolean emit_signal, GeanyProjectSettingsTypes flags);
void project_close(gboolean save_config, gboolean open_default);
Modified: branches/sm/src/ui_utils.c
===================================================================
--- branches/sm/src/ui_utils.c 2010-06-17 14:52:47 UTC (rev 5035)
+++ branches/sm/src/ui_utils.c 2010-06-17 14:53:18 UTC (rev 5036)
@@ -1030,7 +1030,7 @@
if (document_open_file(locale_filename, FALSE, NULL, NULL) != NULL)
{
recent_file_loaded(utf8_filename, recent_get_recent_files());
- configuration_save_recent_files();
+ configuration_save(GEANY_SETTINGS_RECENT_FILES);
}
g_free(locale_filename);
@@ -1046,7 +1046,7 @@
if (project_ask_close() && project_load_file_with_session(locale_filename))
{
recent_file_loaded(utf8_filename, recent_get_recent_projects());
- configuration_save_recent_projects();
+ configuration_save(GEANY_SETTINGS_RECENT_PROJECTS);
}
g_free(locale_filename);
@@ -1095,14 +1095,14 @@
{
add_recent_file(utf8_filename, recent_get_recent_files());
if (update_config)
- configuration_save_recent_files();
+ configuration_save(GEANY_SETTINGS_RECENT_FILES);
}
void ui_add_recent_project_file(const gchar *utf8_filename)
{
add_recent_file(utf8_filename, recent_get_recent_projects());
- configuration_save_recent_projects();
+ configuration_save(GEANY_SETTINGS_RECENT_PROJECTS);
}
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