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 GHashTable *item_data;
00154 GList *selected;
00155 GHashTable *selected_table;
00156
00157 gboolean multiple_selection;
00158
00159 } list;
00160
00161 struct
00162 {
00163 PurpleAccount *default_account;
00164 PurpleAccount *account;
00165 gboolean show_all;
00166
00167 PurpleFilterAccountFunc filter_func;
00168
00169 } account;
00170
00171 struct
00172 {
00173 unsigned int scale_x;
00174 unsigned int scale_y;
00175 const char *buffer;
00176 gsize size;
00177 } image;
00178
00179 } u;
00180
00181 void *ui_data;
00182
00183 };
00184 #endif
00185
00189 typedef struct
00190 {
00192 void *(*request_input)(const char *title, const char *primary,
00193 const char *secondary, const char *default_value,
00194 gboolean multiline, gboolean masked, gchar *hint,
00195 const char *ok_text, GCallback ok_cb,
00196 const char *cancel_text, GCallback cancel_cb,
00197 PurpleAccount *account, const char *who,
00198 PurpleConversation *conv, void *user_data);
00199
00201 void *(*request_choice)(const char *title, const char *primary,
00202 const char *secondary, int default_value,
00203 const char *ok_text, GCallback ok_cb,
00204 const char *cancel_text, GCallback cancel_cb,
00205 PurpleAccount *account, const char *who,
00206 PurpleConversation *conv, void *user_data,
00207 va_list choices);
00208
00210 void *(*request_action)(const char *title, const char *primary,
00211 const char *secondary, int default_action,
00212 PurpleAccount *account, const char *who,
00213 PurpleConversation *conv, void *user_data,
00214 size_t action_count, va_list actions);
00215
00217 void *(*request_fields)(const char *title, const char *primary,
00218 const char *secondary, PurpleRequestFields *fields,
00219 const char *ok_text, GCallback ok_cb,
00220 const char *cancel_text, GCallback cancel_cb,
00221 PurpleAccount *account, const char *who,
00222 PurpleConversation *conv, void *user_data);
00223
00225 void *(*request_file)(const char *title, const char *filename,
00226 gboolean savedialog, GCallback ok_cb,
00227 GCallback cancel_cb, PurpleAccount *account,
00228 const char *who, PurpleConversation *conv,
00229 void *user_data);
00230
00231 void (*close_request)(PurpleRequestType type, void *ui_handle);
00232
00234 void *(*request_folder)(const char *title, const char *dirname,
00235 GCallback ok_cb, GCallback cancel_cb,
00236 PurpleAccount *account, const char *who,
00237 PurpleConversation *conv, void *user_data);
00238
00239 void (*_purple_reserved1)(void);
00240 void (*_purple_reserved2)(void);
00241 void (*_purple_reserved3)(void);
00242 void (*_purple_reserved4)(void);
00243 } PurpleRequestUiOps;
00244
00245 typedef void (*PurpleRequestInputCb)(void *, const char *);
00246
00251 typedef void (*PurpleRequestActionCb)(void *, int);
00252 typedef void (*PurpleRequestChoiceCb)(void *, int);
00253 typedef void (*PurpleRequestFieldsCb)(void *, PurpleRequestFields *fields);
00254 typedef void (*PurpleRequestFileCb)(void *, const char *filename);
00255
00256 #ifdef __cplusplus
00257 extern "C" {
00258 #endif
00259
00260
00262
00270 PurpleRequestFields *purple_request_fields_new(void);
00271
00277 void purple_request_fields_destroy(PurpleRequestFields *fields);
00278
00285 void purple_request_fields_add_group(PurpleRequestFields *fields,
00286 PurpleRequestFieldGroup *group);
00287
00295 GList *purple_request_fields_get_groups(const PurpleRequestFields *fields);
00296
00305 gboolean purple_request_fields_exists(const PurpleRequestFields *fields,
00306 const char *id);
00307
00315 GList *purple_request_fields_get_required(const PurpleRequestFields *fields);
00316
00325 gboolean purple_request_fields_is_field_required(const PurpleRequestFields *fields,
00326 const char *id);
00327
00335 gboolean purple_request_fields_all_required_filled(
00336 const PurpleRequestFields *fields);
00337
00346 PurpleRequestField *purple_request_fields_get_field(
00347 const PurpleRequestFields *fields, const char *id);
00348
00357 const char *purple_request_fields_get_string(const PurpleRequestFields *fields,
00358 const char *id);
00359
00368 int purple_request_fields_get_integer(const PurpleRequestFields *fields,
00369 const char *id);
00370
00379 gboolean purple_request_fields_get_bool(const PurpleRequestFields *fields,
00380 const char *id);
00381
00390 int purple_request_fields_get_choice(const PurpleRequestFields *fields,
00391 const char *id);
00392
00401 PurpleAccount *purple_request_fields_get_account(const PurpleRequestFields *fields,
00402 const char *id);
00403
00406
00408
00418 PurpleRequestFieldGroup *purple_request_field_group_new(const char *title);
00419
00425 void purple_request_field_group_destroy(PurpleRequestFieldGroup *group);
00426
00433 void purple_request_field_group_add_field(PurpleRequestFieldGroup *group,
00434 PurpleRequestField *field);
00435
00443 const char *purple_request_field_group_get_title(
00444 const PurpleRequestFieldGroup *group);
00445
00453 GList *purple_request_field_group_get_fields(
00454 const PurpleRequestFieldGroup *group);
00455
00458
00460
00472 PurpleRequestField *purple_request_field_new(const char *id, const char *text,
00473 PurpleRequestFieldType type);
00474
00480 void purple_request_field_destroy(PurpleRequestField *field);
00481
00488 void purple_request_field_set_label(PurpleRequestField *field, const char *label);
00489
00496 void purple_request_field_set_visible(PurpleRequestField *field, gboolean visible);
00497
00507 void purple_request_field_set_type_hint(PurpleRequestField *field,
00508 const char *type_hint);
00509
00516 void purple_request_field_set_required(PurpleRequestField *field,
00517 gboolean required);
00518
00526 PurpleRequestFieldType purple_request_field_get_type(const PurpleRequestField *field);
00527
00537 PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field);
00538
00546 const char *purple_request_field_get_id(const PurpleRequestField *field);
00547
00555 const char *purple_request_field_get_label(const PurpleRequestField *field);
00556
00564 gboolean purple_request_field_is_visible(const PurpleRequestField *field);
00565
00573 const char *purple_request_field_get_type_hint(const PurpleRequestField *field);
00574
00582 gboolean purple_request_field_is_required(const PurpleRequestField *field);
00583
00593 gpointer purple_request_field_get_ui_data(const PurpleRequestField *field);
00594
00605 void purple_request_field_set_ui_data(PurpleRequestField *field,
00606 gpointer ui_data);
00607
00610
00612
00625 PurpleRequestField *purple_request_field_string_new(const char *id,
00626 const char *text,
00627 const char *default_value,
00628 gboolean multiline);
00629
00636 void purple_request_field_string_set_default_value(PurpleRequestField *field,
00637 const char *default_value);
00638
00645 void purple_request_field_string_set_value(PurpleRequestField *field,
00646 const char *value);
00647
00655 void purple_request_field_string_set_masked(PurpleRequestField *field,
00656 gboolean masked);
00657
00664 void purple_request_field_string_set_editable(PurpleRequestField *field,
00665 gboolean editable);
00666
00674 const char *purple_request_field_string_get_default_value(
00675 const PurpleRequestField *field);
00676
00684 const char *purple_request_field_string_get_value(const PurpleRequestField *field);
00685
00693 gboolean purple_request_field_string_is_multiline(const PurpleRequestField *field);
00694
00702 gboolean purple_request_field_string_is_masked(const PurpleRequestField *field);
00703
00711 gboolean purple_request_field_string_is_editable(const PurpleRequestField *field);
00712
00715
00717
00729 PurpleRequestField *purple_request_field_int_new(const char *id,
00730 const char *text,
00731 int default_value);
00732
00739 void purple_request_field_int_set_default_value(PurpleRequestField *field,
00740 int default_value);
00741
00748 void purple_request_field_int_set_value(PurpleRequestField *field, int value);
00749
00757 int purple_request_field_int_get_default_value(const PurpleRequestField *field);
00758
00766 int purple_request_field_int_get_value(const PurpleRequestField *field);
00767
00770
00772
00786 PurpleRequestField *purple_request_field_bool_new(const char *id,
00787 const char *text,
00788 gboolean default_value);
00789
00796 void purple_request_field_bool_set_default_value(PurpleRequestField *field,
00797 gboolean default_value);
00798
00805 void purple_request_field_bool_set_value(PurpleRequestField *field,
00806 gboolean value);
00807
00815 gboolean purple_request_field_bool_get_default_value(
00816 const PurpleRequestField *field);
00817
00825 gboolean purple_request_field_bool_get_value(const PurpleRequestField *field);
00826
00829
00831
00845 PurpleRequestField *purple_request_field_choice_new(const char *id,
00846 const char *text,
00847 int default_value);
00848
00855 void purple_request_field_choice_add(PurpleRequestField *field,
00856 const char *label);
00857
00864 void purple_request_field_choice_set_default_value(PurpleRequestField *field,
00865 int default_value);
00866
00873 void purple_request_field_choice_set_value(PurpleRequestField *field, int value);
00874
00882 int purple_request_field_choice_get_default_value(const PurpleRequestField *field);
00883
00891 int purple_request_field_choice_get_value(const PurpleRequestField *field);
00892
00900 GList *purple_request_field_choice_get_labels(const PurpleRequestField *field);
00901
00904
00906
00917 PurpleRequestField *purple_request_field_list_new(const char *id, const char *text);
00918
00926 void purple_request_field_list_set_multi_select(PurpleRequestField *field,
00927 gboolean multi_select);
00928
00936 gboolean purple_request_field_list_get_multi_select(
00937 const PurpleRequestField *field);
00938
00947 void *purple_request_field_list_get_data(const PurpleRequestField *field,
00948 const char *text);
00949
00957 void purple_request_field_list_add(PurpleRequestField *field,
00958 const char *item, void *data);
00959
00966 void purple_request_field_list_add_selected(PurpleRequestField *field,
00967 const char *item);
00968
00974 void purple_request_field_list_clear_selected(PurpleRequestField *field);
00975
00982 void purple_request_field_list_set_selected(PurpleRequestField *field,
00983 GList *items);
00984
00993 gboolean purple_request_field_list_is_selected(const PurpleRequestField *field,
00994 const char *item);
00995
01006 GList *purple_request_field_list_get_selected(
01007 const PurpleRequestField *field);
01008
01016 GList *purple_request_field_list_get_items(const PurpleRequestField *field);
01017
01020
01022
01033 PurpleRequestField *purple_request_field_label_new(const char *id,
01034 const char *text);
01035
01038
01040
01053 PurpleRequestField *purple_request_field_image_new(const char *id, const char *text,
01054 const char *buf, gsize size);
01055
01063 void purple_request_field_image_set_scale(PurpleRequestField *field, unsigned int x, unsigned int y);
01064
01072 const char *purple_request_field_image_get_buffer(PurpleRequestField *field);
01073
01081 gsize purple_request_field_image_get_size(PurpleRequestField *field);
01082
01090 unsigned int purple_request_field_image_get_scale_x(PurpleRequestField *field);
01091
01099 unsigned int purple_request_field_image_get_scale_y(PurpleRequestField *field);
01100
01103
01105
01119 PurpleRequestField *purple_request_field_account_new(const char *id,
01120 const char *text,
01121 PurpleAccount *account);
01122
01129 void purple_request_field_account_set_default_value(PurpleRequestField *field,
01130 PurpleAccount *default_value);
01131
01138 void purple_request_field_account_set_value(PurpleRequestField *field,
01139 PurpleAccount *value);
01140
01150 void purple_request_field_account_set_show_all(PurpleRequestField *field,
01151 gboolean show_all);
01152
01162 void purple_request_field_account_set_filter(PurpleRequestField *field,
01163 PurpleFilterAccountFunc filter_func);
01164
01172 PurpleAccount *purple_request_field_account_get_default_value(
01173 const PurpleRequestField *field);
01174
01182 PurpleAccount *purple_request_field_account_get_value(
01183 const PurpleRequestField *field);
01184
01194 gboolean purple_request_field_account_get_show_all(
01195 const PurpleRequestField *field);
01196
01207 PurpleFilterAccountFunc purple_request_field_account_get_filter(
01208 const PurpleRequestField *field);
01209
01212
01214
01263 void *purple_request_input(void *handle, const char *title, const char *primary,
01264 const char *secondary, const char *default_value, gboolean multiline,
01265 gboolean masked, gchar *hint,
01266 const char *ok_text, GCallback ok_cb,
01267 const char *cancel_text, GCallback cancel_cb,
01268 PurpleAccount *account, const char *who, PurpleConversation *conv,
01269 void *user_data);
01270
01304 void *purple_request_choice(void *handle, const char *title, const char *primary,
01305 const char *secondary, int default_value,
01306 const char *ok_text, GCallback ok_cb,
01307 const char *cancel_text, GCallback cancel_cb,
01308 PurpleAccount *account, const char *who, PurpleConversation *conv,
01309 void *user_data, ...) G_GNUC_NULL_TERMINATED;
01310
01314 void *purple_request_choice_varg(void *handle, const char *title,
01315 const char *primary, const char *secondary, int default_value,
01316 const char *ok_text, GCallback ok_cb,
01317 const char *cancel_text, GCallback cancel_cb,
01318 PurpleAccount *account, const char *who, PurpleConversation *conv,
01319 void *user_data, va_list choices);
01320
01356 void *purple_request_action(void *handle, const char *title, const char *primary,
01357 const char *secondary, int default_action, PurpleAccount *account,
01358 const char *who, PurpleConversation *conv, void *user_data,
01359 size_t action_count, ...);
01360
01364 void *purple_request_action_varg(void *handle, const char *title,
01365 const char *primary, const char *secondary, int default_action,
01366 PurpleAccount *account, const char *who, PurpleConversation *conv,
01367 void *user_data, size_t action_count, va_list actions);
01368
01398 void *purple_request_fields(void *handle, const char *title, const char *primary,
01399 const char *secondary, PurpleRequestFields *fields,
01400 const char *ok_text, GCallback ok_cb,
01401 const char *cancel_text, GCallback cancel_cb,
01402 PurpleAccount *account, const char *who, PurpleConversation *conv,
01403 void *user_data);
01404
01411 void purple_request_close(PurpleRequestType type, void *uihandle);
01412
01421 void purple_request_close_with_handle(void *handle);
01422
01426 #define purple_request_yes_no(handle, title, primary, secondary, \
01427 default_action, account, who, conv, \
01428 user_data, yes_cb, no_cb) \
01429 purple_request_action((handle), (title), (primary), (secondary), \
01430 (default_action), account, who, conv, (user_data), 2, \
01431 _("_Yes"), (yes_cb), _("_No"), (no_cb))
01432
01436 #define purple_request_ok_cancel(handle, title, primary, secondary, \
01437 default_action, account, who, conv, \
01438 user_data, ok_cb, cancel_cb) \
01439 purple_request_action((handle), (title), (primary), (secondary), \
01440 (default_action), account, who, conv, (user_data), 2, \
01441 _("_OK"), (ok_cb), _("_Cancel"), (cancel_cb))
01442
01446 #define purple_request_accept_cancel(handle, title, primary, secondary, \
01447 default_action, account, who, conv, \
01448 user_data, accept_cb, cancel_cb) \
01449 purple_request_action((handle), (title), (primary), (secondary), \
01450 (default_action), account, who, conv, (user_data), 2, \
01451 _("_Accept"), (accept_cb), _("_Cancel"), (cancel_cb))
01452
01477 void *purple_request_file(void *handle, const char *title, const char *filename,
01478 gboolean savedialog, GCallback ok_cb, GCallback cancel_cb,
01479 PurpleAccount *account, const char *who, PurpleConversation *conv,
01480 void *user_data);
01481
01504 void *purple_request_folder(void *handle, const char *title, const char *dirname,
01505 GCallback ok_cb, GCallback cancel_cb,
01506 PurpleAccount *account, const char *who, PurpleConversation *conv,
01507 void *user_data);
01508
01511
01513
01522 void purple_request_set_ui_ops(PurpleRequestUiOps *ops);
01523
01530 PurpleRequestUiOps *purple_request_get_ui_ops(void);
01531
01534 #ifdef __cplusplus
01535 }
01536 #endif
01537
01538 #endif