Mercurial > pidgin.yaz
view plugins/perl/common/Request.xs @ 12242:976677e67239
[gaim-migrate @ 14544]
Rework the notify API close callbacks. They are now called by the core, instead of the UI. Prior to a couple days ago, they weren't actually implemented in the UI at all.
As a side note, if anyone knows why gpointer is declared as a T_GaimObj instead of a T_PTR, please let me know. That seems wrong, especially since void * is a T_PTR and gconstpointer is a T_PTR. This may or may not cause problems for the notify change (void * -> gpointer) to user_data. NOTE: I did not change this, even though I think it's wrong.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Mon, 28 Nov 2005 01:50:56 +0000 |
parents | 30947631262d |
children | a88ca6da0b38 |
line wrap: on
line source
#include "module.h" /* This breaks on faceprint's amd64 box void * gaim_request_action_varg(handle, title, primary, secondary, default_action, user_data, action_count, actions) void * handle const char *title const char *primary const char *secondary unsigned int default_action void *user_data size_t action_count va_list actions */ typedef struct { char *cancel_cb; char *ok_cb; } GaimPerlRequestData; /********************************************************/ /* */ /* Callback function that calls a perl subroutine */ /* */ /* The void * field data is being used as a way to hide */ /* the perl sub's name in a GaimPerlRequestData */ /* */ /********************************************************/ void gaim_perl_request_ok_cb(void * data, GaimRequestFields *fields) { GaimPerlRequestData *gpr = (GaimPerlRequestData *)data; dSP; ENTER; SAVETMPS; PUSHMARK(sp); XPUSHs(gaim_perl_bless_object(fields, "Gaim::Request::Fields")); PUTBACK; call_pv(gpr->ok_cb, G_EVAL | G_SCALAR); SPAGAIN; PUTBACK; FREETMPS; LEAVE; } void gaim_perl_request_cancel_cb(void * data, GaimRequestFields *fields) { GaimPerlRequestData *gpr = (GaimPerlRequestData *)data; dSP; ENTER; SAVETMPS; PUSHMARK(sp); XPUSHs(gaim_perl_bless_object(fields, "Gaim::Request::Fields")); PUTBACK; call_pv(gpr->cancel_cb, G_EVAL | G_SCALAR); SPAGAIN; PUTBACK; FREETMPS; LEAVE; } MODULE = Gaim::Request PACKAGE = Gaim::Request PREFIX = gaim_request_ PROTOTYPES: ENABLE void * gaim_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, ok_cb, cancel_text, cancel_cb) Gaim::Plugin handle const char * title const char * primary const char * secondary const char * default_value gboolean multiline gboolean masked gchar * hint const char * ok_text SV * ok_cb const char * cancel_text SV * cancel_cb CODE: GaimPerlRequestData *gpr; STRLEN len; char *basename, *package; basename = g_path_get_basename(handle->path); gaim_perl_normalize_script_name(basename); package = g_strdup_printf("Gaim::Script::%s", basename); gpr = g_new(GaimPerlRequestData, 1); gpr->ok_cb = g_strdup_printf("%s::%s", package, SvPV(ok_cb, len)); gpr->cancel_cb = g_strdup_printf("%s::%s", package, SvPV(cancel_cb, len)); RETVAL = gaim_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, G_CALLBACK(gaim_perl_request_ok_cb), cancel_text, G_CALLBACK(gaim_perl_request_cancel_cb), gpr); OUTPUT: RETVAL void * gaim_request_file(handle, title, filename, savedialog, ok_cb, cancel_cb) Gaim::Plugin handle const char * title const char * filename gboolean savedialog SV * ok_cb SV * cancel_cb CODE: GaimPerlRequestData *gpr; STRLEN len; char *basename, *package; basename = g_path_get_basename(handle->path); gaim_perl_normalize_script_name(basename); package = g_strdup_printf("Gaim::Script::%s", basename); gpr = g_new(GaimPerlRequestData, 1); gpr->ok_cb = g_strdup_printf("%s::%s", package, SvPV(ok_cb, len)); gpr->cancel_cb = g_strdup_printf("%s::%s", package, SvPV(cancel_cb, len)); RETVAL = gaim_request_file(handle, title, filename, savedialog, G_CALLBACK(gaim_perl_request_ok_cb), G_CALLBACK(gaim_perl_request_cancel_cb), gpr); OUTPUT: RETVAL void * gaim_request_fields(handle, title, primary, secondary, fields, ok_text, ok_cb, cancel_text, cancel_cb) Gaim::Plugin handle const char * title const char * primary const char * secondary Gaim::Request::Fields fields const char * ok_text SV * ok_cb const char * cancel_text SV * cancel_cb CODE: GaimPerlRequestData *gpr; STRLEN len; char *basename, *package; basename = g_path_get_basename(handle->path); gaim_perl_normalize_script_name(basename); package = g_strdup_printf("Gaim::Script::%s", basename); gpr = g_new(GaimPerlRequestData, 1); gpr->ok_cb = g_strdup_printf("%s::%s", package, SvPV(ok_cb, len)); gpr->cancel_cb = g_strdup_printf("%s::%s", package, SvPV(cancel_cb, len)); RETVAL = gaim_request_fields(handle, title, primary, secondary, fields, ok_text, G_CALLBACK(gaim_perl_request_ok_cb), cancel_text, G_CALLBACK(gaim_perl_request_cancel_cb), gpr); OUTPUT: RETVAL void gaim_request_close(type, uihandle) Gaim::RequestType type void * uihandle void gaim_request_close_with_handle(handle) void * handle Gaim::Account gaim_request_field_account_get_default_value(field) Gaim::Request::Field field IV gaim_request_field_account_get_filter(field) Gaim::Request::Field field CODE: RETVAL = PTR2IV(gaim_request_field_account_get_filter(field)); OUTPUT: RETVAL gboolean gaim_request_field_account_get_show_all(field) Gaim::Request::Field field Gaim::Account gaim_request_field_account_get_value(field) Gaim::Request::Field field Gaim::Request::Field gaim_request_field_account_new(id, text, account) const char *id const char *text Gaim::Account account void gaim_request_field_account_set_default_value(field, default_value) Gaim::Request::Field field Gaim::Account default_value void gaim_request_field_account_set_show_all(field, show_all) Gaim::Request::Field field gboolean show_all void gaim_request_field_account_set_value(field, value) Gaim::Request::Field field Gaim::Account value gboolean gaim_request_field_bool_get_default_value(field) Gaim::Request::Field field gboolean gaim_request_field_bool_get_value(field) Gaim::Request::Field field Gaim::Request::Field gaim_request_field_bool_new(id, text, default_value) const char *id const char *text gboolean default_value void gaim_request_field_bool_set_default_value(field, default_value) Gaim::Request::Field field gboolean default_value void gaim_request_field_bool_set_value(field, value) Gaim::Request::Field field gboolean value void gaim_request_field_choice_add(field, label) Gaim::Request::Field field const char *label int gaim_request_field_choice_get_default_value(field) Gaim::Request::Field field void gaim_request_field_choice_get_labels(field) Gaim::Request::Field field PREINIT: GList *l; PPCODE: for (l = gaim_request_field_choice_get_labels(field); l != NULL; l = l->next) { XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem"))); } int gaim_request_field_choice_get_value(field) Gaim::Request::Field field Gaim::Request::Field gaim_request_field_choice_new(id, text, default_value) const char *id const char *text int default_value void gaim_request_field_choice_set_default_value(field, default_value) Gaim::Request::Field field int default_value void gaim_request_field_choice_set_value(field, value) Gaim::Request::Field field int value void gaim_request_field_destroy(field) Gaim::Request::Field field const char * gaim_request_field_get_id(field) Gaim::Request::Field field const char * gaim_request_field_get_label(field) Gaim::Request::Field field Gaim::RequestFieldType gaim_request_field_get_type(field) Gaim::Request::Field field const char * gaim_request_field_get_type_hint(field) Gaim::Request::Field field void gaim_request_field_group_add_field(group, field) Gaim::Request::Field::Group group Gaim::Request::Field field void gaim_request_field_group_destroy(group) Gaim::Request::Field::Group group void gaim_request_field_group_get_fields(group) Gaim::Request::Field::Group group PREINIT: GList *l; PPCODE: for (l = gaim_request_field_group_get_fields(group); l != NULL; l = l->next) { XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem"))); } const char * gaim_request_field_group_get_title(group) Gaim::Request::Field::Group group Gaim::Request::Field::Group gaim_request_field_group_new(title) const char *title int gaim_request_field_int_get_default_value(field) Gaim::Request::Field field int gaim_request_field_int_get_value(field) Gaim::Request::Field field Gaim::Request::Field gaim_request_field_int_new(id, text, default_value) const char *id const char *text int default_value void gaim_request_field_int_set_default_value(field, default_value) Gaim::Request::Field field int default_value void gaim_request_field_int_set_value(field, value) Gaim::Request::Field field int value gboolean gaim_request_field_is_required(field) Gaim::Request::Field field gboolean gaim_request_field_is_visible(field) Gaim::Request::Field field Gaim::Request::Field gaim_request_field_label_new(id, text) const char *id const char *text void gaim_request_field_list_add(field, item, data) Gaim::Request::Field field const char *item void * data void gaim_request_field_list_add_selected(field, item) Gaim::Request::Field field const char *item void gaim_request_field_list_clear_selected(field) Gaim::Request::Field field void * gaim_request_field_list_get_data(field, text) Gaim::Request::Field field const char *text void gaim_request_field_list_get_items(field) Gaim::Request::Field field PREINIT: const GList *l; PPCODE: for (l = gaim_request_field_list_get_items(field); l != NULL; l = l->next) { XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem"))); } gboolean gaim_request_field_list_get_multi_select(field) Gaim::Request::Field field void gaim_request_field_list_get_selected(field) Gaim::Request::Field field PREINIT: const GList *l; PPCODE: for (l = gaim_request_field_list_get_selected(field); l != NULL; l = l->next) { XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem"))); } gboolean gaim_request_field_list_is_selected(field, item) Gaim::Request::Field field const char *item Gaim::Request::Field gaim_request_field_list_new(id, text) const char *id const char *text void gaim_request_field_list_set_multi_select(field, multi_select) Gaim::Request::Field field gboolean multi_select Gaim::Request::Field gaim_request_field_new(id, text, type) const char *id const char *text Gaim::RequestFieldType type void gaim_request_field_set_label(field, label) Gaim::Request::Field field const char *label void gaim_request_field_set_required(field, required) Gaim::Request::Field field gboolean required void gaim_request_field_set_type_hint(field, type_hint) Gaim::Request::Field field const char *type_hint void gaim_request_field_set_visible(field, visible) Gaim::Request::Field field gboolean visible const char * gaim_request_field_string_get_default_value(field) Gaim::Request::Field field const char * gaim_request_field_string_get_value(field) Gaim::Request::Field field gboolean gaim_request_field_string_is_editable(field) Gaim::Request::Field field gboolean gaim_request_field_string_is_masked(field) Gaim::Request::Field field gboolean gaim_request_field_string_is_multiline(field) Gaim::Request::Field field Gaim::Request::Field gaim_request_field_string_new(id, text, default_value, multiline) const char *id const char *text const char *default_value gboolean multiline void gaim_request_field_string_set_default_value(field, default_value) Gaim::Request::Field field const char *default_value void gaim_request_field_string_set_editable(field, editable) Gaim::Request::Field field gboolean editable void gaim_request_field_string_set_masked(field, masked) Gaim::Request::Field field gboolean masked void gaim_request_field_string_set_value(field, value) Gaim::Request::Field field const char *value void gaim_request_fields_add_group(fields, group) Gaim::Request::Fields fields Gaim::Request::Field::Group group gboolean gaim_request_fields_all_required_filled(fields) Gaim::Request::Fields fields void gaim_request_fields_destroy(fields) Gaim::Request::Fields fields gboolean gaim_request_fields_exists(fields, id) Gaim::Request::Fields fields const char *id Gaim::Account gaim_request_fields_get_account(fields, id) Gaim::Request::Fields fields const char *id gboolean gaim_request_fields_get_bool(fields, id) Gaim::Request::Fields fields const char *id int gaim_request_fields_get_choice(fields, id) Gaim::Request::Fields fields const char *id Gaim::Request::Field gaim_request_fields_get_field(fields, id) Gaim::Request::Fields fields const char *id void gaim_request_fields_get_groups(fields) Gaim::Request::Fields fields PREINIT: GList *l; PPCODE: for (l = gaim_request_fields_get_groups(fields); l != NULL; l = l->next) { XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem"))); } int gaim_request_fields_get_integer(fields, id) Gaim::Request::Fields fields const char *id void gaim_request_fields_get_required(fields) Gaim::Request::Fields fields PREINIT: const GList *l; PPCODE: for (l = gaim_request_fields_get_required(fields); l != NULL; l = l->next) { XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem"))); } const char * gaim_request_fields_get_string(fields, id) Gaim::Request::Fields fields const char *id gboolean gaim_request_fields_is_field_required(fields, id) Gaim::Request::Fields fields const char *id Gaim::Request::Fields gaim_request_fields_new() Gaim::Request::UiOps gaim_request_get_ui_ops() void gaim_request_set_ui_ops(ops) Gaim::Request::UiOps ops