00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _PURPLE_REQUEST_H_
00027 #define _PURPLE_REQUEST_H_
00028
00029 #include <stdlib.h>
00030 #include <glib-object.h>
00031 #include <glib.h>
00032
00034 typedef struct _PurpleRequestField PurpleRequestField;
00035
00036 #include "account.h"
00037
00038 #define PURPLE_DEFAULT_ACTION_NONE -1
00039
00043 typedef enum
00044 {
00045 PURPLE_REQUEST_INPUT = 0,
00046 PURPLE_REQUEST_CHOICE,
00047 PURPLE_REQUEST_ACTION,
00048 PURPLE_REQUEST_FIELDS,
00049 PURPLE_REQUEST_FILE,
00050 PURPLE_REQUEST_FOLDER
00052 } PurpleRequestType;
00053
00057 typedef enum
00058 {
00059 PURPLE_REQUEST_FIELD_NONE,
00060 PURPLE_REQUEST_FIELD_STRING,
00061 PURPLE_REQUEST_FIELD_INTEGER,
00062 PURPLE_REQUEST_FIELD_BOOLEAN,
00063 PURPLE_REQUEST_FIELD_CHOICE,
00064 PURPLE_REQUEST_FIELD_LIST,
00065 PURPLE_REQUEST_FIELD_LABEL,
00066 PURPLE_REQUEST_FIELD_IMAGE,
00067 PURPLE_REQUEST_FIELD_ACCOUNT
00068
00069 } PurpleRequestFieldType;
00070
00074 typedef struct
00075 {
00076 GList *groups;
00077
00078 GHashTable *fields;
00079
00080 GList *required_fields;
00081
00082 void *ui_data;
00083
00084 } PurpleRequestFields;
00085
00089 typedef struct
00090 {
00091 PurpleRequestFields *fields_list;
00092
00093 char *title;
00094
00095 GList *fields;
00096
00097 } PurpleRequestFieldGroup;
00098
00099 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_REQUEST_C_)
00100
00103 struct _PurpleRequestField
00104 {
00105 PurpleRequestFieldType type;
00106 PurpleRequestFieldGroup *group;
00107
00108 char *id;
00109 char *label;
00110 char *type_hint;
00111
00112 gboolean visible;
00113 gboolean required;
00114
00115 union
00116 {
00117 struct
00118 {
00119 gboolean multiline;
00120 gboolean masked;
00121 gboolean editable;
00122 char *default_value;
00123 char *value;
00124
00125 } string;
00126
00127 struct
00128 {
00129 int default_value;
00130 int value;
00131
00132 } integer;
00133
00134 struct
00135 {
00136 gboolean default_value;
00137 gboolean value;
00138
00139 } boolean;
00140
00141 struct
00142 {
00143 int default_value;
00144 int value;
00145
00146 GList *labels;
00147
00148 } choice;
00149
00150 struct
00151 {
00152 GList *items;
00153 GList *icons;
00154 GHashTable *item_data;
00155 GList *selected;
00156 GHashTable *selected_table;
00157
00158 gboolean multiple_selection;
00159
00160 } list;
00161
00162 struct
00163 {
00164 PurpleAccount *default_account;
00165 PurpleAccount *account;
00166 gboolean show_all;
00167
00168 PurpleFilterAccountFunc filter_func;
00169
00170 } account;
00171
00172 struct
00173 {
00174 unsigned int scale_x;
00175 unsigned int scale_y;
00176 const char *buffer;
00177 gsize size;
00178 } image;
00179
00180 } u;
00181
00182 void *ui_data;
00183
00184 };
00185 #endif
00186
00190 typedef struct
00191 {
00193 void *(*request_input)(const char *title, const char *primary,
00194 const char *secondary, const char *default_value,
00195 gboolean multiline, gboolean masked, gchar *hint,
00196 const char *ok_text, GCallback ok_cb,
00197 const char *cancel_text, GCallback cancel_cb,
00198 PurpleAccount *account, const char *who,
00199 PurpleConversation *conv, void *user_data);
00200
00202 void *(*request_choice)(const char *title, const char *primary,
00203 const char *secondary, int default_value,
00204 const char *ok_text, GCallback ok_cb,
00205 const char *cancel_text, GCallback cancel_cb,
00206 PurpleAccount *account, const char *who,
00207 PurpleConversation *conv, void *user_data,
00208 va_list choices);
00209
00211 void *(*request_action)(const char *title, const char *primary,
00212 const char *secondary, int default_action,
00213 PurpleAccount *account, const char *who,
00214 PurpleConversation *conv, void *user_data,
00215 size_t action_count, va_list actions);
00216
00218 void *(*request_fields)(const char *title, const char *primary,
00219 const char *secondary, PurpleRequestFields *fields,
00220 const char *ok_text, GCallback ok_cb,
00221 const char *cancel_text, GCallback cancel_cb,
00222 PurpleAccount *account, const char *who,
00223 PurpleConversation *conv, void *user_data);
00224
00226 void *(*request_file)(const char *title, const char *filename,
00227 gboolean savedialog, GCallback ok_cb,
00228 GCallback cancel_cb, PurpleAccount *account,
00229 const char *who, PurpleConversation *conv,
00230 void *user_data);
00231
00232 void (*close_request)(PurpleRequestType type, void *ui_handle);
00233
00235 void *(*request_folder)(const char *title, const char *dirname,
00236 GCallback ok_cb, GCallback cancel_cb,
00237 PurpleAccount *account, const char *who,
00238 PurpleConversation *conv, void *user_data);
00239
00240 void (*_purple_reserved1)(void);
00241 void (*_purple_reserved2)(void);
00242 void (*_purple_reserved3)(void);
00243 void (*_purple_reserved4)(void);
00244 } PurpleRequestUiOps;
00245
00246 typedef void (*PurpleRequestInputCb)(void *, const char *);
00247
00252 typedef void (*PurpleRequestActionCb)(void *, int);
00253 typedef void (*PurpleRequestChoiceCb)(void *, int);
00254 typedef void (*PurpleRequestFieldsCb)(void *, PurpleRequestFields *fields);
00255 typedef void (*PurpleRequestFileCb)(void *, const char *filename);
00256
00257 #ifdef __cplusplus
00258 extern "C" {
00259 #endif
00260
00261
00263
00271 PurpleRequestFields *purple_request_fields_new(void);
00272
00278 void purple_request_fields_destroy(PurpleRequestFields *fields);
00279
00286 void purple_request_fields_add_group(PurpleRequestFields *fields,
00287 PurpleRequestFieldGroup *group);
00288
00296 GList *purple_request_fields_get_groups(const PurpleRequestFields *fields);
00297
00306 gboolean purple_request_fields_exists(const PurpleRequestFields *fields,
00307 const char *id);
00308
00316 GList *purple_request_fields_get_required(const PurpleRequestFields *fields);
00317
00326 gboolean purple_request_fields_is_field_required(const PurpleRequestFields *fields,
00327 const char *id);
00328
00336 gboolean purple_request_fields_all_required_filled(
00337 const PurpleRequestFields *fields);
00338
00347 PurpleRequestField *purple_request_fields_get_field(
00348 const PurpleRequestFields *fields, const char *id);
00349
00358 const char *purple_request_fields_get_string(const PurpleRequestFields *fields,
00359 const char *id);
00360
00369 int purple_request_fields_get_integer(const PurpleRequestFields *fields,
00370 const char *id);
00371
00380 gboolean purple_request_fields_get_bool(const PurpleRequestFields *fields,
00381 const char *id);
00382
00391 int purple_request_fields_get_choice(const PurpleRequestFields *fields,
00392 const char *id);
00393
00402 PurpleAccount *purple_request_fields_get_account(const PurpleRequestFields *fields,
00403 const char *id);
00404
00407
00409
00419 PurpleRequestFieldGroup *purple_request_field_group_new(const char *title);
00420
00426 void purple_request_field_group_destroy(PurpleRequestFieldGroup *group);
00427
00434 void purple_request_field_group_add_field(PurpleRequestFieldGroup *group,
00435 PurpleRequestField *field);
00436
00444 const char *purple_request_field_group_get_title(
00445 const PurpleRequestFieldGroup *group);
00446
00454 GList *purple_request_field_group_get_fields(
00455 const PurpleRequestFieldGroup *group);
00456
00459
00461
00473 PurpleRequestField *purple_request_field_new(const char *id, const char *text,
00474 PurpleRequestFieldType type);
00475
00481 void purple_request_field_destroy(PurpleRequestField *field);
00482
00489 void purple_request_field_set_label(PurpleRequestField *field, const char *label);
00490
00497 void purple_request_field_set_visible(PurpleRequestField *field, gboolean visible);
00498
00508 void purple_request_field_set_type_hint(PurpleRequestField *field,
00509 const char *type_hint);
00510
00517 void purple_request_field_set_required(PurpleRequestField *field,
00518 gboolean required);
00519
00527 PurpleRequestFieldType purple_request_field_get_type(const PurpleRequestField *field);
00528
00538 PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field);
00539
00547 const char *purple_request_field_get_id(const PurpleRequestField *field);
00548
00556 const char *purple_request_field_get_label(const PurpleRequestField *field);
00557
00565 gboolean purple_request_field_is_visible(const PurpleRequestField *field);
00566
00574 const char *purple_request_field_get_type_hint(const PurpleRequestField *field);
00575
00583 gboolean purple_request_field_is_required(const PurpleRequestField *field);
00584
00594 gpointer purple_request_field_get_ui_data(const PurpleRequestField *field);
00595
00606 void purple_request_field_set_ui_data(PurpleRequestField *field,
00607 gpointer ui_data);
00608
00611
00613
00626 PurpleRequestField *purple_request_field_string_new(const char *id,
00627 const char *text,
00628 const char *default_value,
00629 gboolean multiline);
00630
00637 void purple_request_field_string_set_default_value(PurpleRequestField *field,
00638 const char *default_value);
00639
00646 void purple_request_field_string_set_value(PurpleRequestField *field,
00647 const char *value);
00648
00656 void purple_request_field_string_set_masked(PurpleRequestField *field,
00657 gboolean masked);
00658
00665 void purple_request_field_string_set_editable(PurpleRequestField *field,
00666 gboolean editable);
00667
00675 const char *purple_request_field_string_get_default_value(
00676 const PurpleRequestField *field);
00677
00685 const char *purple_request_field_string_get_value(const PurpleRequestField *field);
00686
00694 gboolean purple_request_field_string_is_multiline(const PurpleRequestField *field);
00695
00703 gboolean purple_request_field_string_is_masked(const PurpleRequestField *field);
00704
00712 gboolean purple_request_field_string_is_editable(const PurpleRequestField *field);
00713
00716
00718
00730 PurpleRequestField *purple_request_field_int_new(const char *id,
00731 const char *text,
00732 int default_value);
00733
00740 void purple_request_field_int_set_default_value(PurpleRequestField *field,
00741 int default_value);
00742
00749 void purple_request_field_int_set_value(PurpleRequestField *field, int value);
00750
00758 int purple_request_field_int_get_default_value(const PurpleRequestField *field);
00759
00767 int purple_request_field_int_get_value(const PurpleRequestField *field);
00768
00771
00773
00787 PurpleRequestField *purple_request_field_bool_new(const char *id,
00788 const char *text,
00789 gboolean default_value);
00790
00797 void purple_request_field_bool_set_default_value(PurpleRequestField *field,
00798 gboolean default_value);
00799
00806 void purple_request_field_bool_set_value(PurpleRequestField *field,
00807 gboolean value);
00808
00816 gboolean purple_request_field_bool_get_default_value(
00817 const PurpleRequestField *field);
00818
00826 gboolean purple_request_field_bool_get_value(const PurpleRequestField *field);
00827
00830
00832
00846 PurpleRequestField *purple_request_field_choice_new(const char *id,
00847 const char *text,
00848 int default_value);
00849
00856 void purple_request_field_choice_add(PurpleRequestField *field,
00857 const char *label);
00858
00865 void purple_request_field_choice_set_default_value(PurpleRequestField *field,
00866 int default_value);
00867
00874 void purple_request_field_choice_set_value(PurpleRequestField *field, int value);
00875
00883 int purple_request_field_choice_get_default_value(const PurpleRequestField *field);
00884
00892 int purple_request_field_choice_get_value(const PurpleRequestField *field);
00893
00901 GList *purple_request_field_choice_get_labels(const PurpleRequestField *field);
00902
00905
00907
00918 PurpleRequestField *purple_request_field_list_new(const char *id, const char *text);
00919
00927 void purple_request_field_list_set_multi_select(PurpleRequestField *field,
00928 gboolean multi_select);
00929
00937 gboolean purple_request_field_list_get_multi_select(
00938 const PurpleRequestField *field);
00939
00948 void *purple_request_field_list_get_data(const PurpleRequestField *field,
00949 const char *text);
00950
00960 void purple_request_field_list_add(PurpleRequestField *field,
00961 const char *item, void *data);
00962
00971 void purple_request_field_list_add_icon(PurpleRequestField *field,
00972 const char *item, const char* icon_path, void* data);
00973
00980 void purple_request_field_list_add_selected(PurpleRequestField *field,
00981 const char *item);
00982
00988 void purple_request_field_list_clear_selected(PurpleRequestField *field);
00989
00996 void purple_request_field_list_set_selected(PurpleRequestField *field,
00997 GList *items);
00998
01007 gboolean purple_request_field_list_is_selected(const PurpleRequestField *field,
01008 const char *item);
01009
01020 GList *purple_request_field_list_get_selected(
01021 const PurpleRequestField *field);
01022
01030 GList *purple_request_field_list_get_items(const PurpleRequestField *field);
01031
01042 GList *purple_request_field_list_get_icons(const PurpleRequestField *field);
01043
01046
01048
01059 PurpleRequestField *purple_request_field_label_new(const char *id,
01060 const char *text);
01061
01064
01066
01079 PurpleRequestField *purple_request_field_image_new(const char *id, const char *text,
01080 const char *buf, gsize size);
01081
01089 void purple_request_field_image_set_scale(PurpleRequestField *field, unsigned int x, unsigned int y);
01090
01098 const char *purple_request_field_image_get_buffer(PurpleRequestField *field);
01099
01107 gsize purple_request_field_image_get_size(PurpleRequestField *field);
01108
01116 unsigned int purple_request_field_image_get_scale_x(PurpleRequestField *field);
01117
01125 unsigned int purple_request_field_image_get_scale_y(PurpleRequestField *field);
01126
01129
01131
01145 PurpleRequestField *purple_request_field_account_new(const char *id,
01146 const char *text,
01147 PurpleAccount *account);
01148
01155 void purple_request_field_account_set_default_value(PurpleRequestField *field,
01156 PurpleAccount *default_value);
01157
01164 void purple_request_field_account_set_value(PurpleRequestField *field,
01165 PurpleAccount *value);
01166
01176 void purple_request_field_account_set_show_all(PurpleRequestField *field,
01177 gboolean show_all);
01178
01188 void purple_request_field_account_set_filter(PurpleRequestField *field,
01189 PurpleFilterAccountFunc filter_func);
01190
01198 PurpleAccount *purple_request_field_account_get_default_value(
01199 const PurpleRequestField *field);
01200
01208 PurpleAccount *purple_request_field_account_get_value(
01209 const PurpleRequestField *field);
01210
01220 gboolean purple_request_field_account_get_show_all(
01221 const PurpleRequestField *field);
01222
01233 PurpleFilterAccountFunc purple_request_field_account_get_filter(
01234 const PurpleRequestField *field);
01235
01238
01240
01289 void *purple_request_input(void *handle, const char *title, const char *primary,
01290 const char *secondary, const char *default_value, gboolean multiline,
01291 gboolean masked, gchar *hint,
01292 const char *ok_text, GCallback ok_cb,
01293 const char *cancel_text, GCallback cancel_cb,
01294 PurpleAccount *account, const char *who, PurpleConversation *conv,
01295 void *user_data);
01296
01330 void *purple_request_choice(void *handle, const char *title, const char *primary,
01331 const char *secondary, int default_value,
01332 const char *ok_text, GCallback ok_cb,
01333 const char *cancel_text, GCallback cancel_cb,
01334 PurpleAccount *account, const char *who, PurpleConversation *conv,
01335 void *user_data, ...) G_GNUC_NULL_TERMINATED;
01336
01340 void *purple_request_choice_varg(void *handle, const char *title,
01341 const char *primary, const char *secondary, int default_value,
01342 const char *ok_text, GCallback ok_cb,
01343 const char *cancel_text, GCallback cancel_cb,
01344 PurpleAccount *account, const char *who, PurpleConversation *conv,
01345 void *user_data, va_list choices);
01346
01382 void *purple_request_action(void *handle, const char *title, const char *primary,
01383 const char *secondary, int default_action, PurpleAccount *account,
01384 const char *who, PurpleConversation *conv, void *user_data,
01385 size_t action_count, ...);
01386
01390 void *purple_request_action_varg(void *handle, const char *title,
01391 const char *primary, const char *secondary, int default_action,
01392 PurpleAccount *account, const char *who, PurpleConversation *conv,
01393 void *user_data, size_t action_count, va_list actions);
01394
01424 void *purple_request_fields(void *handle, const char *title, const char *primary,
01425 const char *secondary, PurpleRequestFields *fields,
01426 const char *ok_text, GCallback ok_cb,
01427 const char *cancel_text, GCallback cancel_cb,
01428 PurpleAccount *account, const char *who, PurpleConversation *conv,
01429 void *user_data);
01430
01437 void purple_request_close(PurpleRequestType type, void *uihandle);
01438
01447 void purple_request_close_with_handle(void *handle);
01448
01452 #define purple_request_yes_no(handle, title, primary, secondary, \
01453 default_action, account, who, conv, \
01454 user_data, yes_cb, no_cb) \
01455 purple_request_action((handle), (title), (primary), (secondary), \
01456 (default_action), account, who, conv, (user_data), 2, \
01457 _("_Yes"), (yes_cb), _("_No"), (no_cb))
01458
01462 #define purple_request_ok_cancel(handle, title, primary, secondary, \
01463 default_action, account, who, conv, \
01464 user_data, ok_cb, cancel_cb) \
01465 purple_request_action((handle), (title), (primary), (secondary), \
01466 (default_action), account, who, conv, (user_data), 2, \
01467 _("_OK"), (ok_cb), _("_Cancel"), (cancel_cb))
01468
01472 #define purple_request_accept_cancel(handle, title, primary, secondary, \
01473 default_action, account, who, conv, \
01474 user_data, accept_cb, cancel_cb) \
01475 purple_request_action((handle), (title), (primary), (secondary), \
01476 (default_action), account, who, conv, (user_data), 2, \
01477 _("_Accept"), (accept_cb), _("_Cancel"), (cancel_cb))
01478
01503 void *purple_request_file(void *handle, const char *title, const char *filename,
01504 gboolean savedialog, GCallback ok_cb, GCallback cancel_cb,
01505 PurpleAccount *account, const char *who, PurpleConversation *conv,
01506 void *user_data);
01507
01530 void *purple_request_folder(void *handle, const char *title, const char *dirname,
01531 GCallback ok_cb, GCallback cancel_cb,
01532 PurpleAccount *account, const char *who, PurpleConversation *conv,
01533 void *user_data);
01534
01537
01539
01548 void purple_request_set_ui_ops(PurpleRequestUiOps *ops);
01549
01556 PurpleRequestUiOps *purple_request_get_ui_ops(void);
01557
01560 #ifdef __cplusplus
01561 }
01562 #endif
01563
01564 #endif