Frameworks/libpurple.framework/Versions/0.6.2/Headers/request.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 1739 Frameworks/libpurple.framework/Versions/0.6.0/Headers/request.h@8b0daad9656c
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
Evan@653
     1
/**
Evan@653
     2
 * @file request.h Request 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
#ifndef _PURPLE_REQUEST_H_
Evan@653
    27
#define _PURPLE_REQUEST_H_
Evan@653
    28
Evan@653
    29
#include <stdlib.h>
Evan@653
    30
#include <glib-object.h>
Evan@653
    31
#include <glib.h>
Evan@653
    32
Evan@1427
    33
/** @copydoc _PurpleRequestField */
Evan@1427
    34
typedef struct _PurpleRequestField PurpleRequestField;
Evan@1427
    35
Evan@653
    36
#include "account.h"
Evan@653
    37
Evan@653
    38
#define PURPLE_DEFAULT_ACTION_NONE	-1
Evan@653
    39
Evan@653
    40
/**
Evan@653
    41
 * Request types.
Evan@653
    42
 */
Evan@653
    43
typedef enum
Evan@653
    44
{
Evan@653
    45
	PURPLE_REQUEST_INPUT = 0,  /**< Text input request.        */
Evan@653
    46
	PURPLE_REQUEST_CHOICE,     /**< Multiple-choice request.   */
Evan@653
    47
	PURPLE_REQUEST_ACTION,     /**< Action request.            */
Evan@653
    48
	PURPLE_REQUEST_FIELDS,     /**< Multiple fields request.   */
Evan@653
    49
	PURPLE_REQUEST_FILE,       /**< File open or save request. */
Evan@653
    50
	PURPLE_REQUEST_FOLDER      /**< Folder selection request.  */
Evan@653
    51
Evan@653
    52
} PurpleRequestType;
Evan@653
    53
Evan@653
    54
/**
Evan@653
    55
 * A type of field.
Evan@653
    56
 */
Evan@653
    57
typedef enum
Evan@653
    58
{
Evan@653
    59
	PURPLE_REQUEST_FIELD_NONE,
Evan@653
    60
	PURPLE_REQUEST_FIELD_STRING,
Evan@653
    61
	PURPLE_REQUEST_FIELD_INTEGER,
Evan@653
    62
	PURPLE_REQUEST_FIELD_BOOLEAN,
Evan@653
    63
	PURPLE_REQUEST_FIELD_CHOICE,
Evan@653
    64
	PURPLE_REQUEST_FIELD_LIST,
Evan@653
    65
	PURPLE_REQUEST_FIELD_LABEL,
Evan@653
    66
	PURPLE_REQUEST_FIELD_IMAGE,
Evan@653
    67
	PURPLE_REQUEST_FIELD_ACCOUNT
Evan@653
    68
Evan@653
    69
} PurpleRequestFieldType;
Evan@653
    70
Evan@653
    71
/**
Evan@653
    72
 * Multiple fields request data.
Evan@653
    73
 */
Evan@653
    74
typedef struct
Evan@653
    75
{
Evan@653
    76
	GList *groups;
Evan@653
    77
Evan@653
    78
	GHashTable *fields;
Evan@653
    79
Evan@653
    80
	GList *required_fields;
Evan@653
    81
Evan@653
    82
	void *ui_data;
Evan@653
    83
Evan@653
    84
} PurpleRequestFields;
Evan@653
    85
Evan@653
    86
/**
Evan@653
    87
 * A group of fields with a title.
Evan@653
    88
 */
Evan@653
    89
typedef struct
Evan@653
    90
{
Evan@653
    91
	PurpleRequestFields *fields_list;
Evan@653
    92
Evan@653
    93
	char *title;
Evan@653
    94
Evan@653
    95
	GList *fields;
Evan@653
    96
Evan@653
    97
} PurpleRequestFieldGroup;
Evan@653
    98
Evan@1427
    99
#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_REQUEST_C_)
Evan@653
   100
/**
Evan@653
   101
 * A request field.
Evan@653
   102
 */
Evan@1427
   103
struct _PurpleRequestField
Evan@653
   104
{
Evan@653
   105
	PurpleRequestFieldType type;
Evan@653
   106
	PurpleRequestFieldGroup *group;
Evan@653
   107
Evan@653
   108
	char *id;
Evan@653
   109
	char *label;
Evan@653
   110
	char *type_hint;
Evan@653
   111
Evan@653
   112
	gboolean visible;
Evan@653
   113
	gboolean required;
Evan@653
   114
Evan@653
   115
	union
Evan@653
   116
	{
Evan@653
   117
		struct
Evan@653
   118
		{
Evan@653
   119
			gboolean multiline;
Evan@653
   120
			gboolean masked;
Evan@653
   121
			gboolean editable;
Evan@653
   122
			char *default_value;
Evan@653
   123
			char *value;
Evan@653
   124
Evan@653
   125
		} string;
Evan@653
   126
Evan@653
   127
		struct
Evan@653
   128
		{
Evan@653
   129
			int default_value;
Evan@653
   130
			int value;
Evan@653
   131
Evan@653
   132
		} integer;
Evan@653
   133
Evan@653
   134
		struct
Evan@653
   135
		{
Evan@653
   136
			gboolean default_value;
Evan@653
   137
			gboolean value;
Evan@653
   138
Evan@653
   139
		} boolean;
Evan@653
   140
Evan@653
   141
		struct
Evan@653
   142
		{
Evan@653
   143
			int default_value;
Evan@653
   144
			int value;
Evan@653
   145
Evan@653
   146
			GList *labels;
Evan@653
   147
Evan@653
   148
		} choice;
Evan@653
   149
Evan@653
   150
		struct
Evan@653
   151
		{
Evan@653
   152
			GList *items;
Evan@653
   153
			GHashTable *item_data;
Evan@653
   154
			GList *selected;
Evan@653
   155
			GHashTable *selected_table;
Evan@653
   156
Evan@653
   157
			gboolean multiple_selection;
Evan@653
   158
Evan@653
   159
		} list;
Evan@653
   160
Evan@653
   161
		struct
Evan@653
   162
		{
Evan@653
   163
			PurpleAccount *default_account;
Evan@653
   164
			PurpleAccount *account;
Evan@653
   165
			gboolean show_all;
Evan@653
   166
Evan@653
   167
			PurpleFilterAccountFunc filter_func;
Evan@653
   168
Evan@653
   169
		} account;
Evan@653
   170
Evan@653
   171
		struct
Evan@653
   172
		{
Evan@653
   173
			unsigned int scale_x;
Evan@653
   174
			unsigned int scale_y;
Evan@653
   175
			const char *buffer;
Evan@653
   176
			gsize size;
Evan@653
   177
		} image;
Evan@653
   178
Evan@653
   179
	} u;
Evan@653
   180
Evan@653
   181
	void *ui_data;
Evan@653
   182
Evan@1427
   183
};
Evan@1427
   184
#endif
Evan@653
   185
Evan@653
   186
/**
Evan@653
   187
 * Request UI operations.
Evan@653
   188
 */
Evan@653
   189
typedef struct
Evan@653
   190
{
Evan@653
   191
	/** @see purple_request_input(). */
Evan@653
   192
	void *(*request_input)(const char *title, const char *primary,
Evan@653
   193
	                       const char *secondary, const char *default_value,
Evan@653
   194
	                       gboolean multiline, gboolean masked, gchar *hint,
Evan@653
   195
	                       const char *ok_text, GCallback ok_cb,
Evan@653
   196
	                       const char *cancel_text, GCallback cancel_cb,
Evan@653
   197
	                       PurpleAccount *account, const char *who,
Evan@653
   198
	                       PurpleConversation *conv, void *user_data);
Evan@653
   199
Evan@653
   200
	/** @see purple_request_choice_varg(). */
Evan@653
   201
	void *(*request_choice)(const char *title, const char *primary,
Evan@653
   202
	                        const char *secondary, int default_value,
Evan@653
   203
	                        const char *ok_text, GCallback ok_cb,
Evan@653
   204
	                        const char *cancel_text, GCallback cancel_cb,
Evan@653
   205
	                        PurpleAccount *account, const char *who,
Evan@653
   206
	                        PurpleConversation *conv, void *user_data,
Evan@653
   207
	                        va_list choices);
Evan@653
   208
Evan@653
   209
	/** @see purple_request_action_varg(). */
Evan@653
   210
	void *(*request_action)(const char *title, const char *primary,
Evan@653
   211
	                        const char *secondary, int default_action,
Evan@653
   212
	                        PurpleAccount *account, const char *who,
Evan@653
   213
	                        PurpleConversation *conv, void *user_data,
Evan@653
   214
	                        size_t action_count, va_list actions);
Evan@653
   215
Evan@653
   216
	/** @see purple_request_fields(). */
Evan@653
   217
	void *(*request_fields)(const char *title, const char *primary,
Evan@653
   218
	                        const char *secondary, PurpleRequestFields *fields,
Evan@653
   219
	                        const char *ok_text, GCallback ok_cb,
Evan@653
   220
	                        const char *cancel_text, GCallback cancel_cb,
Evan@653
   221
	                        PurpleAccount *account, const char *who,
Evan@653
   222
	                        PurpleConversation *conv, void *user_data);
Evan@653
   223
Evan@653
   224
	/** @see purple_request_file(). */
Evan@653
   225
	void *(*request_file)(const char *title, const char *filename,
Evan@653
   226
	                      gboolean savedialog, GCallback ok_cb,
Evan@653
   227
	                      GCallback cancel_cb, PurpleAccount *account,
Evan@653
   228
	                      const char *who, PurpleConversation *conv,
Evan@653
   229
	                      void *user_data);
Evan@653
   230
Evan@653
   231
	void (*close_request)(PurpleRequestType type, void *ui_handle);
Evan@653
   232
Evan@653
   233
	/** @see purple_request_folder(). */
Evan@653
   234
	void *(*request_folder)(const char *title, const char *dirname,
Evan@653
   235
	                        GCallback ok_cb, GCallback cancel_cb,
Evan@653
   236
	                        PurpleAccount *account, const char *who,
Evan@653
   237
	                        PurpleConversation *conv, void *user_data);
Evan@653
   238
Evan@653
   239
	void (*_purple_reserved1)(void);
Evan@653
   240
	void (*_purple_reserved2)(void);
Evan@653
   241
	void (*_purple_reserved3)(void);
Evan@653
   242
	void (*_purple_reserved4)(void);
Evan@653
   243
} PurpleRequestUiOps;
Evan@653
   244
Evan@653
   245
typedef void (*PurpleRequestInputCb)(void *, const char *);
Evan@653
   246
Evan@653
   247
/** The type of callbacks passed to purple_request_action().  The first
Evan@653
   248
 *  argument is the @a user_data parameter; the second is the index in the list
Evan@653
   249
 *  of actions of the one chosen.
Evan@653
   250
 */
Evan@653
   251
typedef void (*PurpleRequestActionCb)(void *, int);
Evan@653
   252
typedef void (*PurpleRequestChoiceCb)(void *, int);
Evan@653
   253
typedef void (*PurpleRequestFieldsCb)(void *, PurpleRequestFields *fields);
Evan@653
   254
typedef void (*PurpleRequestFileCb)(void *, const char *filename);
Evan@653
   255
Evan@653
   256
#ifdef __cplusplus
Evan@653
   257
extern "C" {
Evan@653
   258
#endif
Evan@653
   259
Evan@653
   260
/**************************************************************************/
Evan@653
   261
/** @name Field List API                                                  */
Evan@653
   262
/**************************************************************************/
Evan@653
   263
/*@{*/
Evan@653
   264
Evan@653
   265
/**
Evan@653
   266
 * Creates a list of fields to pass to purple_request_fields().
Evan@653
   267
 *
Evan@653
   268
 * @return A PurpleRequestFields structure.
Evan@653
   269
 */
Evan@653
   270
PurpleRequestFields *purple_request_fields_new(void);
Evan@653
   271
Evan@653
   272
/**
Evan@653
   273
 * Destroys a list of fields.
Evan@653
   274
 *
Evan@653
   275
 * @param fields The list of fields to destroy.
Evan@653
   276
 */
Evan@653
   277
void purple_request_fields_destroy(PurpleRequestFields *fields);
Evan@653
   278
Evan@653
   279
/**
Evan@653
   280
 * Adds a group of fields to the list.
Evan@653
   281
 *
Evan@653
   282
 * @param fields The fields list.
Evan@653
   283
 * @param group  The group to add.
Evan@653
   284
 */
Evan@653
   285
void purple_request_fields_add_group(PurpleRequestFields *fields,
Evan@653
   286
								   PurpleRequestFieldGroup *group);
Evan@653
   287
Evan@653
   288
/**
Evan@653
   289
 * Returns a list of all groups in a field list.
Evan@653
   290
 *
Evan@653
   291
 * @param fields The fields list.
Evan@653
   292
 *
Evan@653
   293
 * @constreturn A list of groups.
Evan@653
   294
 */
Evan@653
   295
GList *purple_request_fields_get_groups(const PurpleRequestFields *fields);
Evan@653
   296
Evan@653
   297
/**
Evan@653
   298
 * Returns whether or not the field with the specified ID exists.
Evan@653
   299
 *
Evan@653
   300
 * @param fields The fields list.
Evan@653
   301
 * @param id     The ID of the field.
Evan@653
   302
 *
Evan@653
   303
 * @return TRUE if the field exists, or FALSE.
Evan@653
   304
 */
Evan@653
   305
gboolean purple_request_fields_exists(const PurpleRequestFields *fields,
Evan@653
   306
									const char *id);
Evan@653
   307
Evan@653
   308
/**
Evan@653
   309
 * Returns a list of all required fields.
Evan@653
   310
 *
Evan@653
   311
 * @param fields The fields list.
Evan@653
   312
 *
Evan@653
   313
 * @constreturn The list of required fields.
Evan@653
   314
 */
Evan@653
   315
GList *purple_request_fields_get_required(const PurpleRequestFields *fields);
Evan@653
   316
Evan@653
   317
/**
Evan@653
   318
 * Returns whether or not a field with the specified ID is required.
Evan@653
   319
 *
Evan@653
   320
 * @param fields The fields list.
Evan@653
   321
 * @param id     The field ID.
Evan@653
   322
 *
Evan@653
   323
 * @return TRUE if the specified field is required, or FALSE.
Evan@653
   324
 */
Evan@653
   325
gboolean purple_request_fields_is_field_required(const PurpleRequestFields *fields,
Evan@653
   326
											   const char *id);
Evan@653
   327
Evan@653
   328
/**
Evan@653
   329
 * Returns whether or not all required fields have values.
Evan@653
   330
 *
Evan@653
   331
 * @param fields The fields list.
Evan@653
   332
 *
Evan@653
   333
 * @return TRUE if all required fields have values, or FALSE.
Evan@653
   334
 */
Evan@653
   335
gboolean purple_request_fields_all_required_filled(
Evan@653
   336
	const PurpleRequestFields *fields);
Evan@653
   337
Evan@653
   338
/**
Evan@653
   339
 * Return the field with the specified ID.
Evan@653
   340
 *
Evan@653
   341
 * @param fields The fields list.
Evan@653
   342
 * @param id     The ID of the field.
Evan@653
   343
 *
Evan@653
   344
 * @return The field, if found.
Evan@653
   345
 */
Evan@653
   346
PurpleRequestField *purple_request_fields_get_field(
Evan@653
   347
		const PurpleRequestFields *fields, const char *id);
Evan@653
   348
Evan@653
   349
/**
Evan@653
   350
 * Returns the string value of a field with the specified ID.
Evan@653
   351
 *
Evan@653
   352
 * @param fields The fields list.
Evan@653
   353
 * @param id     The ID of the field.
Evan@653
   354
 *
Evan@653
   355
 * @return The string value, if found, or @c NULL otherwise.
Evan@653
   356
 */
Evan@653
   357
const char *purple_request_fields_get_string(const PurpleRequestFields *fields,
Evan@653
   358
										   const char *id);
Evan@653
   359
Evan@653
   360
/**
Evan@653
   361
 * Returns the integer value of a field with the specified ID.
Evan@653
   362
 *
Evan@653
   363
 * @param fields The fields list.
Evan@653
   364
 * @param id     The ID of the field.
Evan@653
   365
 *
Evan@653
   366
 * @return The integer value, if found, or 0 otherwise.
Evan@653
   367
 */
Evan@653
   368
int purple_request_fields_get_integer(const PurpleRequestFields *fields,
Evan@653
   369
									const char *id);
Evan@653
   370
Evan@653
   371
/**
Evan@653
   372
 * Returns the boolean value of a field with the specified ID.
Evan@653
   373
 *
Evan@653
   374
 * @param fields The fields list.
Evan@653
   375
 * @param id     The ID of the field.
Evan@653
   376
 *
Evan@653
   377
 * @return The boolean value, if found, or @c FALSE otherwise.
Evan@653
   378
 */
Evan@653
   379
gboolean purple_request_fields_get_bool(const PurpleRequestFields *fields,
Evan@653
   380
									  const char *id);
Evan@653
   381
Evan@653
   382
/**
Evan@653
   383
 * Returns the choice index of a field with the specified ID.
Evan@653
   384
 *
Evan@653
   385
 * @param fields The fields list.
Evan@653
   386
 * @param id     The ID of the field.
Evan@653
   387
 *
Evan@653
   388
 * @return The choice index, if found, or -1 otherwise.
Evan@653
   389
 */
Evan@653
   390
int purple_request_fields_get_choice(const PurpleRequestFields *fields,
Evan@653
   391
								   const char *id);
Evan@653
   392
Evan@653
   393
/**
Evan@653
   394
 * Returns the account of a field with the specified ID.
Evan@653
   395
 *
Evan@653
   396
 * @param fields The fields list.
Evan@653
   397
 * @param id     The ID of the field.
Evan@653
   398
 *
Evan@653
   399
 * @return The account value, if found, or NULL otherwise.
Evan@653
   400
 */
Evan@653
   401
PurpleAccount *purple_request_fields_get_account(const PurpleRequestFields *fields,
Evan@653
   402
											 const char *id);
Evan@653
   403
Evan@653
   404
/*@}*/
Evan@653
   405
Evan@653
   406
/**************************************************************************/
Evan@653
   407
/** @name Fields Group API                                                */
Evan@653
   408
/**************************************************************************/
Evan@653
   409
/*@{*/
Evan@653
   410
Evan@653
   411
/**
Evan@653
   412
 * Creates a fields group with an optional title.
Evan@653
   413
 *
Evan@653
   414
 * @param title The optional title to give the group.
Evan@653
   415
 *
Evan@653
   416
 * @return A new fields group
Evan@653
   417
 */
Evan@653
   418
PurpleRequestFieldGroup *purple_request_field_group_new(const char *title);
Evan@653
   419
Evan@653
   420
/**
Evan@653
   421
 * Destroys a fields group.
Evan@653
   422
 *
Evan@653
   423
 * @param group The group to destroy.
Evan@653
   424
 */
Evan@653
   425
void purple_request_field_group_destroy(PurpleRequestFieldGroup *group);
Evan@653
   426
Evan@653
   427
/**
Evan@653
   428
 * Adds a field to the group.
Evan@653
   429
 *
Evan@653
   430
 * @param group The group to add the field to.
Evan@653
   431
 * @param field The field to add to the group.
Evan@653
   432
 */
Evan@653
   433
void purple_request_field_group_add_field(PurpleRequestFieldGroup *group,
Evan@653
   434
										PurpleRequestField *field);
Evan@653
   435
Evan@653
   436
/**
Evan@653
   437
 * Returns the title of a fields group.
Evan@653
   438
 *
Evan@653
   439
 * @param group The group.
Evan@653
   440
 *
Evan@653
   441
 * @return The title, if set.
Evan@653
   442
 */
Evan@653
   443
const char *purple_request_field_group_get_title(
Evan@653
   444
		const PurpleRequestFieldGroup *group);
Evan@653
   445
Evan@653
   446
/**
Evan@653
   447
 * Returns a list of all fields in a group.
Evan@653
   448
 *
Evan@653
   449
 * @param group The group.
Evan@653
   450
 *
Evan@653
   451
 * @constreturn The list of fields in the group.
Evan@653
   452
 */
Evan@653
   453
GList *purple_request_field_group_get_fields(
Evan@653
   454
		const PurpleRequestFieldGroup *group);
Evan@653
   455
Evan@653
   456
/*@}*/
Evan@653
   457
Evan@653
   458
/**************************************************************************/
Evan@653
   459
/** @name Field API                                                       */
Evan@653
   460
/**************************************************************************/
Evan@653
   461
/*@{*/
Evan@653
   462
Evan@653
   463
/**
Evan@653
   464
 * Creates a field of the specified type.
Evan@653
   465
 *
Evan@653
   466
 * @param id   The field ID.
Evan@653
   467
 * @param text The text label of the field.
Evan@653
   468
 * @param type The type of field.
Evan@653
   469
 *
Evan@653
   470
 * @return The new field.
Evan@653
   471
 */
Evan@653
   472
PurpleRequestField *purple_request_field_new(const char *id, const char *text,
Evan@653
   473
										 PurpleRequestFieldType type);
Evan@653
   474
Evan@653
   475
/**
Evan@653
   476
 * Destroys a field.
Evan@653
   477
 *
Evan@653
   478
 * @param field The field to destroy.
Evan@653
   479
 */
Evan@653
   480
void purple_request_field_destroy(PurpleRequestField *field);
Evan@653
   481
Evan@653
   482
/**
Evan@653
   483
 * Sets the label text of a field.
Evan@653
   484
 *
Evan@653
   485
 * @param field The field.
Evan@653
   486
 * @param label The text label.
Evan@653
   487
 */
Evan@653
   488
void purple_request_field_set_label(PurpleRequestField *field, const char *label);
Evan@653
   489
Evan@653
   490
/**
Evan@653
   491
 * Sets whether or not a field is visible.
Evan@653
   492
 *
Evan@653
   493
 * @param field   The field.
Evan@653
   494
 * @param visible TRUE if visible, or FALSE if not.
Evan@653
   495
 */
Evan@653
   496
void purple_request_field_set_visible(PurpleRequestField *field, gboolean visible);
Evan@653
   497
Evan@653
   498
/**
Evan@653
   499
 * Sets the type hint for the field.
Evan@653
   500
 *
Evan@653
   501
 * This is optionally used by the UIs to provide such features as
Evan@653
   502
 * auto-completion for type hints like "account" and "screenname".
Evan@653
   503
 *
Evan@653
   504
 * @param field     The field.
Evan@653
   505
 * @param type_hint The type hint.
Evan@653
   506
 */
Evan@653
   507
void purple_request_field_set_type_hint(PurpleRequestField *field,
Evan@653
   508
									  const char *type_hint);
Evan@653
   509
Evan@653
   510
/**
Evan@653
   511
 * Sets whether or not a field is required.
Evan@653
   512
 *
Evan@653
   513
 * @param field    The field.
Evan@653
   514
 * @param required TRUE if required, or FALSE.
Evan@653
   515
 */
Evan@653
   516
void purple_request_field_set_required(PurpleRequestField *field,
Evan@653
   517
									 gboolean required);
Evan@653
   518
Evan@653
   519
/**
Evan@653
   520
 * Returns the type of a field.
Evan@653
   521
 *
Evan@653
   522
 * @param field The field.
Evan@653
   523
 *
Evan@653
   524
 * @return The field's type.
Evan@653
   525
 */
Evan@653
   526
PurpleRequestFieldType purple_request_field_get_type(const PurpleRequestField *field);
Evan@653
   527
Evan@653
   528
/**
Evan@1427
   529
 * Returns the group for the field.
Evan@1427
   530
 *
Evan@1427
   531
 * @param field The field.
Evan@1427
   532
 *
Evan@1427
   533
 * @return The UI data.
Evan@1427
   534
 *
Evan@1427
   535
 * @since 2.6.0
Evan@1427
   536
 */
Evan@1427
   537
PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field);
Evan@1427
   538
Evan@1427
   539
/**
Evan@653
   540
 * Returns the ID of a field.
Evan@653
   541
 *
Evan@653
   542
 * @param field The field.
Evan@653
   543
 *
Evan@653
   544
 * @return The ID
Evan@653
   545
 */
Evan@653
   546
const char *purple_request_field_get_id(const PurpleRequestField *field);
Evan@653
   547
Evan@653
   548
/**
Evan@653
   549
 * Returns the label text of a field.
Evan@653
   550
 *
Evan@653
   551
 * @param field The field.
Evan@653
   552
 *
Evan@653
   553
 * @return The label text.
Evan@653
   554
 */
Evan@653
   555
const char *purple_request_field_get_label(const PurpleRequestField *field);
Evan@653
   556
Evan@653
   557
/**
Evan@653
   558
 * Returns whether or not a field is visible.
Evan@653
   559
 *
Evan@653
   560
 * @param field The field.
Evan@653
   561
 *
Evan@653
   562
 * @return TRUE if the field is visible. FALSE otherwise.
Evan@653
   563
 */
Evan@653
   564
gboolean purple_request_field_is_visible(const PurpleRequestField *field);
Evan@653
   565
Evan@653
   566
/**
Evan@653
   567
 * Returns the field's type hint.
Evan@653
   568
 *
Evan@653
   569
 * @param field The field.
Evan@653
   570
 *
Evan@653
   571
 * @return The field's type hint.
Evan@653
   572
 */
Evan@653
   573
const char *purple_request_field_get_type_hint(const PurpleRequestField *field);
Evan@653
   574
Evan@653
   575
/**
Evan@653
   576
 * Returns whether or not a field is required.
Evan@653
   577
 *
Evan@653
   578
 * @param field The field.
Evan@653
   579
 *
Evan@653
   580
 * @return TRUE if the field is required, or FALSE.
Evan@653
   581
 */
Evan@653
   582
gboolean purple_request_field_is_required(const PurpleRequestField *field);
Evan@653
   583
Evan@1427
   584
/**
Evan@1427
   585
 * Returns the ui_data for a field.
Evan@1427
   586
 *
Evan@1427
   587
 * @param field The field.
Evan@1427
   588
 *
Evan@1427
   589
 * @return The UI data.
Evan@1427
   590
 *
Evan@1427
   591
 * @since 2.6.0
Evan@1427
   592
 */
Evan@1427
   593
gpointer purple_request_field_get_ui_data(const PurpleRequestField *field);
Evan@1427
   594
Evan@1427
   595
/**
Evan@1427
   596
 * Sets the ui_data for a field.
Evan@1427
   597
 *
Evan@1427
   598
 * @param field The field.
Evan@1427
   599
 * @param ui_data The UI data.
Evan@1427
   600
 *
Evan@1427
   601
 * @return The UI data.
Evan@1427
   602
 *
Evan@1427
   603
 * @since 2.6.0
Evan@1427
   604
 */
Evan@1427
   605
void purple_request_field_set_ui_data(PurpleRequestField *field,
Evan@1427
   606
                                      gpointer ui_data);
Evan@1427
   607
Evan@653
   608
/*@}*/
Evan@653
   609
Evan@653
   610
/**************************************************************************/
Evan@653
   611
/** @name String Field API                                                */
Evan@653
   612
/**************************************************************************/
Evan@653
   613
/*@{*/
Evan@653
   614
Evan@653
   615
/**
Evan@653
   616
 * Creates a string request field.
Evan@653
   617
 *
Evan@653
   618
 * @param id            The field ID.
Evan@653
   619
 * @param text          The text label of the field.
Evan@653
   620
 * @param default_value The optional default value.
Evan@653
   621
 * @param multiline     Whether or not this should be a multiline string.
Evan@653
   622
 *
Evan@653
   623
 * @return The new field.
Evan@653
   624
 */
Evan@653
   625
PurpleRequestField *purple_request_field_string_new(const char *id,
Evan@653
   626
												const char *text,
Evan@653
   627
												const char *default_value,
Evan@653
   628
												gboolean multiline);
Evan@653
   629
Evan@653
   630
/**
Evan@653
   631
 * Sets the default value in a string field.
Evan@653
   632
 *
Evan@653
   633
 * @param field         The field.
Evan@653
   634
 * @param default_value The default value.
Evan@653
   635
 */
Evan@653
   636
void purple_request_field_string_set_default_value(PurpleRequestField *field,
Evan@653
   637
												 const char *default_value);
Evan@653
   638
Evan@653
   639
/**
Evan@653
   640
 * Sets the value in a string field.
Evan@653
   641
 *
Evan@653
   642
 * @param field The field.
Evan@653
   643
 * @param value The value.
Evan@653
   644
 */
Evan@653
   645
void purple_request_field_string_set_value(PurpleRequestField *field,
Evan@653
   646
										 const char *value);
Evan@653
   647
Evan@653
   648
/**
Evan@653
   649
 * Sets whether or not a string field is masked
Evan@653
   650
 * (commonly used for password fields).
Evan@653
   651
 *
Evan@653
   652
 * @param field  The field.
Evan@653
   653
 * @param masked The masked value.
Evan@653
   654
 */
Evan@653
   655
void purple_request_field_string_set_masked(PurpleRequestField *field,
Evan@653
   656
										  gboolean masked);
Evan@653
   657
Evan@653
   658
/**
Evan@653
   659
 * Sets whether or not a string field is editable.
Evan@653
   660
 *
Evan@653
   661
 * @param field    The field.
Evan@653
   662
 * @param editable The editable value.
Evan@653
   663
 */
Evan@653
   664
void purple_request_field_string_set_editable(PurpleRequestField *field,
Evan@653
   665
											gboolean editable);
Evan@653
   666
Evan@653
   667
/**
Evan@653
   668
 * Returns the default value in a string field.
Evan@653
   669
 *
Evan@653
   670
 * @param field The field.
Evan@653
   671
 *
Evan@653
   672
 * @return The default value.
Evan@653
   673
 */
Evan@653
   674
const char *purple_request_field_string_get_default_value(
Evan@653
   675
		const PurpleRequestField *field);
Evan@653
   676
Evan@653
   677
/**
Evan@653
   678
 * Returns the user-entered value in a string field.
Evan@653
   679
 *
Evan@653
   680
 * @param field The field.
Evan@653
   681
 *
Evan@653
   682
 * @return The value.
Evan@653
   683
 */
Evan@653
   684
const char *purple_request_field_string_get_value(const PurpleRequestField *field);
Evan@653
   685
Evan@653
   686
/**
Evan@653
   687
 * Returns whether or not a string field is multi-line.
Evan@653
   688
 *
Evan@653
   689
 * @param field The field.
Evan@653
   690
 *
Evan@653
   691
 * @return @c TRUE if the field is mulit-line, or @c FALSE otherwise.
Evan@653
   692
 */
Evan@653
   693
gboolean purple_request_field_string_is_multiline(const PurpleRequestField *field);
Evan@653
   694
Evan@653
   695
/**
Evan@653
   696
 * Returns whether or not a string field is masked.
Evan@653
   697
 *
Evan@653
   698
 * @param field The field.
Evan@653
   699
 *
Evan@653
   700
 * @return @c TRUE if the field is masked, or @c FALSE otherwise.
Evan@653
   701
 */
Evan@653
   702
gboolean purple_request_field_string_is_masked(const PurpleRequestField *field);
Evan@653
   703
Evan@653
   704
/**
Evan@653
   705
 * Returns whether or not a string field is editable.
Evan@653
   706
 *
Evan@653
   707
 * @param field The field.
Evan@653
   708
 *
Evan@653
   709
 * @return @c TRUE if the field is editable, or @c FALSE otherwise.
Evan@653
   710
 */
Evan@653
   711
gboolean purple_request_field_string_is_editable(const PurpleRequestField *field);
Evan@653
   712
Evan@653
   713
/*@}*/
Evan@653
   714
Evan@653
   715
/**************************************************************************/
Evan@653
   716
/** @name Integer Field API                                               */
Evan@653
   717
/**************************************************************************/
Evan@653
   718
/*@{*/
Evan@653
   719
Evan@653
   720
/**
Evan@653
   721
 * Creates an integer field.
Evan@653
   722
 *
Evan@653
   723
 * @param id            The field ID.
Evan@653
   724
 * @param text          The text label of the field.
Evan@653
   725
 * @param default_value The default value.
Evan@653
   726
 *
Evan@653
   727
 * @return The new field.
Evan@653
   728
 */
Evan@653
   729
PurpleRequestField *purple_request_field_int_new(const char *id,
Evan@653
   730
											 const char *text,
Evan@653
   731
											 int default_value);
Evan@653
   732
Evan@653
   733
/**
Evan@653
   734
 * Sets the default value in an integer field.
Evan@653
   735
 *
Evan@653
   736
 * @param field         The field.
Evan@653
   737
 * @param default_value The default value.
Evan@653
   738
 */
Evan@653
   739
void purple_request_field_int_set_default_value(PurpleRequestField *field,
Evan@653
   740
											  int default_value);
Evan@653
   741
Evan@653
   742
/**
Evan@653
   743
 * Sets the value in an integer field.
Evan@653
   744
 *
Evan@653
   745
 * @param field The field.
Evan@653
   746
 * @param value The value.
Evan@653
   747
 */
Evan@653
   748
void purple_request_field_int_set_value(PurpleRequestField *field, int value);
Evan@653
   749
Evan@653
   750
/**
Evan@653
   751
 * Returns the default value in an integer field.
Evan@653
   752
 *
Evan@653
   753
 * @param field The field.
Evan@653
   754
 *
Evan@653
   755
 * @return The default value.
Evan@653
   756
 */
Evan@653
   757
int purple_request_field_int_get_default_value(const PurpleRequestField *field);
Evan@653
   758
Evan@653
   759
/**
Evan@653
   760
 * Returns the user-entered value in an integer field.
Evan@653
   761
 *
Evan@653
   762
 * @param field The field.
Evan@653
   763
 *
Evan@653
   764
 * @return The value.
Evan@653
   765
 */
Evan@653
   766
int purple_request_field_int_get_value(const PurpleRequestField *field);
Evan@653
   767
Evan@653
   768
/*@}*/
Evan@653
   769
Evan@653
   770
/**************************************************************************/
Evan@653
   771
/** @name Boolean Field API                                               */
Evan@653
   772
/**************************************************************************/
Evan@653
   773
/*@{*/
Evan@653
   774
Evan@653
   775
/**
Evan@653
   776
 * Creates a boolean field.
Evan@653
   777
 *
Evan@653
   778
 * This is often represented as a checkbox.
Evan@653
   779
 *
Evan@653
   780
 * @param id            The field ID.
Evan@653
   781
 * @param text          The text label of the field.
Evan@653
   782
 * @param default_value The default value.
Evan@653
   783
 *
Evan@653
   784
 * @return The new field.
Evan@653
   785
 */
Evan@653
   786
PurpleRequestField *purple_request_field_bool_new(const char *id,
Evan@653
   787
											  const char *text,
Evan@653
   788
											  gboolean default_value);
Evan@653
   789
Evan@653
   790
/**
Evan@653
   791
 * Sets the default value in an boolean field.
Evan@653
   792
 *
Evan@653
   793
 * @param field         The field.
Evan@653
   794
 * @param default_value The default value.
Evan@653
   795
 */
Evan@653
   796
void purple_request_field_bool_set_default_value(PurpleRequestField *field,
Evan@653
   797
											   gboolean default_value);
Evan@653
   798
Evan@653
   799
/**
Evan@653
   800
 * Sets the value in an boolean field.
Evan@653
   801
 *
Evan@653
   802
 * @param field The field.
Evan@653
   803
 * @param value The value.
Evan@653
   804
 */
Evan@653
   805
void purple_request_field_bool_set_value(PurpleRequestField *field,
Evan@653
   806
									   gboolean value);
Evan@653
   807
Evan@653
   808
/**
Evan@653
   809
 * Returns the default value in an boolean field.
Evan@653
   810
 *
Evan@653
   811
 * @param field The field.
Evan@653
   812
 *
Evan@653
   813
 * @return The default value.
Evan@653
   814
 */
Evan@653
   815
gboolean purple_request_field_bool_get_default_value(
Evan@653
   816
		const PurpleRequestField *field);
Evan@653
   817
Evan@653
   818
/**
Evan@653
   819
 * Returns the user-entered value in an boolean field.
Evan@653
   820
 *
Evan@653
   821
 * @param field The field.
Evan@653
   822
 *
Evan@653
   823
 * @return The value.
Evan@653
   824
 */
Evan@653
   825
gboolean purple_request_field_bool_get_value(const PurpleRequestField *field);
Evan@653
   826
Evan@653
   827
/*@}*/
Evan@653
   828
Evan@653
   829
/**************************************************************************/
Evan@653
   830
/** @name Choice Field API                                                */
Evan@653
   831
/**************************************************************************/
Evan@653
   832
/*@{*/
Evan@653
   833
Evan@653
   834
/**
Evan@653
   835
 * Creates a multiple choice field.
Evan@653
   836
 *
Evan@653
   837
 * This is often represented as a group of radio buttons.
Evan@653
   838
 *
Evan@653
   839
 * @param id            The field ID.
Evan@653
   840
 * @param text          The optional label of the field.
Evan@653
   841
 * @param default_value The default choice.
Evan@653
   842
 *
Evan@653
   843
 * @return The new field.
Evan@653
   844
 */
Evan@653
   845
PurpleRequestField *purple_request_field_choice_new(const char *id,
Evan@653
   846
												const char *text,
Evan@653
   847
												int default_value);
Evan@653
   848
Evan@653
   849
/**
Evan@653
   850
 * Adds a choice to a multiple choice field.
Evan@653
   851
 *
Evan@653
   852
 * @param field The choice field.
Evan@653
   853
 * @param label The choice label.
Evan@653
   854
 */
Evan@653
   855
void purple_request_field_choice_add(PurpleRequestField *field,
Evan@653
   856
								   const char *label);
Evan@653
   857
Evan@653
   858
/**
Evan@653
   859
 * Sets the default value in an choice field.
Evan@653
   860
 *
Evan@653
   861
 * @param field         The field.
Evan@653
   862
 * @param default_value The default value.
Evan@653
   863
 */
Evan@653
   864
void purple_request_field_choice_set_default_value(PurpleRequestField *field,
Evan@653
   865
												 int default_value);
Evan@653
   866
Evan@653
   867
/**
Evan@653
   868
 * Sets the value in an choice field.
Evan@653
   869
 *
Evan@653
   870
 * @param field The field.
Evan@653
   871
 * @param value The value.
Evan@653
   872
 */
Evan@653
   873
void purple_request_field_choice_set_value(PurpleRequestField *field, int value);
Evan@653
   874
Evan@653
   875
/**
Evan@653
   876
 * Returns the default value in an choice field.
Evan@653
   877
 *
Evan@653
   878
 * @param field The field.
Evan@653
   879
 *
Evan@653
   880
 * @return The default value.
Evan@653
   881
 */
Evan@653
   882
int purple_request_field_choice_get_default_value(const PurpleRequestField *field);
Evan@653
   883
Evan@653
   884
/**
Evan@653
   885
 * Returns the user-entered value in an choice field.
Evan@653
   886
 *
Evan@653
   887
 * @param field The field.
Evan@653
   888
 *
Evan@653
   889
 * @return The value.
Evan@653
   890
 */
Evan@653
   891
int purple_request_field_choice_get_value(const PurpleRequestField *field);
Evan@653
   892
Evan@653
   893
/**
Evan@653
   894
 * Returns a list of labels in a choice field.
Evan@653
   895
 *
Evan@653
   896
 * @param field The field.
Evan@653
   897
 *
Evan@653
   898
 * @constreturn The list of labels.
Evan@653
   899
 */
Evan@653
   900
GList *purple_request_field_choice_get_labels(const PurpleRequestField *field);
Evan@653
   901
Evan@653
   902
/*@}*/
Evan@653
   903
Evan@653
   904
/**************************************************************************/
Evan@653
   905
/** @name List Field API                                                  */
Evan@653
   906
/**************************************************************************/
Evan@653
   907
/*@{*/
Evan@653
   908
Evan@653
   909
/**
Evan@653
   910
 * Creates a multiple list item field.
Evan@653
   911
 *
Evan@653
   912
 * @param id   The field ID.
Evan@653
   913
 * @param text The optional label of the field.
Evan@653
   914
 *
Evan@653
   915
 * @return The new field.
Evan@653
   916
 */
Evan@653
   917
PurpleRequestField *purple_request_field_list_new(const char *id, const char *text);
Evan@653
   918
Evan@653
   919
/**
Evan@653
   920
 * Sets whether or not a list field allows multiple selection.
Evan@653
   921
 *
Evan@653
   922
 * @param field        The list field.
Evan@653
   923
 * @param multi_select TRUE if multiple selection is enabled,
Evan@653
   924
 *                     or FALSE otherwise.
Evan@653
   925
 */
Evan@653
   926
void purple_request_field_list_set_multi_select(PurpleRequestField *field,
Evan@653
   927
											  gboolean multi_select);
Evan@653
   928
Evan@653
   929
/**
Evan@653
   930
 * Returns whether or not a list field allows multiple selection.
Evan@653
   931
 *
Evan@653
   932
 * @param field The list field.
Evan@653
   933
 *
Evan@653
   934
 * @return TRUE if multiple selection is enabled, or FALSE otherwise.
Evan@653
   935
 */
Evan@653
   936
gboolean purple_request_field_list_get_multi_select(
Evan@653
   937
	const PurpleRequestField *field);
Evan@653
   938
Evan@653
   939
/**
Evan@653
   940
 * Returns the data for a particular item.
Evan@653
   941
 *
Evan@653
   942
 * @param field The list field.
Evan@653
   943
 * @param text  The item text.
Evan@653
   944
 *
Evan@653
   945
 * @return The data associated with the item.
Evan@653
   946
 */
Evan@653
   947
void *purple_request_field_list_get_data(const PurpleRequestField *field,
Evan@653
   948
									   const char *text);
Evan@653
   949
Evan@653
   950
/**
Evan@653
   951
 * Adds an item to a list field.
Evan@653
   952
 *
Evan@653
   953
 * @param field The list field.
Evan@653
   954
 * @param item  The list item.
Evan@653
   955
 * @param data  The associated data.
Evan@653
   956
 */
Evan@653
   957
void purple_request_field_list_add(PurpleRequestField *field,
Evan@653
   958
								 const char *item, void *data);
Evan@653
   959
Evan@653
   960
/**
Evan@653
   961
 * Adds a selected item to the list field.
Evan@653
   962
 *
Evan@653
   963
 * @param field The field.
Evan@653
   964
 * @param item  The item to add.
Evan@653
   965
 */
Evan@653
   966
void purple_request_field_list_add_selected(PurpleRequestField *field,
Evan@653
   967
										  const char *item);
Evan@653
   968
Evan@653
   969
/**
Evan@653
   970
 * Clears the list of selected items in a list field.
Evan@653
   971
 *
Evan@653
   972
 * @param field The field.
Evan@653
   973
 */
Evan@653
   974
void purple_request_field_list_clear_selected(PurpleRequestField *field);
Evan@653
   975
Evan@653
   976
/**
Evan@653
   977
 * Sets a list of selected items in a list field.
Evan@653
   978
 *
Evan@653
   979
 * @param field The field.
Evan@653
   980
 * @param items The list of selected items, which is not modified or freed.
Evan@653
   981
 */
Evan@653
   982
void purple_request_field_list_set_selected(PurpleRequestField *field,
Evan@653
   983
										  GList *items);
Evan@653
   984
Evan@653
   985
/**
Evan@653
   986
 * Returns whether or not a particular item is selected in a list field.
Evan@653
   987
 *
Evan@653
   988
 * @param field The field.
Evan@653
   989
 * @param item  The item.
Evan@653
   990
 *
Evan@653
   991
 * @return TRUE if the item is selected. FALSE otherwise.
Evan@653
   992
 */
Evan@653
   993
gboolean purple_request_field_list_is_selected(const PurpleRequestField *field,
Evan@653
   994
											 const char *item);
Evan@653
   995
Evan@653
   996
/**
Evan@653
   997
 * Returns a list of selected items in a list field.
Evan@653
   998
 *
Evan@653
   999
 * To retrieve the data for each item, use
Evan@653
  1000
 * purple_request_field_list_get_data().
Evan@653
  1001
 *
Evan@653
  1002
 * @param field The field.
Evan@653
  1003
 *
Evan@653
  1004
 * @constreturn The list of selected items.
Evan@653
  1005
 */
Evan@653
  1006
GList *purple_request_field_list_get_selected(
Evan@653
  1007
	const PurpleRequestField *field);
Evan@653
  1008
Evan@653
  1009
/**
Evan@653
  1010
 * Returns a list of items in a list field.
Evan@653
  1011
 *
Evan@653
  1012
 * @param field The field.
Evan@653
  1013
 *
Evan@653
  1014
 * @constreturn The list of items.
Evan@653
  1015
 */
Evan@653
  1016
GList *purple_request_field_list_get_items(const PurpleRequestField *field);
Evan@653
  1017
Evan@653
  1018
/*@}*/
Evan@653
  1019
Evan@653
  1020
/**************************************************************************/
Evan@653
  1021
/** @name Label Field API                                                 */
Evan@653
  1022
/**************************************************************************/
Evan@653
  1023
/*@{*/
Evan@653
  1024
Evan@653
  1025
/**
Evan@653
  1026
 * Creates a label field.
Evan@653
  1027
 *
Evan@653
  1028
 * @param id   The field ID.
Evan@653
  1029
 * @param text The label of the field.
Evan@653
  1030
 *
Evan@653
  1031
 * @return The new field.
Evan@653
  1032
 */
Evan@653
  1033
PurpleRequestField *purple_request_field_label_new(const char *id,
Evan@653
  1034
											   const char *text);
Evan@653
  1035
Evan@653
  1036
/*@}*/
Evan@653
  1037
Evan@653
  1038
/**************************************************************************/
Evan@653
  1039
/** @name Image Field API                                                 */
Evan@653
  1040
/**************************************************************************/
Evan@653
  1041
/*@{*/
Evan@653
  1042
Evan@653
  1043
/**
Evan@653
  1044
 * Creates an image field.
Evan@653
  1045
 *
Evan@653
  1046
 * @param id   The field ID.
Evan@653
  1047
 * @param text The label of the field.
Evan@653
  1048
 * @param buf  The image data.
Evan@653
  1049
 * @param size The size of the data in @a buffer.
Evan@653
  1050
 *
Evan@653
  1051
 * @return The new field.
Evan@653
  1052
 */
Evan@653
  1053
PurpleRequestField *purple_request_field_image_new(const char *id, const char *text,
Evan@653
  1054
											   const char *buf, gsize size);
Evan@653
  1055
Evan@653
  1056
/**
Evan@653
  1057
 * Sets the scale factors of an image field.
Evan@653
  1058
 *
Evan@653
  1059
 * @param field The image field.
Evan@653
  1060
 * @param x     The x scale factor.
Evan@653
  1061
 * @param y     The y scale factor.
Evan@653
  1062
 */
Evan@653
  1063
void purple_request_field_image_set_scale(PurpleRequestField *field, unsigned int x, unsigned int y);
Evan@653
  1064
Evan@653
  1065
/**
Evan@653
  1066
 * Returns pointer to the image.
Evan@653
  1067
 *
Evan@653
  1068
 * @param field The image field.
Evan@653
  1069
 *
Evan@653
  1070
 * @return Pointer to the image.
Evan@653
  1071
 */
Evan@653
  1072
const char *purple_request_field_image_get_buffer(PurpleRequestField *field);
Evan@653
  1073
Evan@653
  1074
/**
Evan@653
  1075
 * Returns size (in bytes) of the image.
Evan@653
  1076
 *
Evan@653
  1077
 * @param field The image field.
Evan@653
  1078
 *
Evan@653
  1079
 * @return Size of the image.
Evan@653
  1080
 */
Evan@653
  1081
gsize purple_request_field_image_get_size(PurpleRequestField *field);
Evan@653
  1082
Evan@653
  1083
/**
Evan@653
  1084
 * Returns X scale coefficient of the image.
Evan@653
  1085
 *
Evan@653
  1086
 * @param field The image field.
Evan@653
  1087
 *
Evan@653
  1088
 * @return X scale coefficient of the image.
Evan@653
  1089
 */
Evan@653
  1090
unsigned int purple_request_field_image_get_scale_x(PurpleRequestField *field);
Evan@653
  1091
Evan@653
  1092
/**
Evan@653
  1093
 * Returns Y scale coefficient of the image.
Evan@653
  1094
 *
Evan@653
  1095
 * @param field The image field.
Evan@653
  1096
 *
Evan@653
  1097
 * @return Y scale coefficient of the image.
Evan@653
  1098
 */
Evan@653
  1099
unsigned int purple_request_field_image_get_scale_y(PurpleRequestField *field);
Evan@653
  1100
Evan@653
  1101
/*@}*/
Evan@653
  1102
Evan@653
  1103
/**************************************************************************/
Evan@653
  1104
/** @name Account Field API                                               */
Evan@653
  1105
/**************************************************************************/
Evan@653
  1106
/*@{*/
Evan@653
  1107
Evan@653
  1108
/**
Evan@653
  1109
 * Creates an account field.
Evan@653
  1110
 *
Evan@653
  1111
 * By default, this field will not show offline accounts.
Evan@653
  1112
 *
Evan@653
  1113
 * @param id      The field ID.
Evan@653
  1114
 * @param text    The text label of the field.
Evan@653
  1115
 * @param account The optional default account.
Evan@653
  1116
 *
Evan@653
  1117
 * @return The new field.
Evan@653
  1118
 */
Evan@653
  1119
PurpleRequestField *purple_request_field_account_new(const char *id,
Evan@653
  1120
												 const char *text,
Evan@653
  1121
												 PurpleAccount *account);
Evan@653
  1122
Evan@653
  1123
/**
Evan@653
  1124
 * Sets the default account on an account field.
Evan@653
  1125
 *
Evan@653
  1126
 * @param field         The account field.
Evan@653
  1127
 * @param default_value The default account.
Evan@653
  1128
 */
Evan@653
  1129
void purple_request_field_account_set_default_value(PurpleRequestField *field,
Evan@653
  1130
												  PurpleAccount *default_value);
Evan@653
  1131
Evan@653
  1132
/**
Evan@653
  1133
 * Sets the account in an account field.
Evan@653
  1134
 *
Evan@653
  1135
 * @param field The account field.
Evan@653
  1136
 * @param value The account.
Evan@653
  1137
 */
Evan@653
  1138
void purple_request_field_account_set_value(PurpleRequestField *field,
Evan@653
  1139
										  PurpleAccount *value);
Evan@653
  1140
Evan@653
  1141
/**
Evan@653
  1142
 * Sets whether or not to show all accounts in an account field.
Evan@653
  1143
 *
Evan@653
  1144
 * If TRUE, all accounts, online or offline, will be shown. If FALSE,
Evan@653
  1145
 * only online accounts will be shown.
Evan@653
  1146
 *
Evan@653
  1147
 * @param field    The account field.
Evan@653
  1148
 * @param show_all Whether or not to show all accounts.
Evan@653
  1149
 */
Evan@653
  1150
void purple_request_field_account_set_show_all(PurpleRequestField *field,
Evan@653
  1151
											 gboolean show_all);
Evan@653
  1152
Evan@653
  1153
/**
Evan@653
  1154
 * Sets the account filter function in an account field.
Evan@653
  1155
 *
Evan@653
  1156
 * This function will determine which accounts get displayed and which
Evan@653
  1157
 * don't.
Evan@653
  1158
 *
Evan@653
  1159
 * @param field       The account field.
Evan@653
  1160
 * @param filter_func The account filter function.
Evan@653
  1161
 */
Evan@653
  1162
void purple_request_field_account_set_filter(PurpleRequestField *field,
Evan@653
  1163
										   PurpleFilterAccountFunc filter_func);
Evan@653
  1164
Evan@653
  1165
/**
Evan@653
  1166
 * Returns the default account in an account field.
Evan@653
  1167
 *
Evan@653
  1168
 * @param field The field.
Evan@653
  1169
 *
Evan@653
  1170
 * @return The default account.
Evan@653
  1171
 */
Evan@653
  1172
PurpleAccount *purple_request_field_account_get_default_value(
Evan@653
  1173
		const PurpleRequestField *field);
Evan@653
  1174
Evan@653
  1175
/**
Evan@653
  1176
 * Returns the user-entered account in an account field.
Evan@653
  1177
 *
Evan@653
  1178
 * @param field The field.
Evan@653
  1179
 *
Evan@653
  1180
 * @return The user-entered account.
Evan@653
  1181
 */
Evan@653
  1182
PurpleAccount *purple_request_field_account_get_value(
Evan@653
  1183
		const PurpleRequestField *field);
Evan@653
  1184
Evan@653
  1185
/**
Evan@653
  1186
 * Returns whether or not to show all accounts in an account field.
Evan@653
  1187
 *
Evan@653
  1188
 * If TRUE, all accounts, online or offline, will be shown. If FALSE,
Evan@653
  1189
 * only online accounts will be shown.
Evan@653
  1190
 *
Evan@653
  1191
 * @param field    The account field.
Evan@653
  1192
 * @return Whether or not to show all accounts.
Evan@653
  1193
 */
Evan@653
  1194
gboolean purple_request_field_account_get_show_all(
Evan@653
  1195
		const PurpleRequestField *field);
Evan@653
  1196
Evan@653
  1197
/**
Evan@653
  1198
 * Returns the account filter function in an account field.
Evan@653
  1199
 *
Evan@653
  1200
 * This function will determine which accounts get displayed and which
Evan@653
  1201
 * don't.
Evan@653
  1202
 *
Evan@653
  1203
 * @param field       The account field.
Evan@653
  1204
 *
Evan@653
  1205
 * @return The account filter function.
Evan@653
  1206
 */
Evan@653
  1207
PurpleFilterAccountFunc purple_request_field_account_get_filter(
Evan@653
  1208
		const PurpleRequestField *field);
Evan@653
  1209
Evan@653
  1210
/*@}*/
Evan@653
  1211
Evan@653
  1212
/**************************************************************************/
Evan@653
  1213
/** @name Request API                                                     */
Evan@653
  1214
/**************************************************************************/
Evan@653
  1215
/*@{*/
Evan@653
  1216
Evan@653
  1217
/**
Evan@653
  1218
 * Prompts the user for text input.
Evan@653
  1219
 *
Evan@653
  1220
 * @param handle        The plugin or connection handle.  For some
Evan@653
  1221
 *                      things this is <em>extremely</em> important.  The
Evan@653
  1222
 *                      handle is used to programmatically close the request
Evan@653
  1223
 *                      dialog when it is no longer needed.  For PRPLs this
Evan@653
  1224
 *                      is often a pointer to the #PurpleConnection
Evan@653
  1225
 *                      instance.  For plugins this should be a similar,
Evan@653
  1226
 *                      unique memory location.  This value is important
Evan@653
  1227
 *                      because it allows a request to be closed with
Evan@653
  1228
 *                      purple_request_close_with_handle() when, for
Evan@653
  1229
 *                      example, you sign offline.  If the request is
Evan@653
  1230
 *                      <em>not</em> closed it is <strong>very</strong>
Evan@653
  1231
 *                      likely to cause a crash whenever the callback
Evan@653
  1232
 *                      handler functions are triggered.
Evan@653
  1233
 * @param title         The title of the message, or @c NULL if it should have
Evan@653
  1234
 *                      no title.
Evan@653
  1235
 * @param primary       The main point of the message, or @c NULL if you're
Evan@653
  1236
 *                      feeling enigmatic.
Evan@653
  1237
 * @param secondary     Secondary information, or @c NULL if there is none.
Evan@653
  1238
 * @param default_value The default value.
Evan@653
  1239
 * @param multiline     @c TRUE if the inputted text can span multiple lines.
Evan@653
  1240
 * @param masked        @c TRUE if the inputted text should be masked in some
Evan@653
  1241
 *                      way (such as by displaying characters as stars).  This
Evan@653
  1242
 *                      might be because the input is some kind of password.
Evan@653
  1243
 * @param hint          Optionally suggest how the input box should appear.
Evan@653
  1244
 *                      Use "html", for example, to allow the user to enter
Evan@653
  1245
 *                      HTML.
Evan@653
  1246
 * @param ok_text       The text for the @c OK button, which may not be @c NULL.
Evan@653
  1247
 * @param ok_cb         The callback for the @c OK button, which may not be @c
Evan@653
  1248
 *                      NULL.
Evan@653
  1249
 * @param cancel_text   The text for the @c Cancel button, which may not be @c
Evan@653
  1250
 *                      NULL.
Evan@653
  1251
 * @param cancel_cb     The callback for the @c Cancel button, which may be
Evan@653
  1252
 *                      @c NULL.
Evan@653
  1253
 * @param account       The #PurpleAccount associated with this request, or @c
Evan@653
  1254
 *                      NULL if none is.
Evan@653
  1255
 * @param who           The username of the buddy associated with this request,
Evan@653
  1256
 *                      or @c NULL if none is.
Evan@653
  1257
 * @param conv          The #PurpleConversation associated with this request, or
Evan@653
  1258
 *                      @c NULL if none is.
Evan@653
  1259
 * @param user_data     The data to pass to the callback.
Evan@653
  1260
 *
Evan@653
  1261
 * @return A UI-specific handle.
Evan@653
  1262
 */
Evan@653
  1263
void *purple_request_input(void *handle, const char *title, const char *primary,
Evan@653
  1264
	const char *secondary, const char *default_value, gboolean multiline,
Evan@653
  1265
	gboolean masked, gchar *hint,
Evan@653
  1266
	const char *ok_text, GCallback ok_cb,
Evan@653
  1267
	const char *cancel_text, GCallback cancel_cb,
Evan@653
  1268
	PurpleAccount *account, const char *who, PurpleConversation *conv,
Evan@653
  1269
	void *user_data);
Evan@653
  1270
Evan@653
  1271
/**
Evan@653
  1272
 * Prompts the user for multiple-choice input.
Evan@653
  1273
 *
Evan@653
  1274
 * @param handle        The plugin or connection handle.  For some things this
Evan@653
  1275
 *                      is <em>extremely</em> important.  See the comments on
Evan@653
  1276
 *                      purple_request_input().
Evan@653
  1277
 * @param title         The title of the message, or @c NULL if it should have
Evan@653
  1278
 *                      no title.
Evan@653
  1279
 * @param primary       The main point of the message, or @c NULL if you're
Evan@653
  1280
 *                      feeling enigmatic.
Evan@653
  1281
 * @param secondary     Secondary information, or @c NULL if there is none.
Evan@653
  1282
 * @param default_value The default choice; this should be one of the values
Evan@653
  1283
 *                      listed in the varargs.
Evan@653
  1284
 * @param ok_text       The text for the @c OK button, which may not be @c NULL.
Evan@653
  1285
 * @param ok_cb         The callback for the @c OK button, which may not be @c
Evan@653
  1286
 *                      NULL.
Evan@653
  1287
 * @param cancel_text   The text for the @c Cancel button, which may not be @c
Evan@653
  1288
 *                      NULL.
Evan@653
  1289
 * @param cancel_cb     The callback for the @c Cancel button, or @c NULL to
Evan@653
  1290
 *                      do nothing.
Evan@653
  1291
 * @param account       The #PurpleAccount associated with this request, or @c
Evan@653
  1292
 *                      NULL if none is.
Evan@653
  1293
 * @param who           The username of the buddy associated with this request,
Evan@653
  1294
 *                      or @c NULL if none is.
Evan@653
  1295
 * @param conv          The #PurpleConversation associated with this request, or
Evan@653
  1296
 *                      @c NULL if none is.
Evan@653
  1297
 * @param user_data     The data to pass to the callback.
Evan@653
  1298
 * @param ...           The choices, which should be pairs of <tt>char *</tt>
Evan@653
  1299
 *                      descriptions and <tt>int</tt> values, terminated with a
Evan@653
  1300
 *                      @c NULL parameter.
Evan@653
  1301
 *
Evan@653
  1302
 * @return A UI-specific handle.
Evan@653
  1303
 */
Evan@653
  1304
void *purple_request_choice(void *handle, const char *title, const char *primary,
Evan@653
  1305
	const char *secondary, int default_value,
Evan@653
  1306
	const char *ok_text, GCallback ok_cb,
Evan@653
  1307
	const char *cancel_text, GCallback cancel_cb,
Evan@653
  1308
	PurpleAccount *account, const char *who, PurpleConversation *conv,
Evan@653
  1309
	void *user_data, ...) G_GNUC_NULL_TERMINATED;
Evan@653
  1310
Evan@653
  1311
/**
Evan@653
  1312
 * <tt>va_list</tt> version of purple_request_choice(); see its documentation.
Evan@653
  1313
 */
Evan@653
  1314
void *purple_request_choice_varg(void *handle, const char *title,
Evan@653
  1315
	const char *primary, const char *secondary, int default_value,
Evan@653
  1316
	const char *ok_text, GCallback ok_cb,
Evan@653
  1317
	const char *cancel_text, GCallback cancel_cb,
Evan@653
  1318
	PurpleAccount *account, const char *who, PurpleConversation *conv,
Evan@653
  1319
	void *user_data, va_list choices);
Evan@653
  1320
Evan@653
  1321
/**
Evan@653
  1322
 * Prompts the user for an action.
Evan@653
  1323
 *
Evan@653
  1324
 * This is often represented as a dialog with a button for each action.
Evan@653
  1325
 *
Evan@653
  1326
 * @param handle         The plugin or connection handle.  For some things this
Evan@653
  1327
 *                       is <em>extremely</em> important.  See the comments on
Evan@653
  1328
 *                       purple_request_input().
Evan@653
  1329
 * @param title          The title of the message, or @c NULL if it should have
Evan@653
  1330
 *                       no title.
Evan@653
  1331
 * @param primary        The main point of the message, or @c NULL if you're
Evan@653
  1332
 *                       feeling enigmatic.
Evan@653
  1333
 * @param secondary      Secondary information, or @c NULL if there is none.
Evan@653
  1334
 * @param default_action The default action, zero-indexed; if the third action
Evan@653
  1335
 *                       supplied should be the default, supply <tt>2</tt>.
Evan@653
  1336
 *                       The should be the action that users are most likely
Evan@653
  1337
 *                       to select.
Evan@653
  1338
 * @param account        The #PurpleAccount associated with this request, or @c
Evan@653
  1339
 *                       NULL if none is.
Evan@653
  1340
 * @param who            The username of the buddy associated with this request,
Evan@653
  1341
 *                       or @c NULL if none is.
Evan@653
  1342
 * @param conv           The #PurpleConversation associated with this request, or
Evan@653
  1343
 *                       @c NULL if none is.
Evan@653
  1344
 * @param user_data      The data to pass to the callback.
Evan@653
  1345
 * @param action_count   The number of actions.
Evan@653
  1346
 * @param ...            A list of actions.  These are pairs of
Evan@653
  1347
 *                       arguments.  The first of each pair is the
Evan@653
  1348
 *                       <tt>char *</tt> label that appears on the button.  It
Evan@653
  1349
 *                       should have an underscore before the letter you want
Evan@653
  1350
 *                       to use as the accelerator key for the button.  The
Evan@653
  1351
 *                       second of each pair is the #PurpleRequestActionCb
Evan@653
  1352
 *                       function to use when the button is clicked.
Evan@653
  1353
 *
Evan@653
  1354
 * @return A UI-specific handle.
Evan@653
  1355
 */
Evan@653
  1356
void *purple_request_action(void *handle, const char *title, const char *primary,
Evan@653
  1357
	const char *secondary, int default_action, PurpleAccount *account,
Evan@653
  1358
	const char *who, PurpleConversation *conv, void *user_data,
Evan@653
  1359
	size_t action_count, ...);
Evan@653
  1360
Evan@653
  1361
/**
Evan@653
  1362
 * <tt>va_list</tt> version of purple_request_action(); see its documentation.
Evan@653
  1363
 */
Evan@653
  1364
void *purple_request_action_varg(void *handle, const char *title,
Evan@653
  1365
	const char *primary, const char *secondary, int default_action,
Evan@653
  1366
	PurpleAccount *account, const char *who, PurpleConversation *conv,
Evan@653
  1367
	void *user_data, size_t action_count, va_list actions);
Evan@653
  1368
Evan@653
  1369
/**
Evan@653
  1370
 * Displays groups of fields for the user to fill in.
Evan@653
  1371
 *
Evan@653
  1372
 * @param handle      The plugin or connection handle.  For some things this
Evan@653
  1373
 *                    is <em>extremely</em> important.  See the comments on
Evan@653
  1374
 *                    purple_request_input().
Evan@653
  1375
 * @param title       The title of the message, or @c NULL if it should have
Evan@653
  1376
 *                    no title.
Evan@653
  1377
 * @param primary     The main point of the message, or @c NULL if you're
Evan@653
  1378
 *                    feeling enigmatic.
Evan@653
  1379
 * @param secondary   Secondary information, or @c NULL if there is none.
Evan@653
  1380
 * @param fields      The list of fields.
Evan@653
  1381
 * @param ok_text     The text for the @c OK button, which may not be @c NULL.
Evan@653
  1382
 * @param ok_cb       The callback for the @c OK button, which may not be @c
Evan@653
  1383
 *                    NULL.
Evan@653
  1384
 * @param cancel_text The text for the @c Cancel button, which may not be @c
Evan@653
  1385
 *                    NULL.
Evan@653
  1386
 * @param cancel_cb   The callback for the @c Cancel button, which may be
Evan@653
  1387
 *                    @c NULL.
Evan@653
  1388
 * @param account     The #PurpleAccount associated with this request, or @c
Evan@653
  1389
 *                    NULL if none is
Evan@653
  1390
 * @param who         The username of the buddy associated with this request,
Evan@653
  1391
 *                    or @c NULL if none is
Evan@653
  1392
 * @param conv        The #PurpleConversation associated with this request, or
Evan@653
  1393
 *                    @c NULL if none is
Evan@653
  1394
 * @param user_data   The data to pass to the callback.
Evan@653
  1395
 *
Evan@653
  1396
 * @return A UI-specific handle.
Evan@653
  1397
 */
Evan@653
  1398
void *purple_request_fields(void *handle, const char *title, const char *primary,
Evan@653
  1399
	const char *secondary, PurpleRequestFields *fields,
Evan@653
  1400
	const char *ok_text, GCallback ok_cb,
Evan@653
  1401
	const char *cancel_text, GCallback cancel_cb,
Evan@653
  1402
	PurpleAccount *account, const char *who, PurpleConversation *conv,
Evan@653
  1403
	void *user_data);
Evan@653
  1404
Evan@653
  1405
/**
Evan@653
  1406
 * Closes a request.
Evan@653
  1407
 *
Evan@653
  1408
 * @param type     The request type.
Evan@653
  1409
 * @param uihandle The request UI handle.
Evan@653
  1410
 */
Evan@653
  1411
void purple_request_close(PurpleRequestType type, void *uihandle);
Evan@653
  1412
Evan@653
  1413
/**
Evan@653
  1414
 * Closes all requests registered with the specified handle.
Evan@653
  1415
 *
Evan@653
  1416
 * @param handle The handle, as supplied as the @a handle parameter to one of the
Evan@653
  1417
 *               <tt>purple_request_*</tt> functions.
Evan@653
  1418
 *
Evan@653
  1419
 * @see purple_request_input().
Evan@653
  1420
 */
Evan@653
  1421
void purple_request_close_with_handle(void *handle);
Evan@653
  1422
Evan@653
  1423
/**
Evan@653
  1424
 * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
Evan@653
  1425
 */
Evan@653
  1426
#define purple_request_yes_no(handle, title, primary, secondary, \
Evan@653
  1427
							default_action, account, who, conv, \
Evan@653
  1428
							user_data, yes_cb, no_cb) \
Evan@653
  1429
	purple_request_action((handle), (title), (primary), (secondary), \
Evan@653
  1430
						(default_action), account, who, conv, (user_data), 2, \
Evan@653
  1431
						_("_Yes"), (yes_cb), _("_No"), (no_cb))
Evan@653
  1432
Evan@653
  1433
/**
Evan@653
  1434
 * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
Evan@653
  1435
 */
Evan@653
  1436
#define purple_request_ok_cancel(handle, title, primary, secondary, \
Evan@653
  1437
							default_action, account, who, conv, \
Evan@653
  1438
						    user_data, ok_cb, cancel_cb) \
Evan@653
  1439
	purple_request_action((handle), (title), (primary), (secondary), \
Evan@653
  1440
						(default_action), account, who, conv, (user_data), 2, \
Evan@653
  1441
						_("_OK"), (ok_cb), _("_Cancel"), (cancel_cb))
Evan@653
  1442
Evan@653
  1443
/**
Evan@653
  1444
 * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
Evan@653
  1445
 */
Evan@653
  1446
#define purple_request_accept_cancel(handle, title, primary, secondary, \
Evan@653
  1447
								   default_action, account, who, conv, \
Evan@653
  1448
								   user_data, accept_cb, cancel_cb) \
Evan@653
  1449
	purple_request_action((handle), (title), (primary), (secondary), \
Evan@653
  1450
						(default_action), account, who, conv, (user_data), 2, \
Evan@653
  1451
						_("_Accept"), (accept_cb), _("_Cancel"), (cancel_cb))
Evan@653
  1452
Evan@653
  1453
/**
Evan@653
  1454
 * Displays a file selector request dialog.  Returns the selected filename to
Evan@653
  1455
 * the callback.  Can be used for either opening a file or saving a file.
Evan@653
  1456
 *
Evan@653
  1457
 * @param handle      The plugin or connection handle.  For some things this
Evan@653
  1458
 *                    is <em>extremely</em> important.  See the comments on
Evan@653
  1459
 *                    purple_request_input().
Evan@653
  1460
 * @param title       The title of the message, or @c NULL if it should have
Evan@653
  1461
 *                    no title.
Evan@653
  1462
 * @param filename    The default filename (may be @c NULL)
Evan@653
  1463
 * @param savedialog  True if this dialog is being used to save a file.
Evan@653
  1464
 *                    False if it is being used to open a file.
Evan@653
  1465
 * @param ok_cb       The callback for the @c OK button.
Evan@653
  1466
 * @param cancel_cb   The callback for the @c Cancel button, which may be @c NULL.
Evan@653
  1467
 * @param account     The #PurpleAccount associated with this request, or @c
Evan@653
  1468
 *                    NULL if none is
Evan@653
  1469
 * @param who         The username of the buddy associated with this request,
Evan@653
  1470
 *                    or @c NULL if none is
Evan@653
  1471
 * @param conv        The #PurpleConversation associated with this request, or
Evan@653
  1472
 *                    @c NULL if none is
Evan@653
  1473
 * @param user_data   The data to pass to the callback.
Evan@653
  1474
 *
Evan@653
  1475
 * @return A UI-specific handle.
Evan@653
  1476
 */
Evan@653
  1477
void *purple_request_file(void *handle, const char *title, const char *filename,
Evan@653
  1478
	gboolean savedialog, GCallback ok_cb, GCallback cancel_cb,
Evan@653
  1479
	PurpleAccount *account, const char *who, PurpleConversation *conv,
Evan@653
  1480
	void *user_data);
Evan@653
  1481
Evan@653
  1482
/**
Evan@653
  1483
 * Displays a folder select dialog. Returns the selected filename to
Evan@653
  1484
 * the callback.
Evan@653
  1485
 *
Evan@653
  1486
 * @param handle      The plugin or connection handle.  For some things this
Evan@653
  1487
 *                    is <em>extremely</em> important.  See the comments on
Evan@653
  1488
 *                    purple_request_input().
Evan@653
  1489
 * @param title       The title of the message, or @c NULL if it should have
Evan@653
  1490
 *                    no title.
Evan@653
  1491
 * @param dirname     The default directory name (may be @c NULL)
Evan@653
  1492
 * @param ok_cb       The callback for the @c OK button.
Evan@653
  1493
 * @param cancel_cb   The callback for the @c Cancel button, which may be @c NULL.
Evan@653
  1494
 * @param account     The #PurpleAccount associated with this request, or @c
Evan@653
  1495
 *                    NULL if none is
Evan@653
  1496
 * @param who         The username of the buddy associated with this request,
Evan@653
  1497
 *                    or @c NULL if none is
Evan@653
  1498
 * @param conv        The #PurpleConversation associated with this request, or
Evan@653
  1499
 *                    @c NULL if none is
Evan@653
  1500
 * @param user_data   The data to pass to the callback.
Evan@653
  1501
 *
Evan@653
  1502
 * @return A UI-specific handle.
Evan@653
  1503
 */
Evan@653
  1504
void *purple_request_folder(void *handle, const char *title, const char *dirname,
Evan@653
  1505
	GCallback ok_cb, GCallback cancel_cb,
Evan@653
  1506
	PurpleAccount *account, const char *who, PurpleConversation *conv,
Evan@653
  1507
	void *user_data);
Evan@653
  1508
Evan@653
  1509
/*@}*/
Evan@653
  1510
Evan@653
  1511
/**************************************************************************/
Evan@653
  1512
/** @name UI Registration Functions                                       */
Evan@653
  1513
/**************************************************************************/
Evan@653
  1514
/*@{*/
Evan@653
  1515
Evan@653
  1516
/**
Evan@653
  1517
 * Sets the UI operations structure to be used when displaying a
Evan@653
  1518
 * request.
Evan@653
  1519
 *
Evan@653
  1520
 * @param ops The UI operations structure.
Evan@653
  1521
 */
Evan@653
  1522
void purple_request_set_ui_ops(PurpleRequestUiOps *ops);
Evan@653
  1523
Evan@653
  1524
/**
Evan@653
  1525
 * Returns the UI operations structure to be used when displaying a
Evan@653
  1526
 * request.
Evan@653
  1527
 *
Evan@653
  1528
 * @return The UI operations structure.
Evan@653
  1529
 */
Evan@653
  1530
PurpleRequestUiOps *purple_request_get_ui_ops(void);
Evan@653
  1531
Evan@653
  1532
/*@}*/
Evan@653
  1533
Evan@653
  1534
#ifdef __cplusplus
Evan@653
  1535
}
Evan@653
  1536
#endif
Evan@653
  1537
Evan@653
  1538
#endif /* _PURPLE_REQUEST_H_ */