diff plugins/perl/common/Request.xs @ 11290:b284c703d398

[gaim-migrate @ 13490] Did some house cleaning on the code finished up some of the "TODO" stuff that was left over from when I originally did the XSUBs. Furthermore, the dynamically loaded Perl package problems should be corrected now that the context is set before one of the concurrent perl interpreters is run. committer: Tailor Script <tailor@pidgin.im>
author John H. Kelm <johnkelm@gmail.com>
date Thu, 18 Aug 2005 01:35:14 +0000
parents 0e9e2b923d09
children 30947631262d
line wrap: on
line diff
--- a/plugins/perl/common/Request.xs	Wed Aug 17 21:42:28 2005 +0000
+++ b/plugins/perl/common/Request.xs	Thu Aug 18 01:35:14 2005 +0000
@@ -52,38 +52,63 @@
 	LEAVE;
 }
 
-
-/* TODO
-
-
-void *
-gaim_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, ok_cb, cancel_text, cancel_cb, user_data)
- 
-
-void *
-gaim_request_file(handle, title, filename, savedialog, ok_cb, cancel_cb, user_data)
-
-void 
-gaim_request_field_account_set_filter(field, filter_func)
-
+MODULE = Gaim::Request  PACKAGE = Gaim::Request  PREFIX = gaim_request_
+PROTOTYPES: ENABLE
 
 void *
-gaim_request_action(handle, title, primary, secondary, default_action, user_data, action_count, gaim_request_action)
-
-
-void *
-gaim_request_choice(handle, title, primary, secondary, default_value, ok_text, ok_cb, cancel_text, cancel_cb, user_data, gaim_request_choice)
-
+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_choice_varg(handle, title, primary, secondary, default_value, ok_text, ok_cb, cancel_text, cancel_cb, user_data, choices)
-
-
+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));
 
-MODULE = Gaim::Request  PACKAGE = Gaim::Request  PREFIX = gaim_request_
-PROTOTYPES: ENABLE
+	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)
@@ -112,16 +137,6 @@
 OUTPUT:
 	RETVAL
 
-
-
-
-
-
-
-
-
-
-
 void *
 gaim_request_action_varg(handle, title, primary, secondary, default_action, user_data, action_count, actions)
  	void * handle
@@ -133,8 +148,6 @@
 	size_t action_count
 	va_list actions
 
-
-
 void 
 gaim_request_close(type, uihandle)
 	Gaim::RequestType type