Revision: 2541 http://geany.svn.sourceforge.net/geany/?rev=2541&view=rev Author: ntrel Date: 2008-04-29 04:30:19 -0700 (Tue, 29 Apr 2008)
Log Message: ----------- Refactor open_session_file() from configuration_open_files().
Modified Paths: -------------- branches/custom-filetypes/ChangeLog branches/custom-filetypes/src/keyfile.c branches/custom-filetypes/src/keyfile.h branches/custom-filetypes/src/main.c
Modified: branches/custom-filetypes/ChangeLog =================================================================== --- branches/custom-filetypes/ChangeLog 2008-04-28 16:52:20 UTC (rev 2540) +++ branches/custom-filetypes/ChangeLog 2008-04-29 11:30:19 UTC (rev 2541) @@ -1,3 +1,9 @@ +2008-04-29 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com> + + * src/keyfile.c, src/keyfile.h, src/main.c: + Refactor open_session_file() from configuration_open_files(). + + 2008-04-28 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/plugindata.h, src/filetypes.c, src/filetypes.h, src/plugins.c,
Modified: branches/custom-filetypes/src/keyfile.c =================================================================== --- branches/custom-filetypes/src/keyfile.c 2008-04-28 16:52:20 UTC (rev 2540) +++ branches/custom-filetypes/src/keyfile.c 2008-04-29 11:30:19 UTC (rev 2541) @@ -801,14 +801,57 @@ }
+static gboolean open_session_file(gchar **tmp) +{ + guint pos; + gchar *locale_filename; + gint ft_uid, enc_idx; + gboolean ro, use_tabs, auto_indent, line_wrapping; + gboolean ret = FALSE; + + pos = atoi(tmp[0]); + ft_uid = atoi(tmp[1]); + ro = atoi(tmp[2]); + enc_idx = atoi(tmp[3]); + use_tabs = atoi(tmp[4]); + auto_indent = atoi(tmp[5]); + line_wrapping = atoi(tmp[6]); + /* try to get the locale equivalent for the filename */ + locale_filename = utils_get_locale_from_utf8(tmp[7]); + + if (g_file_test(locale_filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK)) + { + filetype *ft = filetypes_get_from_uid(ft_uid); + gint new_idx = document_open_file_full( + -1, locale_filename, pos, ro, ft, + (enc_idx >= 0 && enc_idx < GEANY_ENCODINGS_MAX) ? + encodings[enc_idx].charset : NULL); + + if (DOC_IDX_VALID(new_idx)) + { + document_set_use_tabs(new_idx, use_tabs); + document_set_line_wrapping(new_idx, line_wrapping); + doc_list[new_idx].auto_indent = auto_indent; + ret = TRUE; + } + } + else + { + geany_debug("Could not find file '%s'.", tmp[7]); + } + + g_free(locale_filename); + return ret; +} + + /* Open session files * Note: notebook page switch handler and adding to recent files list is always disabled * for all files opened within this function */ -gboolean configuration_open_files(void) +void configuration_open_files(void) { gint i; - guint pos; - gboolean ret = FALSE, failure = FALSE; + gboolean failure = FALSE;
/* necessary to set it to TRUE for project session support */ main_status.opening_session_files = TRUE; @@ -822,43 +865,8 @@
if (tmp != NULL && g_strv_length(tmp) == 8) { - gchar *locale_filename; - gint ft_uid, enc_idx; - gboolean ro, use_tabs, auto_indent, line_wrapping; - - pos = atoi(tmp[0]); - ft_uid = atoi(tmp[1]); - ro = atoi(tmp[2]); - enc_idx = atoi(tmp[3]); - use_tabs = atoi(tmp[4]); - auto_indent = atoi(tmp[5]); - line_wrapping = atoi(tmp[6]); - /* try to get the locale equivalent for the filename */ - locale_filename = utils_get_locale_from_utf8(tmp[7]); - - if (g_file_test(locale_filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK)) - { - filetype *ft = filetypes_get_from_uid(ft_uid); - gint new_idx = document_open_file_full( - -1, locale_filename, pos, ro, ft, - (enc_idx >= 0 && enc_idx < GEANY_ENCODINGS_MAX) ? - encodings[enc_idx].charset : NULL); - - if (DOC_IDX_VALID(new_idx)) - { - document_set_use_tabs(new_idx, use_tabs); - document_set_line_wrapping(new_idx, line_wrapping); - doc_list[new_idx].auto_indent = auto_indent; - ret = TRUE; - } - } - else - { + if (! open_session_file(tmp)) failure = TRUE; - geany_debug("Could not find file '%s'.", tmp[7]); - } - - g_free(locale_filename); } g_strfreev(tmp);
@@ -882,7 +890,7 @@ ui_set_statusbar(TRUE, _("Failed to load one or more session files.")); else if (session_notebook_page >= 0) { - /* exlicitly allow notebook switch page callback to be called for window title, + /* explicitly allow notebook switch page callback to be called for window title, * encoding settings and so other things */ main_status.opening_session_files = FALSE; /** TODO if session_notebook_page is equal to the current notebook tab(the last opened) @@ -890,7 +898,6 @@ gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), session_notebook_page); } main_status.opening_session_files = FALSE; - return ret; }
Modified: branches/custom-filetypes/src/keyfile.h =================================================================== --- branches/custom-filetypes/src/keyfile.h 2008-04-28 16:52:20 UTC (rev 2540) +++ branches/custom-filetypes/src/keyfile.h 2008-04-29 11:30:19 UTC (rev 2541) @@ -30,7 +30,7 @@
gboolean configuration_load(void);
-gboolean configuration_open_files(void); +void configuration_open_files(void);
void configuration_reload_default_session(void);
Modified: branches/custom-filetypes/src/main.c =================================================================== --- branches/custom-filetypes/src/main.c 2008-04-28 16:52:20 UTC (rev 2540) +++ branches/custom-filetypes/src/main.c 2008-04-29 11:30:19 UTC (rev 2541) @@ -870,7 +870,9 @@ load_project_file();
/* load session files into tabs, as they are found in the session_files variable */ - if (! configuration_open_files()) + configuration_open_files(); + + if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)) == 0) { ui_update_popup_copy_items(-1); ui_update_popup_reundo_items(-1);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.