Frameworks/libpurple.framework/Versions/0.6.2/Headers/prefs.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 2539 Frameworks/libpurple.framework/Versions/0.6.0/Headers/prefs.h@2c9881ea8cdf
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
Evan@653
     1
/**
Evan@653
     2
 * @file prefs.h Prefs API
Evan@653
     3
 * @ingroup core
Evan@653
     4
 */
Evan@653
     5
Evan@653
     6
/* purple
Evan@653
     7
 *
Evan@653
     8
 * Purple is the legal property of its developers, whose names are too numerous
Evan@653
     9
 * to list here.  Please refer to the COPYRIGHT file distributed with this
Evan@653
    10
 * source distribution.
Evan@653
    11
 *
Evan@653
    12
 * This program is free software; you can redistribute it and/or modify
Evan@653
    13
 * it under the terms of the GNU General Public License as published by
Evan@653
    14
 * the Free Software Foundation; either version 2 of the License, or
Evan@653
    15
 * (at your option) any later version.
Evan@653
    16
 *
Evan@653
    17
 * This program is distributed in the hope that it will be useful,
Evan@653
    18
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Evan@653
    19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Evan@653
    20
 * GNU General Public License for more details.
Evan@653
    21
 *
Evan@653
    22
 * You should have received a copy of the GNU General Public License
Evan@653
    23
 * along with this program; if not, write to the Free Software
Evan@653
    24
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
Evan@653
    25
 *
Evan@653
    26
 */
Evan@653
    27
#ifndef _PURPLE_PREFS_H_
Evan@653
    28
#define _PURPLE_PREFS_H_
Evan@653
    29
Evan@653
    30
#include <glib.h>
Evan@653
    31
Evan@653
    32
/**
Evan@1427
    33
 * Preference data types.
Evan@653
    34
 */
Evan@653
    35
typedef enum _PurplePrefType
Evan@653
    36
{
Evan@1427
    37
	PURPLE_PREF_NONE,        /**< No type.         */
Evan@1427
    38
	PURPLE_PREF_BOOLEAN,     /**< Boolean.         */
Evan@1427
    39
	PURPLE_PREF_INT,         /**< Integer.         */
Evan@1427
    40
	PURPLE_PREF_STRING,      /**< String.          */
Evan@1427
    41
	PURPLE_PREF_STRING_LIST, /**< List of strings. */
Evan@1427
    42
	PURPLE_PREF_PATH,        /**< Path.            */
Evan@1427
    43
	PURPLE_PREF_PATH_LIST    /**< List of paths.   */
Evan@653
    44
Evan@653
    45
} PurplePrefType;
Evan@653
    46
Evan@653
    47
/**
Evan@653
    48
 * The type of callbacks for preference changes.
Evan@653
    49
 *
Evan@653
    50
 * @param name the name of the preference which has changed.
Evan@653
    51
 * @param type the type of the preferenced named @a name
Evan@653
    52
 * @param val  the new value of the preferencs; should be cast to the correct
Evan@653
    53
 *             type.  For instance, to recover the value of a #PURPLE_PREF_INT
Evan@653
    54
 *             preference, use <tt>GPOINTER_TO_INT(val)</tt>.  Alternatively,
Evan@653
    55
 *             just call purple_prefs_get_int(), purple_prefs_get_string_list()
Evan@653
    56
 *             etc.
Evan@653
    57
 * @param data Arbitrary data specified when the callback was connected with
Evan@653
    58
 *             purple_prefs_connect_callback().
Evan@653
    59
 *
Evan@653
    60
 * @see purple_prefs_connect_callback()
Evan@653
    61
 */
Evan@653
    62
typedef void (*PurplePrefCallback) (const char *name, PurplePrefType type,
Evan@653
    63
		gconstpointer val, gpointer data);
Evan@653
    64
Evan@653
    65
#ifdef __cplusplus
Evan@653
    66
extern "C" {
Evan@653
    67
#endif
Evan@653
    68
Evan@653
    69
/**************************************************************************/
Evan@1427
    70
/** @name Prefs API
Evan@1427
    71
    Preferences are named according to a directory-like structure.
Evan@653
    72
    Example: "/plugins/core/potato/is_from_idaho" (probably a boolean)    */
Evan@653
    73
/**************************************************************************/
Evan@653
    74
/*@{*/
Evan@653
    75
Evan@653
    76
/**
Evan@653
    77
 * Returns the prefs subsystem handle.
Evan@653
    78
 *
Evan@653
    79
 * @return The prefs subsystem handle.
Evan@653
    80
 */
Evan@653
    81
void *purple_prefs_get_handle(void);
Evan@653
    82
Evan@653
    83
/**
Evan@653
    84
 * Initialize core prefs
Evan@653
    85
 */
Evan@653
    86
void purple_prefs_init(void);
Evan@653
    87
Evan@653
    88
/**
Evan@653
    89
 * Uninitializes the prefs subsystem.
Evan@653
    90
 */
Evan@653
    91
void purple_prefs_uninit(void);
Evan@653
    92
Evan@653
    93
/**
Evan@653
    94
 * Add a new typeless pref.
Evan@653
    95
 *
Evan@653
    96
 * @param name  The name of the pref
Evan@653
    97
 */
Evan@653
    98
void purple_prefs_add_none(const char *name);
Evan@653
    99
Evan@653
   100
/**
Evan@653
   101
 * Add a new boolean pref.
Evan@653
   102
 *
Evan@653
   103
 * @param name  The name of the pref
Evan@653
   104
 * @param value The initial value to set
Evan@653
   105
 */
Evan@653
   106
void purple_prefs_add_bool(const char *name, gboolean value);
Evan@653
   107
Evan@653
   108
/**
Evan@653
   109
 * Add a new integer pref.
Evan@653
   110
 *
Evan@653
   111
 * @param name  The name of the pref
Evan@653
   112
 * @param value The initial value to set
Evan@653
   113
 */
Evan@653
   114
void purple_prefs_add_int(const char *name, int value);
Evan@653
   115
Evan@653
   116
/**
Evan@653
   117
 * Add a new string pref.
Evan@653
   118
 *
Evan@653
   119
 * @param name  The name of the pref
Evan@653
   120
 * @param value The initial value to set
Evan@653
   121
 */
Evan@653
   122
void purple_prefs_add_string(const char *name, const char *value);
Evan@653
   123
Evan@653
   124
/**
Evan@653
   125
 * Add a new string list pref.
Evan@653
   126
 *
Evan@653
   127
 * @param name  The name of the pref
Evan@653
   128
 * @param value The initial value to set
Evan@653
   129
 * @note This function takes a copy of the strings in the value list. The list
Evan@653
   130
 *       itself and original copies of the strings are up to the caller to
Evan@653
   131
 *       free.
Evan@653
   132
 */
Evan@653
   133
void purple_prefs_add_string_list(const char *name, GList *value);
Evan@653
   134
Evan@653
   135
/**
Evan@653
   136
 * Add a new path pref.
Evan@653
   137
 *
Evan@653
   138
 * @param name  The name of the pref
Evan@653
   139
 * @param value The initial value to set
Evan@653
   140
 */
Evan@653
   141
void purple_prefs_add_path(const char *name, const char *value);
Evan@653
   142
Evan@653
   143
/**
Evan@653
   144
 * Add a new path list pref.
Evan@653
   145
 *
Evan@653
   146
 * @param name  The name of the pref
Evan@653
   147
 * @param value The initial value to set
Evan@653
   148
 * @note This function takes a copy of the strings in the value list. The list
Evan@653
   149
 *       itself and original copies of the strings are up to the caller to
Evan@653
   150
 *       free.
Evan@653
   151
 */
Evan@653
   152
void purple_prefs_add_path_list(const char *name, GList *value);
Evan@653
   153
Evan@653
   154
Evan@653
   155
/**
Evan@653
   156
 * Remove a pref.
Evan@653
   157
 *
Evan@653
   158
 * @param name The name of the pref
Evan@653
   159
 */
Evan@653
   160
void purple_prefs_remove(const char *name);
Evan@653
   161
Evan@653
   162
/**
Evan@653
   163
 * Rename a pref
Evan@653
   164
 *
Evan@653
   165
 * @param oldname The old name of the pref
Evan@653
   166
 * @param newname The new name for the pref
Evan@653
   167
 */
Evan@653
   168
void purple_prefs_rename(const char *oldname, const char *newname);
Evan@653
   169
Evan@653
   170
/**
Evan@653
   171
 * Rename a boolean pref, toggling it's value
Evan@653
   172
 *
Evan@653
   173
 * @param oldname The old name of the pref
Evan@653
   174
 * @param newname The new name for the pref
Evan@653
   175
 */
Evan@653
   176
void purple_prefs_rename_boolean_toggle(const char *oldname, const char *newname);
Evan@653
   177
Evan@653
   178
/**
Evan@653
   179
 * Remove all prefs.
Evan@653
   180
 */
Evan@653
   181
void purple_prefs_destroy(void);
Evan@653
   182
Evan@653
   183
/**
Evan@653
   184
 * Set raw pref value
Evan@653
   185
 *
Evan@653
   186
 * @param name  The name of the pref
Evan@653
   187
 * @param value The value to set
Evan@653
   188
 */
Evan@653
   189
void purple_prefs_set_generic(const char *name, gpointer value);
Evan@653
   190
Evan@653
   191
/**
Evan@653
   192
 * Set boolean pref value
Evan@653
   193
 *
Evan@653
   194
 * @param name  The name of the pref
Evan@653
   195
 * @param value The value to set
Evan@653
   196
 */
Evan@653
   197
void purple_prefs_set_bool(const char *name, gboolean value);
Evan@653
   198
Evan@653
   199
/**
Evan@653
   200
 * Set integer pref value
Evan@653
   201
 *
Evan@653
   202
 * @param name  The name of the pref
Evan@653
   203
 * @param value The value to set
Evan@653
   204
 */
Evan@653
   205
void purple_prefs_set_int(const char *name, int value);
Evan@653
   206
Evan@653
   207
/**
Evan@653
   208
 * Set string pref value
Evan@653
   209
 *
Evan@653
   210
 * @param name  The name of the pref
Evan@653
   211
 * @param value The value to set
Evan@653
   212
 */
Evan@653
   213
void purple_prefs_set_string(const char *name, const char *value);
Evan@653
   214
Evan@653
   215
/**
Evan@653
   216
 * Set string list pref value
Evan@653
   217
 *
Evan@653
   218
 * @param name  The name of the pref
Evan@653
   219
 * @param value The value to set
Evan@653
   220
 */
Evan@653
   221
void purple_prefs_set_string_list(const char *name, GList *value);
Evan@653
   222
Evan@653
   223
/**
Evan@653
   224
 * Set path pref value
Evan@653
   225
 *
Evan@653
   226
 * @param name  The name of the pref
Evan@653
   227
 * @param value The value to set
Evan@653
   228
 */
Evan@653
   229
void purple_prefs_set_path(const char *name, const char *value);
Evan@653
   230
Evan@653
   231
/**
Evan@653
   232
 * Set path list pref value
Evan@653
   233
 *
Evan@653
   234
 * @param name  The name of the pref
Evan@653
   235
 * @param value The value to set
Evan@653
   236
 */
Evan@653
   237
void purple_prefs_set_path_list(const char *name, GList *value);
Evan@653
   238
Evan@653
   239
Evan@653
   240
/**
Evan@653
   241
 * Check if a pref exists
Evan@653
   242
 *
Evan@653
   243
 * @param name The name of the pref
Evan@653
   244
 * @return TRUE if the pref exists.  Otherwise FALSE.
Evan@653
   245
 */
Evan@653
   246
gboolean purple_prefs_exists(const char *name);
Evan@653
   247
Evan@653
   248
/**
Evan@653
   249
 * Get pref type
Evan@653
   250
 *
Evan@653
   251
 * @param name The name of the pref
Evan@653
   252
 * @return The type of the pref
Evan@653
   253
 */
Evan@653
   254
PurplePrefType purple_prefs_get_type(const char *name);
Evan@653
   255
Evan@653
   256
/**
Evan@653
   257
 * Get boolean pref value
Evan@653
   258
 *
Evan@653
   259
 * @param name The name of the pref
Evan@653
   260
 * @return The value of the pref
Evan@653
   261
 */
Evan@653
   262
gboolean purple_prefs_get_bool(const char *name);
Evan@653
   263
Evan@653
   264
/**
Evan@653
   265
 * Get integer pref value
Evan@653
   266
 *
Evan@653
   267
 * @param name The name of the pref
Evan@653
   268
 * @return The value of the pref
Evan@653
   269
 */
Evan@653
   270
int purple_prefs_get_int(const char *name);
Evan@653
   271
Evan@653
   272
/**
Evan@653
   273
 * Get string pref value
Evan@653
   274
 *
Evan@653
   275
 * @param name The name of the pref
Evan@653
   276
 * @return The value of the pref
Evan@653
   277
 */
Evan@653
   278
const char *purple_prefs_get_string(const char *name);
Evan@653
   279
Evan@653
   280
/**
Evan@653
   281
 * Get string list pref value
Evan@653
   282
 *
Evan@653
   283
 * @param name The name of the pref
Evan@653
   284
 * @return The value of the pref
Evan@653
   285
 */
Evan@653
   286
GList *purple_prefs_get_string_list(const char *name);
Evan@653
   287
Evan@653
   288
/**
Evan@653
   289
 * Get path pref value
Evan@653
   290
 *
Evan@653
   291
 * @param name The name of the pref
Evan@653
   292
 * @return The value of the pref
Evan@653
   293
 */
Evan@653
   294
const char *purple_prefs_get_path(const char *name);
Evan@653
   295
Evan@653
   296
/**
Evan@653
   297
 * Get path list pref value
Evan@653
   298
 *
Evan@653
   299
 * @param name The name of the pref
Evan@653
   300
 * @return The value of the pref
Evan@653
   301
 */
Evan@653
   302
GList *purple_prefs_get_path_list(const char *name);
Evan@653
   303
Evan@653
   304
/**
Evan@653
   305
 * Returns a list of children for a pref
Evan@653
   306
 *
Evan@653
   307
 * @param name The parent pref
Evan@653
   308
 * @return A list of newly allocated strings denoting the names of the children.
Evan@653
   309
 *         Returns @c NULL if there are no children or if pref doesn't exist.
Evan@653
   310
 *         The caller must free all the strings and the list.
Evan@653
   311
 *
Evan@653
   312
 * @since 2.1.0
Evan@653
   313
 */
Evan@653
   314
GList *purple_prefs_get_children_names(const char *name);
Evan@653
   315
Evan@653
   316
/**
Evan@653
   317
 * Add a callback to a pref (and its children)
zacw@2539
   318
 *
zacw@2539
   319
 * @param handle   The handle of the receiver.
zacw@2539
   320
 * @param name     The name of the preference
zacw@2539
   321
 * @param cb       The callback function
zacw@2539
   322
 * @param data     The data to pass to the callback function.
zacw@2539
   323
 *
zacw@2539
   324
 * @return An id to disconnect the callback
zacw@2539
   325
 *
zacw@2539
   326
 * @see purple_prefs_disconnect_callback
Evan@653
   327
 */
Evan@653
   328
guint purple_prefs_connect_callback(void *handle, const char *name, PurplePrefCallback cb,
Evan@653
   329
		gpointer data);
Evan@653
   330
Evan@653
   331
/**
Evan@653
   332
 * Remove a callback to a pref
Evan@653
   333
 */
Evan@653
   334
void purple_prefs_disconnect_callback(guint callback_id);
Evan@653
   335
Evan@653
   336
/**
Evan@653
   337
 * Remove all pref callbacks by handle
Evan@653
   338
 */
Evan@653
   339
void purple_prefs_disconnect_by_handle(void *handle);
Evan@653
   340
Evan@653
   341
/**
Evan@653
   342
 * Trigger callbacks as if the pref changed
Evan@653
   343
 */
Evan@653
   344
void purple_prefs_trigger_callback(const char *name);
Evan@653
   345
Evan@653
   346
/**
Evan@653
   347
 * Read preferences
Evan@653
   348
 */
Evan@653
   349
gboolean purple_prefs_load(void);
Evan@653
   350
Evan@653
   351
/**
Evan@653
   352
 * Rename legacy prefs and delete some that no longer exist.
Evan@653
   353
 */
Evan@653
   354
void purple_prefs_update_old(void);
Evan@653
   355
Evan@653
   356
/*@}*/
Evan@653
   357
Evan@653
   358
#ifdef __cplusplus
Evan@653
   359
}
Evan@653
   360
#endif
Evan@653
   361
Evan@653
   362
#endif /* _PURPLE_PREFS_H_ */