From 443571f859f487599f399675f329feb484da76c3 Mon Sep 17 00:00:00 2001 From: Joshua Sled Date: Sat, 4 Feb 2006 17:56:23 +0000 Subject: [PATCH] Fix file-backend options; respect runtime value changes. Fix file-compression option name in prefs dialog. 2006-02-04 Joshua Sled * src/gnome-utils/glade/preferences.glade: Fix name of file-compression option. * src/backend/file/gnc-backend-file.c (gnc_backend_new): Setup option initial values; register configuration-change notification. (retain_changed_cb, compression_changed_cb): Add. * src/backend/file/gnc-backend-file.h (struct FileBackend_struct): Move backend options into backend struct. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13097 57a11ea4-9604-0410-9ed3-97b8803252fd --- ChangeLog | 12 ++++ src/backend/file/gnc-backend-file.c | 83 +++++++++---------------- src/backend/file/gnc-backend-file.h | 28 +++++---- src/gnome-utils/glade/preferences.glade | 2 +- 4 files changed, 59 insertions(+), 66 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2545e8a0f3..64080bd616 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2006-02-04 Joshua Sled + + * src/gnome-utils/glade/preferences.glade: Fix name of + file-compression option. + + * src/backend/file/gnc-backend-file.c (gnc_backend_new): Setup + option initial values; register configuration-change notification. + (retain_changed_cb, compression_changed_cb): Add. + + * src/backend/file/gnc-backend-file.h (struct FileBackend_struct): + Move backend options into backend struct. + 2006-02-03 David Hampton * src/business/business-gnome/dialog-order.c: diff --git a/src/backend/file/gnc-backend-file.c b/src/backend/file/gnc-backend-file.c index aec646fed5..c8bb9899c5 100644 --- a/src/backend/file/gnc-backend-file.c +++ b/src/backend/file/gnc-backend-file.c @@ -64,53 +64,6 @@ static QofLogModule log_module = GNC_MOD_BACKEND; -static gint file_retention_days = 0; -static gboolean file_compression = FALSE; - -/* lookup the options and modify the frame */ -static void -gnc_file_be_set_config(QofBackend *be, KvpFrame *config) -{ - gchar *temp; - g_return_if_fail(be != NULL); - g_return_if_fail(config != NULL); - - file_retention_days = (gint)kvp_frame_get_gint64(config, GNC_BE_DAYS); - temp = kvp_frame_get_string(config, GNC_BE_ZIP); - file_compression = (gboolean)qof_util_bool_to_int(temp); -} - -static KvpFrame* -gnc_file_be_get_config(QofBackend *be) -{ - QofBackendOption *option; - gboolean compression; - - qof_backend_prepare_frame(be); - option = g_new0(QofBackendOption, 1); - option->option_name = GNC_BE_DAYS; - option->description = _("Number of days to retain old files"); - option->tooltip = _("GnuCash keeps backups of old files. " - "This setting specifies how long each is kept."); - option->type = KVP_TYPE_GINT64; - option->value = GINT_TO_POINTER((int)gnc_gconf_get_float("general", "retain_days", NULL)); - qof_backend_prepare_option(be, option); - g_free(option); - - option = g_new0(QofBackendOption, 1); - option->option_name = GNC_BE_ZIP; - option->description = _("Compress output files?"); - option->tooltip = _("GnuCash can save data files with compression." - " Enable this option to compress your data file."); - option->type = KVP_TYPE_GINT64; - compression = gnc_gconf_get_bool("general", "file_compression", NULL); - option->value = GINT_TO_POINTER(file_compression ? TRUE : FALSE); - qof_backend_prepare_option(be, option); - g_free(option); - - return qof_backend_complete_frame(be); -} - /* ================================================================= */ static gboolean @@ -543,7 +496,7 @@ gnc_file_be_write_to_file(FileBackend *fbe, } } - if(gnc_book_write_to_xml_file_v2(book, tmp_name, file_compression)) + if (gnc_book_write_to_xml_file_v2(book, tmp_name, fbe->file_compression)) { /* Record the file's permissions before unlinking it */ rc = stat(datafile, &statbuf); @@ -714,14 +667,14 @@ gnc_file_be_remove_old_files(FileBackend *be) PINFO ("unlink lock file: %s", name); unlink(name); } - else if (file_retention_days > 0) + else if (be->file_retention_days > 0) { time_t file_time; struct tm file_tm; int days; const char* res; - PINFO ("file retention = %d days", file_retention_days); + PINFO ("file retention = %d days", be->file_retention_days); /* Is the backup file old enough to delete */ memset(&file_tm, 0, sizeof(file_tm)); @@ -735,7 +688,7 @@ gnc_file_be_remove_old_files(FileBackend *be) && (strcmp(res, ".xac") == 0 || strcmp(res, ".log") == 0) && file_time > 0 - && days > file_retention_days) + && days > be->file_retention_days) { PINFO ("unlink stale (%d days old) file: %s", days, name); unlink(name); @@ -953,6 +906,23 @@ libgncmod_backend_file_LTX_gnc_backend_new(void) return be; } #endif + +static void +retain_changed_cb(GConfEntry *entry, gpointer user_data) +{ + FileBackend *be = (FileBackend*)user_data; + g_return_if_fail(be != NULL); + be->file_retention_days = (int)gnc_gconf_get_float("general", "retain_days", NULL); +} + +static void +compression_changed_cb(GConfEntry *entry, gpointer user_data) +{ + FileBackend *be = (FileBackend*)user_data; + g_return_if_fail(be != NULL); + be->file_compression = gnc_gconf_get_bool("general", "file_compression", NULL); +} + QofBackend* gnc_backend_new(void) { @@ -987,8 +957,8 @@ gnc_backend_new(void) be->process_events = NULL; be->sync = file_sync_all; - be->load_config = gnc_file_be_set_config; - be->get_config = gnc_file_be_get_config; + be->load_config = NULL; + be->get_config = NULL; gnc_be->export = gnc_file_be_write_accounts_to_file; gnc_be->dirname = NULL; @@ -998,6 +968,13 @@ gnc_backend_new(void) gnc_be->lockfd = -1; gnc_be->primary_book = NULL; + + gnc_be->file_retention_days = (int)gnc_gconf_get_float("general", "retain_days", NULL); + gnc_be->file_compression = gnc_gconf_get_bool("general", "file_compression", NULL); + + gnc_gconf_general_register_cb("retain_days", retain_changed_cb, be); + gnc_gconf_general_register_cb("file_compression", compression_changed_cb, be); + return be; } diff --git a/src/backend/file/gnc-backend-file.h b/src/backend/file/gnc-backend-file.h index 8d59e62695..63eb24bf8d 100644 --- a/src/backend/file/gnc-backend-file.h +++ b/src/backend/file/gnc-backend-file.h @@ -35,15 +35,15 @@ struct FileBackend_struct { - QofBackend be; + QofBackend be; - char *dirname; - char *fullpath; /* Fully qualified path to book */ - char *lockfile; - char *linkfile; - int lockfd; - /** \deprecated - XXX price_lookup should be removed during the redesign + char *dirname; + char *fullpath; /* Fully qualified path to book */ + char *lockfile; + char *linkfile; + int lockfd; + /** \deprecated + * XXX price_lookup should be removed during the redesign * of the SQL backend... prices can now be queried using * the generic query mechanism. * @@ -51,15 +51,19 @@ struct FileBackend_struct * void (*price_lookup) (QofBackend *, GNCPriceLookup *); * we use gpointer to avoid an unwanted include file dependency. */ - void (*price_lookup) (QofBackend *, gpointer); - /** XXX Export should really _NOT_ be here, but is left here for now. + void (*price_lookup) (QofBackend *, gpointer); + /** + * XXX Export should really _NOT_ be here, but is left here for now. * I'm not sure where this should be going to. It should be * removed ASAP. This is a temporary hack-around until period-closing * is fully implemented. */ - void (*export) (QofBackend *, QofBook *); + void (*export) (QofBackend *, QofBook *); - QofBook *primary_book; /* The primary, main open book */ + QofBook *primary_book; /* The primary, main open book */ + + int file_retention_days; + gboolean file_compression; }; typedef struct FileBackend_struct FileBackend; diff --git a/src/gnome-utils/glade/preferences.glade b/src/gnome-utils/glade/preferences.glade index 096aff0813..941afeecf1 100644 --- a/src/gnome-utils/glade/preferences.glade +++ b/src/gnome-utils/glade/preferences.glade @@ -1385,7 +1385,7 @@ - + True Compress the data file with gzip when saving it to disk. True