* Purple is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
# error "only <purple.h> may be included directly"
* @section_id: libpurple-prefs
* @short_description: <filename>prefs.h</filename>
* @title: Preferences API
* @PURPLE_PREF_NONE: No type.
* @PURPLE_PREF_BOOLEAN: Boolean.
* @PURPLE_PREF_INT: Integer.
* @PURPLE_PREF_STRING: String.
* @PURPLE_PREF_STRING_LIST: List of strings.
* @PURPLE_PREF_PATH: Path.
* @PURPLE_PREF_PATH_LIST: List of paths.
* @name: the name of the preference which has changed.
* @type: the type of the preferenced named @name
* @val: the new value of the preferencs; should be cast to the correct
* type. For instance, to recover the value of a #PURPLE_PREF_INT
* preference, use <literal>GPOINTER_TO_INT(val)</literal>.
* Alternatively, just call purple_prefs_get_int(),
* purple_prefs_get_string_list() etc.
* @data: Arbitrary data specified when the callback was connected with
* purple_prefs_connect_callback().
* The type of callbacks for preference changes.
* See purple_prefs_connect_callback().
typedef void (*PurplePrefCallback) (const char *name, PurplePrefType type,
gconstpointer val, gpointer data);
* PurplePrefCallbackData:
* Opaque type to carry callback information
typedef struct _PurplePrefCallbackData PurplePrefCallbackData;
typedef struct _PurplePrefsUiOps PurplePrefsUiOps;
* @add_none: see #purple_prefs_add_none.
* @add_bool: see #purple_prefs_add_bool.
* @add_int: see #purple_prefs_add_int.
* @add_string: see #purple_prefs_add_string.
* @add_string_list: see #purple_prefs_add_string_list.
* @set_bool: see #purple_prefs_set_bool.
* @set_int: see #purple_prefs_set_int.
* @set_string: see #purple_prefs_set_string.
* @set_string_list: see #purple_prefs_set_string_list.
* @get_bool: see #purple_prefs_get_bool.
* @get_int: see #purple_prefs_get_int.
* @get_string: see #purple_prefs_get_string.
* @get_string_list: see #purple_prefs_get_string_list.
* @get_type: see #purple_prefs_get_type.
* @get_children_names: see #purple_prefs_get_children_names.
* @exists: see #purple_prefs_exists.
* @remove: see #purple_prefs_remove.
* @rename: see #purple_prefs_rename.
* @rename_boolean_toggle: see #purple_prefs_rename_boolean_toggle.
* @load: see #purple_prefs_load.
* @save: see #purple_prefs_save.
* @schedule_save: see #purple_prefs_schedule_save.
* @connect_callback: see #purple_prefs_connect_callback.
* @disconnect_callback: see #purple_prefs_disconnect_callback.
* Prefs UI operations. This allows overriding the prefs.xml storage with
* Unless specified otherwise, each entry provides an implementation for the
* corresponding purple_prefs_* method, and disables the prefs.xml code for it.
* This means that to do anything useful, all the methods must be implemented.
void (*add_none)(const char *name);
void (*add_bool)(const char *name, gboolean value);
void (*add_int)(const char *name, int value);
void (*add_string)(const char *name, const char *value);
void (*add_string_list)(const char *name, GList *value);
void (*set_bool)(const char *name, gboolean value);
void (*set_int)(const char *name, int value);
void (*set_string)(const char *name, const char *value);
void (*set_string_list)(const char *name, GList *value);
gboolean (*get_bool)(const char *name);
int (*get_int)(const char *name);
const char *(*get_string)(const char *name);
GList *(*get_string_list)(const char *name);
PurplePrefType (*get_type)(const char *name);
GList *(*get_children_names)(const char *name);
gboolean (*exists)(const char *name);
void (*remove)(const char *name);
void (*rename)(const char *oldname, const char *newname);
void (*rename_boolean_toggle)(const char *oldname, const char *newname);
void (*schedule_save)(void);
void *(*connect_callback)(const char *name, PurplePrefCallbackData *data);
void (*disconnect_callback)(const char *name, void *ui_data);
void (*_purple_reserved1)(void);
void (*_purple_reserved2)(void);
void (*_purple_reserved3)(void);
void (*_purple_reserved4)(void);
/******************************************************************************
* UI Registration Functions
*****************************************************************************/
* purple_prefs_set_ui_ops:
* @ops: The UI operations structure.
* Sets the UI operations structure to be used for preferences.
void purple_prefs_set_ui_ops(PurplePrefsUiOps *ops);
* purple_prefs_get_ui_ops:
* Returns the UI operations structure used for preferences.
* Returns: (transfer none): The UI operations structure in use.
PurplePrefsUiOps *purple_prefs_get_ui_ops(void);
/**************************************************************************/
Preferences are named according to a directory-like structure.
Example: "/plugins/core/potato/is_from_idaho" (probably a boolean) */
/**************************************************************************/
* purple_prefs_get_handle:
* Returns the prefs subsystem handle.
* Returns: The prefs subsystem handle.
void *purple_prefs_get_handle(void);
void purple_prefs_init(void);
* Uninitializes the prefs subsystem.
void purple_prefs_uninit(void);
* @name: The name of the pref
* Add a new typeless pref.
void purple_prefs_add_none(const char *name);
* @name: The name of the pref
* @value: The initial value to set
* Add a new boolean pref.
void purple_prefs_add_bool(const char *name, gboolean value);
* @name: The name of the pref
* @value: The initial value to set
* Add a new integer pref.
void purple_prefs_add_int(const char *name, int value);
* purple_prefs_add_string:
* @name: The name of the pref
* @value: The initial value to set
void purple_prefs_add_string(const char *name, const char *value);
* purple_prefs_add_string_list:
* @name: The name of the pref
* @value: (element-type utf8) (transfer none): The initial value to set
* Add a new string list pref.
* Note: This function takes a copy of the strings in the value list. The list
* itself and original copies of the strings are up to the caller to
void purple_prefs_add_string_list(const char *name, GList *value);
* @name: The name of the pref
* @value: The initial value to set
void purple_prefs_add_path(const char *name, const char *value);
* purple_prefs_add_path_list:
* @name: The name of the pref
* @value: (element-type utf8) (transfer none): The initial value to set
* Add a new path list pref.
* Note: This function takes a copy of the strings in the value list. The list
* itself and original copies of the strings are up to the caller to
void purple_prefs_add_path_list(const char *name, GList *value);
* @name: The name of the pref
void purple_prefs_remove(const char *name);
* @oldname: The old name of the pref
* @newname: The new name for the pref
void purple_prefs_rename(const char *oldname, const char *newname);
* purple_prefs_rename_boolean_toggle:
* @oldname: The old name of the pref
* @newname: The new name for the pref
* Rename a boolean pref, toggling it's value
void purple_prefs_rename_boolean_toggle(const char *oldname, const char *newname);
void purple_prefs_destroy(void);
* @name: The name of the pref
* @value: The value to set
void purple_prefs_set_bool(const char *name, gboolean value);
* @name: The name of the pref
* @value: The value to set
void purple_prefs_set_int(const char *name, int value);
* purple_prefs_set_string:
* @name: The name of the pref
* @value: The value to set
void purple_prefs_set_string(const char *name, const char *value);
* purple_prefs_set_string_list:
* @name: The name of the pref
* @value: (element-type utf8) (transfer none): The value to set
* Set string list pref value
void purple_prefs_set_string_list(const char *name, GList *value);
* @name: The name of the pref
* @value: The value to set
void purple_prefs_set_path(const char *name, const char *value);
* purple_prefs_set_path_list:
* @name: The name of the pref
* @value: (element-type utf8) (transfer none): The value to set
* Set path list pref value
void purple_prefs_set_path_list(const char *name, GList *value);
* @name: The name of the pref
* Returns: TRUE if the pref exists. Otherwise FALSE.
gboolean purple_prefs_exists(const char *name);
* purple_prefs_get_pref_type:
* @name: The name of the pref
* Returns: The type of the pref
PurplePrefType purple_prefs_get_pref_type(const char *name);
* @name: The name of the pref
* Returns: The value of the pref
gboolean purple_prefs_get_bool(const char *name);
* @name: The name of the pref
* Returns: The value of the pref
int purple_prefs_get_int(const char *name);
* purple_prefs_get_string:
* @name: The name of the pref
* Returns: The value of the pref
const char *purple_prefs_get_string(const char *name);
* purple_prefs_get_string_list:
* @name: The name of the pref
* Get string list pref value
* Returns: (transfer full) (element-type utf8): The value of the pref.
GList *purple_prefs_get_string_list(const char *name);
* @name: The name of the pref
* Returns: The value of the pref
const char *purple_prefs_get_path(const char *name);
* purple_prefs_get_path_list:
* @name: The name of the pref
* Get path list pref value
* Returns: (transfer full) (element-type utf8): The value of the pref.
GList *purple_prefs_get_path_list(const char *name);
* purple_prefs_get_children_names:
* Returns a list of children for a pref
* Returns: (transfer full) (element-type utf8): A list of newly allocated
* strings denoting the names of the children. Returns %NULL if there
* are no children or if pref doesn't exist. The caller must free all
* the strings and the list.
GList *purple_prefs_get_children_names(const char *name);
* purple_prefs_connect_callback:
* @handle: The handle of the receiver.
* @name: The name of the preference
* @cb: (scope call): The callback function
* @data: The data to pass to the callback function.
* Add a callback to a pref (and its children)
* See purple_prefs_disconnect_callback().
* Returns: An id to disconnect the callback
guint purple_prefs_connect_callback(void *handle, const char *name, PurplePrefCallback cb,
* purple_prefs_disconnect_callback:
* @callback_id: The callback_id to disconnect.
* Remove a callback to a pref
void purple_prefs_disconnect_callback(guint callback_id);
* purple_prefs_disconnect_by_handle:
* @handle: The handle to remove.
* Remove all pref callbacks by handle
void purple_prefs_disconnect_by_handle(void *handle);
* purple_prefs_trigger_callback:
* @name: The name of the preference.
* Trigger callbacks as if the pref changed
void purple_prefs_trigger_callback(const char *name);
* purple_prefs_trigger_callback_object:
* Trigger callbacks as if the pref changed, taking a #PurplePrefCallbackData
void purple_prefs_trigger_callback_object(PurplePrefCallbackData *data);
gboolean purple_prefs_load(void);
#endif /* PURPLE_PREFS_H */