request.h

Go to the documentation of this file.
00001 
00006 /* purple
00007  *
00008  * Purple is the legal property of its developers, whose names are too numerous
00009  * to list here.  Please refer to the COPYRIGHT file distributed with this
00010  * source distribution.
00011  *
00012  * This program is free software; you can redistribute it and/or modify
00013  * it under the terms of the GNU General Public License as published by
00014  * the Free Software Foundation; either version 2 of the License, or
00015  * (at your option) any later version.
00016  *
00017  * This program is distributed in the hope that it will be useful,
00018  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  * GNU General Public License for more details.
00021  *
00022  * You should have received a copy of the GNU General Public License
00023  * along with this program; if not, write to the Free Software
00024  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
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 /* _PURPLE_REQUEST_H_ */
Generated on Thu Nov 25 20:35:58 2010 for pidgin by  doxygen 1.6.3