From d15db59c423694d6e5caeec80247c60359ece531 Mon Sep 17 00:00:00 2001 From: David Hampton Date: Mon, 13 Jan 2003 07:33:53 +0000 Subject: [PATCH] Add support for setting a string option. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@7826 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/app-utils/global-options.c | 17 +++++++++++++ src/app-utils/global-options.h | 3 +++ src/app-utils/option-util.c | 45 +++++++++++++++++++++++++++++++++- src/app-utils/option-util.h | 5 ++++ 4 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/app-utils/global-options.c b/src/app-utils/global-options.c index 8824ac4687..85a9d4de7e 100644 --- a/src/app-utils/global-options.c +++ b/src/app-utils/global-options.c @@ -440,6 +440,23 @@ gnc_set_boolean_option(const char *section, const char *name, gboolean value) } +/********************************************************************\ + * gnc_set_string_option * + * sets the string option to the given value. If successful * + * returns TRUE, otherwise FALSE. * + * * + * Args: section - section name of option * + * name - name of option * + * value - value to set to * + * Return: success indicator * +\********************************************************************/ +gboolean +gnc_set_string_option(const char *section, const char *name, const char *value) +{ + return gnc_option_db_set_string_option(global_options, section, name, value); +} + + /********************************************************************\ * _gnc_option_refresh_ui * * sets the GUI representation of an option with its * diff --git a/src/app-utils/global-options.h b/src/app-utils/global-options.h index 1cc0015296..c6bd1210dc 100644 --- a/src/app-utils/global-options.h +++ b/src/app-utils/global-options.h @@ -87,6 +87,9 @@ gboolean gnc_set_number_option(const char *section, const char *name, gboolean gnc_set_boolean_option(const char *section, const char *name, gboolean value); +gboolean gnc_set_string_option(const char *section, const char *name, + const char *value); + void gnc_option_refresh_ui_by_name(const char *section_name, const char *name); diff --git a/src/app-utils/option-util.c b/src/app-utils/option-util.c index 500f871f27..caf098d9be 100644 --- a/src/app-utils/option-util.c +++ b/src/app-utils/option-util.c @@ -2334,7 +2334,7 @@ gnc_option_db_set_option_default(GNCOptionDB *odb, /********************************************************************\ - * gnc_option_db_set_number_option * + * gnc_option_db_set_option * * sets the option to the given value. If successful * * returns TRUE, otherwise FALSE. * * * @@ -2451,6 +2451,49 @@ gnc_option_db_set_boolean_option(GNCOptionDB *odb, return TRUE; } +/********************************************************************\ + * gnc_option_db_set_string_option * + * sets the string option to the given value. If successful * + * returns TRUE, otherwise FALSE. * + * * + * Args: odb - option database to search in * + * section - section name of option * + * name - name of option * + * value - value to set to * + * Return: success indicator * +\********************************************************************/ +gboolean +gnc_option_db_set_string_option(GNCOptionDB *odb, + const char *section, + const char *name, + const char *value) +{ + GNCOption *option; + SCM scm_value; + SCM setter; + + option = gnc_option_db_get_option_by_name(odb, section, name); + if (option == NULL) + return FALSE; + + if (value) + scm_value = gh_str2scm(value, strlen(value)); + else + scm_value = SCM_BOOL_F; + + scm_value = gnc_option_valid_value(option, scm_value); + if (scm_value == SCM_UNDEFINED) + return FALSE; + + setter = gnc_option_setter(option); + if (setter == SCM_UNDEFINED) + return FALSE; + + gh_call1(setter, scm_value); + + return TRUE; +} + /*******************************************************************\ * gnc_option_date_option_get_subtype * * find out whether a date option is a relative or absolute date * diff --git a/src/app-utils/option-util.h b/src/app-utils/option-util.h index 315e634dd2..1e7e831254 100644 --- a/src/app-utils/option-util.h +++ b/src/app-utils/option-util.h @@ -224,6 +224,11 @@ gboolean gnc_option_db_set_boolean_option(GNCOptionDB *odb, const char *name, gboolean value); +gboolean gnc_option_db_set_string_option(GNCOptionDB *odb, + const char *section, + const char *name, + const char *value); + char * gnc_option_date_option_get_subtype(GNCOption *option); char * gnc_date_option_value_get_type (SCM option_value);