# HG changeset patch # User Richard Laager # Date 1226986545 0 # Node ID 5d681e194fb3230a7e438cfab18454af4991c625 # Parent 0331bc48051568c66c034822ad9121f223b8b7e7 Hide the PurpleRequestField struct. I figured this one would be easy and I really needed to see one get fully hidden. diff -r 0331bc480515 -r 5d681e194fb3 ChangeLog.API --- a/ChangeLog.API Sun Nov 16 06:57:47 2008 +0000 +++ b/ChangeLog.API Tue Nov 18 05:35:45 2008 +0000 @@ -18,6 +18,9 @@ * PURPLE_CONTACT * PURPLE_BUDDY * PURPLE_CHAT + * purple_request_field_get_group + * purple_request_field_get_ui_data + * purple_request_field_set_ui_data Deprecated: * purple_buddy_get_local_alias diff -r 0331bc480515 -r 5d681e194fb3 finch/gntrequest.c --- a/finch/gntrequest.c Sun Nov 16 06:57:47 2008 +0000 +++ b/finch/gntrequest.c Tue Nov 18 05:35:45 2008 +0000 @@ -313,26 +313,26 @@ PurpleRequestFieldType type = purple_request_field_get_type(field); if (type == PURPLE_REQUEST_FIELD_BOOLEAN) { - GntWidget *check = FINCH_GET_DATA(field); + GntWidget *check = purple_request_field_get_ui_data(field); gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(check)); purple_request_field_bool_set_value(field, value); } else if (type == PURPLE_REQUEST_FIELD_STRING) { - GntWidget *entry = FINCH_GET_DATA(field); + GntWidget *entry = purple_request_field_get_ui_data(field); const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); purple_request_field_string_set_value(field, (text && *text) ? text : NULL); } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { - GntWidget *entry = FINCH_GET_DATA(field); + GntWidget *entry = purple_request_field_get_ui_data(field); const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); int value = (text && *text) ? atoi(text) : 0; purple_request_field_int_set_value(field, value); } else if (type == PURPLE_REQUEST_FIELD_CHOICE) { - GntWidget *combo = FINCH_GET_DATA(field); + GntWidget *combo = purple_request_field_get_ui_data(field); int id; id = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo))); purple_request_field_choice_set_value(field, id); @@ -343,7 +343,7 @@ if (purple_request_field_list_get_multi_select(field)) { GList *iter; - GntWidget *tree = FINCH_GET_DATA(field); + GntWidget *tree = purple_request_field_get_ui_data(field); iter = purple_request_field_list_get_items(field); for (; iter; iter = iter->next) @@ -356,7 +356,7 @@ } else { - GntWidget *combo = FINCH_GET_DATA(field); + GntWidget *combo = purple_request_field_get_ui_data(field); gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); list = g_list_append(list, data); } @@ -366,7 +366,7 @@ } else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) { - GntWidget *combo = FINCH_GET_DATA(field); + GntWidget *combo = purple_request_field_get_ui_data(field); PurpleAccount *acc = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); purple_request_field_account_set_value(field, acc); } @@ -613,35 +613,36 @@ if (type == PURPLE_REQUEST_FIELD_BOOLEAN) { - FINCH_SET_DATA(field, create_boolean_field(field)); + purple_request_field_set_ui_data(field, create_boolean_field(field)); } else if (type == PURPLE_REQUEST_FIELD_STRING) { - FINCH_SET_DATA(field, create_string_field(field, &screenname)); + purple_request_field_set_ui_data(field, create_string_field(field, &screenname)); } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { - FINCH_SET_DATA(field, create_integer_field(field)); + purple_request_field_set_ui_data(field, create_integer_field(field)); } else if (type == PURPLE_REQUEST_FIELD_CHOICE) { - FINCH_SET_DATA(field, create_choice_field(field)); + purple_request_field_set_ui_data(field, create_choice_field(field)); } else if (type == PURPLE_REQUEST_FIELD_LIST) { - FINCH_SET_DATA(field, create_list_field(field)); + purple_request_field_set_ui_data(field, create_list_field(field)); } else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) { - accountlist = FINCH_SET_DATA(field, create_account_field(field)); + accountlist = create_account_field(field); + purple_request_field_set_ui_data(field, accountlist); } else { - FINCH_SET_DATA(field, gnt_label_new_with_format(_("Not implemented yet."), - GNT_TEXT_FLAG_BOLD)); + purple_request_field_set_ui_data(field, gnt_label_new_with_format(_("Not implemented yet."), + GNT_TEXT_FLAG_BOLD)); } gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID); - gnt_box_add_widget(GNT_BOX(hbox), GNT_WIDGET(FINCH_GET_DATA(field))); + gnt_box_add_widget(GNT_BOX(hbox), GNT_WIDGET(purple_request_field_get_ui_data(field))); } if (grlist->next) gnt_box_add_widget(GNT_BOX(box), gnt_hline_new()); diff -r 0331bc480515 -r 5d681e194fb3 libpurple/request.c --- a/libpurple/request.c Sun Nov 16 06:57:47 2008 +0000 +++ b/libpurple/request.c Tue Nov 18 05:35:45 2008 +0000 @@ -23,6 +23,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ +#define _PURPLE_REQUEST_C_ + #include "internal.h" #include "notify.h" @@ -137,6 +139,23 @@ return purple_request_field_is_required(field); } +gpointer +purple_request_field_get_ui_data(const PurpleRequestField *field) +{ + g_return_val_if_fail(field != NULL, NULL); + + return field->ui_data; +} + +void +purple_request_field_set_ui_data(PurpleRequestField *field, + gpointer ui_data) +{ + g_return_if_fail(field != NULL); + + field->ui_data = ui_data; +} + gboolean purple_request_fields_all_required_filled(const PurpleRequestFields *fields) { @@ -443,6 +462,14 @@ return field->type; } +PurpleRequestFieldGroup * +purple_request_field_get_group(const PurpleRequestField *field) +{ + g_return_val_if_fail(field != NULL, NULL); + + return field->group; +} + const char * purple_request_field_get_id(const PurpleRequestField *field) { diff -r 0331bc480515 -r 5d681e194fb3 libpurple/request.h --- a/libpurple/request.h Sun Nov 16 06:57:47 2008 +0000 +++ b/libpurple/request.h Tue Nov 18 05:35:45 2008 +0000 @@ -30,6 +30,9 @@ #include #include +/** @copydoc _PurpleRequestField */ +typedef struct _PurpleRequestField PurpleRequestField; + #include "account.h" #define PURPLE_DEFAULT_ACTION_NONE -1 @@ -93,10 +96,11 @@ } PurpleRequestFieldGroup; +#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_REQUEST_C_) /** * A request field. */ -typedef struct +struct _PurpleRequestField { PurpleRequestFieldType type; PurpleRequestFieldGroup *group; @@ -176,7 +180,8 @@ void *ui_data; -} PurpleRequestField; +}; +#endif /** * Request UI operations. @@ -521,6 +526,16 @@ PurpleRequestFieldType purple_request_field_get_type(const PurpleRequestField *field); /** + * Returns the group for the field. + * + * @param field The field. + * + * @return The UI data. + * @since 2.6.0 + */ +PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field); + +/** * Returns the ID of a field. * * @param field The field. @@ -565,6 +580,28 @@ */ gboolean purple_request_field_is_required(const PurpleRequestField *field); +/** + * Returns the ui_data for a field. + * + * @param field The field. + * + * @return The UI data. + * @since 2.6.0 + */ +gpointer purple_request_field_get_ui_data(const PurpleRequestField *field); + +/** + * Sets the ui_data for a field. + * + * @param field The field. + * @param ui_data The UI data. + * + * @return The UI data. + * @since 2.6.0 + */ +void purple_request_field_set_ui_data(PurpleRequestField *field, + gpointer ui_data); + /*@}*/ /**************************************************************************/ diff -r 0331bc480515 -r 5d681e194fb3 pidgin/gtkrequest.c --- a/pidgin/gtkrequest.c Sun Nov 16 06:57:47 2008 +0000 +++ b/pidgin/gtkrequest.c Tue Nov 18 05:35:45 2008 +0000 @@ -680,15 +680,17 @@ static void req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field) { + PurpleRequestFieldGroup *group; PidginRequestData *req_data; const char *text = gtk_entry_get_text(GTK_ENTRY(entry)); purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text)); - req_data = (PidginRequestData *)field->group->fields_list->ui_data; + group = purple_request_field_get_group(field); + req_data = (PidginRequestData *)group->fields_list->ui_data; gtk_widget_set_sensitive(req_data->ok_button, - purple_request_fields_all_required_filled(field->group->fields_list)); + purple_request_fields_all_required_filled(group->fields_list)); } static void @@ -709,7 +711,8 @@ if (purple_str_has_prefix(type_hint, "screenname")) { GtkWidget *optmenu = NULL; - GList *fields = field->group->fields; + PurpleRequestFieldGroup *group = purple_request_field_get_group(field); + GList *fields = group->fields; while (fields) { PurpleRequestField *fld = fields->data; @@ -720,9 +723,11 @@ const char *type_hint = purple_request_field_get_type_hint(fld); if (type_hint != NULL && strcmp(type_hint, "account") == 0) { - if (fld->ui_data == NULL) - fld->ui_data = create_account_field(fld); - optmenu = GTK_WIDGET(fld->ui_data); + optmenu = GTK_WIDGET(purple_request_field_get_ui_data(fld)); + if (optmenu == NULL) { + optmenu = GTK_WIDGET(create_account_field(fld)); + purple_request_field_set_ui_data(field, optmenu); + } break; } } @@ -1335,24 +1340,26 @@ gtk_widget_show(label); } - if (field->ui_data != NULL) - widget = GTK_WIDGET(field->ui_data); - else if (type == PURPLE_REQUEST_FIELD_STRING) - widget = create_string_field(field); - else if (type == PURPLE_REQUEST_FIELD_INTEGER) - widget = create_int_field(field); - else if (type == PURPLE_REQUEST_FIELD_BOOLEAN) - widget = create_bool_field(field); - else if (type == PURPLE_REQUEST_FIELD_CHOICE) - widget = create_choice_field(field); - else if (type == PURPLE_REQUEST_FIELD_LIST) - widget = create_list_field(field); - else if (type == PURPLE_REQUEST_FIELD_IMAGE) - widget = create_image_field(field); - else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) - widget = create_account_field(field); - else - continue; + widget = GTK_WIDGET(purple_request_field_get_ui_data(field)); + if (widget == NULL) + { + if (type == PURPLE_REQUEST_FIELD_STRING) + widget = create_string_field(field); + else if (type == PURPLE_REQUEST_FIELD_INTEGER) + widget = create_int_field(field); + else if (type == PURPLE_REQUEST_FIELD_BOOLEAN) + widget = create_bool_field(field); + else if (type == PURPLE_REQUEST_FIELD_CHOICE) + widget = create_choice_field(field); + else if (type == PURPLE_REQUEST_FIELD_LIST) + widget = create_list_field(field); + else if (type == PURPLE_REQUEST_FIELD_IMAGE) + widget = create_image_field(field); + else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) + widget = create_account_field(field); + else + continue; + } if (label) gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget); @@ -1397,7 +1404,7 @@ gtk_widget_show(widget); - field->ui_data = widget; + purple_request_field_set_ui_data(field, widget); } } }