GSettings: add functions to get/set most common data types

These are
- integers
- floating point numbers
- strings
- enums
- arbitary combinations of values in a GVariant (this will
  be used to replace the current GConf list getters/setters)

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@23219 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Geert Janssens 2013-10-07 14:05:02 +00:00
parent 588218f554
commit 6775120df8
2 changed files with 554 additions and 0 deletions

View File

@ -220,3 +220,230 @@ gnc_gsettings_remove_any_cb_by_func (const gchar *schema,
{
gnc_gsettings_remove_cb_by_func (schema, NULL, func, user_data);
}
/************************************************************/
/* Getters/Setters */
/************************************************************/
gboolean
gnc_gsettings_get_bool (const gchar *schema,
const gchar *key)
{
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), FALSE);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
return g_settings_get_boolean (schema_ptr, key);
else
{
PERR ("Invalid key %s for schema %s", key, schema);
return FALSE;
}
}
gboolean
gnc_gsettings_set_bool (const gchar *schema,
const gchar *key,
gboolean value)
{
gboolean result = FALSE;
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), FALSE);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
{
result = g_settings_set_boolean (schema_ptr, key, value);
if (!result)
PERR ("Unable to set value for key %s in schema %s", key, schema);
}
else
PERR ("Invalid key %s for schema %s", key, schema);
return result;
}
gint
gnc_gsettings_get_int (const gchar *schema,
const gchar *key)
{
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), 0);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
return g_settings_get_int (schema_ptr, key);
else
{
PERR ("Invalid key %s for schema %s", key, schema);
return 0;
}
}
gboolean
gnc_gsettings_set_int (const gchar *schema,
const gchar *key,
gint value)
{
gboolean result = FALSE;
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), FALSE);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
{
result = g_settings_set_int (schema_ptr, key, value);
if (!result)
PERR ("Unable to set value for key %s in schema %s", key, schema);
}
else
PERR ("Invalid key %s for schema %s", key, schema);
return result;
}
gdouble
gnc_gsettings_get_float (const gchar *schema,
const gchar *key)
{
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), 0);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
return g_settings_get_double (schema_ptr, key);
else
{
PERR ("Invalid key %s for schema %s", key, schema);
return 0;
}
}
gboolean
gnc_gsettings_set_float (const gchar *schema,
const gchar *key,
gdouble value)
{
gboolean result = FALSE;
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), FALSE);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
{
result = g_settings_set_double (schema_ptr, key, value);
if (!result)
PERR ("Unable to set value for key %s in schema %s", key, schema);
}
else
PERR ("Invalid key %s for schema %s", key, schema);
return result;
}
gchar *
gnc_gsettings_get_string (const gchar *schema,
const gchar *key)
{
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), NULL);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
return g_settings_get_string (schema_ptr, key);
else
{
PERR ("Invalid key %s for schema %s", key, schema);
return NULL;
}
}
gboolean
gnc_gsettings_set_string (const gchar *schema,
const gchar *key,
const gchar *value)
{
gboolean result = FALSE;
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), FALSE);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
{
result = g_settings_set_string (schema_ptr, key, value);
if (!result)
PERR ("Unable to set value for key %s in schema %s", key, schema);
}
else
PERR ("Invalid key %s for schema %s", key, schema);
return result;
}
gint
gnc_gsettings_get_enum (const gchar *schema,
const gchar *key)
{
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), 0);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
return g_settings_get_enum (schema_ptr, key);
else
{
PERR ("Invalid key %s for schema %s", key, schema);
return 0;
}
}
gboolean
gnc_gsettings_set_enum (const gchar *schema,
const gchar *key,
gint value)
{
gboolean result = FALSE;
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), FALSE);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
{
result = g_settings_set_enum (schema_ptr, key, value);
if (!result)
PERR ("Unable to set value for key %s in schema %s", key, schema);
}
else
PERR ("Invalid key %s for schema %s", key, schema);
return result;
}
GVariant *
gnc_gsettings_get_value (const gchar *schema,
const gchar *key)
{
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), NULL);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
return g_settings_get_value (schema_ptr, key);
else
{
PERR ("Invalid key %s for schema %s", key, schema);
return NULL;
}
}
gboolean
gnc_gsettings_set_value (const gchar *schema,
const gchar *key,
GVariant *value)
{
gboolean result = FALSE;
GSettings *schema_ptr = gnc_gsettings_get_schema_ptr (schema);
g_return_val_if_fail (G_IS_SETTINGS (schema_ptr), FALSE);
if (gnc_gsettings_is_valid_key (schema_ptr, key))
{
result = g_settings_set_value (schema_ptr, key, value);
if (!result)
PERR ("Unable to set value for key %s in schema %s", key, schema);
}
else
PERR ("Invalid key %s for schema %s", key, schema);
return result;
}

View File

@ -220,6 +220,333 @@ void gnc_gsettings_remove_any_cb_by_func (const gchar *schema,
GCallback func,
gpointer user_data);
/** @name GSettings Get Functions
@{
*/
/** Get a boolean value from GSettings.
*
* Retrieve a TRUE/FALSE value from GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @return This function returns the TRUE or FALSE value stored at
* the requested key in the gsettings database. If the key has never
* been set, this function passes on the default value returned by
* GSettings as specified in the schema for this key.
*/
gboolean gnc_gsettings_get_bool (const gchar *schema,
/*@ null @*/ const gchar *key);
/** Get an integer value from GSettings.
*
* Retrieve an integer value from GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @return This function returns the integer value stored at the
* requested key in the gsettings database. If the key has never been
* set, this function passes on the default value returned by GSettings
* as specified in the schema for this key. If there is an error in
* processing, this function passed on the value of zero as returned
* by GSettings.
*/
gint gnc_gsettings_get_int (const gchar *schema,
const gchar *key);
/** Get an float value from GSettings.
*
* Retrieve an float value from GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @return This function returns the float value stored at the
* requested key in the gsettings database. If the key has never been
* set, this function passes on the default value returned by GSettings
* as specified in the schema for this key. If there is an error in
* processing, this function passed on the value of zero as returned
* by GSettings.
*/
gdouble gnc_gsettings_get_float (const gchar *schema,
const gchar *key);
/** Get a string value from GSettings.
*
* Retrieve an string value from GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @return This function returns the string value stored at the
* requested key in the gsettings database. If the key has never been
* set, this function passes on the default value returned by GSettings
* as specified in the schema for this key. If there is an error in
* processing, this function passed on the NULL value as returned by
* GSettings. It is the callers responsibility to free any string
* returned by this function.
*/
gchar *gnc_gsettings_get_string (const gchar *schema,
const gchar *key);
/** Get an enum value from GSettings.
*
* Retrieve an enum value from GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @return This function returns the enum value stored at the
* requested key in the gsettings database. If the key has never been
* set, this function passes on the default value returned by GSettings
* as specified in the schema for this key. If there is an error in
* processing, this function passed on the value of zero as returned
* by GSettings.
*/
gint gnc_gsettings_get_enum (const gchar *schema,
const gchar *key);
/** Get an arbitrary combination of values from GSettings.
*
* Retrieve an arbitrary combination of values from GSettings. This
* combination of values can be anything that can be encapsulated
* in a GVariant structure. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @return This function returns the a GVariant encapsulating the combination
* of values stored at the requested key in the gsettings database.
* If the key has never been set, this function passes on the default
* value returned by GSettings as specified in the schema for this key.
* If there is an error in processing, this function passed on the NULL
* value as returned by GSettings.
* It is the callers responsibility to free any GVariant data returned
* by this function.
*/
GVariant *gnc_gsettings_get_value (const gchar *schema,
const gchar *key);
/** @} */
/** @name GSettings Set/Unset Functions
@{
*/
/** Store a boolean value into GSettings.
*
* Store a boolean value into GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @param value The boolean value to be stored.
*
* @return This function returns true if the value was set successfully
* on the key or false if not.
*/
gboolean gnc_gsettings_set_bool (const gchar *schema,
const gchar *key,
gboolean value);
/** Store an integer value into GSettings.
*
* Store an integer into GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @param value The integer number to be stored.
*
* @return This function returns true if the value was set successfully
* on the key or false if not.
*/
gboolean gnc_gsettings_set_int (const gchar *schema,
const gchar *key,
gint value);
/** Store a float value into GSettings.
*
* Store a float into GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @param value The floating point number to be stored.
*
* @return This function returns true if the value was set successfully
* on the key or false if not.
*/
gboolean gnc_gsettings_set_float (const gchar *schema,
const gchar *key,
gdouble value);
/** Store a string into GSettings.
*
* Store a single string into GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @param value The string to be stored. GSettings will make a copy of this
* string, so it is the callers responsibility to free the space used
* by this string (if necessary).
*
* @return This function returns true if the value was set successfully
* on the key or false if not.
*/
gboolean gnc_gsettings_set_string (const gchar *schema,
const gchar *key,
const gchar *value);
/** Store an enum value into GSettings.
*
* Store an enum into GSettings. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @param value The enum number to be stored.
*
* @return This function returns true if the value was set successfully
* on the key or false if not.
*/
gboolean gnc_gsettings_set_enum (const gchar *schema,
const gchar *key,
gint value);
/** Store an arbitrary combination of values into GSettings.
*
* Store an arbitrary combination of values into GSettings. This
* combination of values can be anything that can be encapsulated
* in a GVariant structure. The schema name
* provided as argument is combined with the default gnucash schema
* prefix to produce a fully qualified schema name.
*
* @param schema This string provides a grouping of keys within the
* GnuCash schema of the gsettings database. It can be a simple string
* as in "history" for settings that are common to many areas of
* gnucash, or it can be a partial path name as in
* "dialogs.business.invoice" for setting that only apply to one
* specific area of the program.
*
* @param key This string is the name of the particular key within
* the named schema of gsettings.
*
* @param value The combination of values encapsulated in a GVariant
* to be stored.
*
* @return This function returns true if the value was set successfully
* on the key or false if not.
*/
gboolean gnc_gsettings_set_value (const gchar *schema,
const gchar *key,
GVariant *value);
/** @} */