| 37 SAVETMPS; |
47 SAVETMPS; |
| 38 PUSHMARK(sp); |
48 PUSHMARK(sp); |
| 39 |
49 |
| 40 XPUSHs(purple_perl_bless_object(fields, "Purple::Request::Fields")); |
50 XPUSHs(purple_perl_bless_object(fields, "Purple::Request::Fields")); |
| 41 PUTBACK; |
51 PUTBACK; |
| 42 |
52 call_sv(gpr->ok_fun, G_EVAL | G_SCALAR); |
| 43 call_pv(gpr->ok_cb, G_EVAL | G_SCALAR); |
|
| 44 SPAGAIN; |
53 SPAGAIN; |
| 45 |
54 |
| 46 PUTBACK; |
55 PUTBACK; |
| 47 FREETMPS; |
56 FREETMPS; |
| 48 LEAVE; |
57 LEAVE; |
| 49 |
58 |
| 50 g_free(gpr->ok_cb); |
59 purple_perl_request_data_free(gpr); |
| 51 g_free(gpr->cancel_cb); |
|
| 52 g_free(gpr); |
|
| 53 } |
60 } |
| 54 |
61 |
| 55 static void |
62 static void |
| 56 purple_perl_request_cancel_cb(void * data, PurpleRequestFields *fields) |
63 purple_perl_request_cancel_cb(void * data, PurpleRequestFields *fields) |
| 57 { |
64 { |
| 58 |
|
| 59 PurplePerlRequestData *gpr = (PurplePerlRequestData *)data; |
65 PurplePerlRequestData *gpr = (PurplePerlRequestData *)data; |
| 60 |
66 |
| 61 dSP; |
67 dSP; |
| 62 ENTER; |
68 ENTER; |
| 63 SAVETMPS; |
69 SAVETMPS; |
| 64 PUSHMARK(sp); |
70 PUSHMARK(sp); |
| 65 |
71 |
| 66 XPUSHs(purple_perl_bless_object(fields, "Purple::Request::Fields")); |
72 XPUSHs(purple_perl_bless_object(fields, "Purple::Request::Fields")); |
| 67 PUTBACK; |
73 PUTBACK; |
| 68 call_pv(gpr->cancel_cb, G_EVAL | G_SCALAR); |
74 call_sv(gpr->cancel_fun, G_EVAL | G_SCALAR); |
| 69 SPAGAIN; |
75 SPAGAIN; |
| 70 |
76 |
| 71 PUTBACK; |
77 PUTBACK; |
| 72 FREETMPS; |
78 FREETMPS; |
| 73 LEAVE; |
79 LEAVE; |
| 74 |
80 |
| 75 g_free(gpr->ok_cb); |
81 purple_perl_request_data_free(gpr); |
| 76 g_free(gpr->cancel_cb); |
|
| 77 g_free(gpr); |
|
| 78 } |
82 } |
| 79 |
83 |
| 80 MODULE = Purple::Request PACKAGE = Purple::Request PREFIX = purple_request_ |
84 MODULE = Purple::Request PACKAGE = Purple::Request PREFIX = purple_request_ |
| 81 PROTOTYPES: ENABLE |
85 PROTOTYPES: ENABLE |
| 82 |
86 |
| 129 SV * ok_cb |
133 SV * ok_cb |
| 130 const char * cancel_text |
134 const char * cancel_text |
| 131 SV * cancel_cb |
135 SV * cancel_cb |
| 132 CODE: |
136 CODE: |
| 133 PurplePerlRequestData *gpr; |
137 PurplePerlRequestData *gpr; |
| 134 STRLEN len; |
|
| 135 char *basename; |
138 char *basename; |
| 136 |
139 |
| 137 basename = g_path_get_basename(handle->path); |
140 basename = g_path_get_basename(handle->path); |
| 138 purple_perl_normalize_script_name(basename); |
141 purple_perl_normalize_script_name(basename); |
| 139 gpr = g_new(PurplePerlRequestData, 1); |
142 gpr = g_new(PurplePerlRequestData, 1); |
| 140 gpr->ok_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(ok_cb, len)); |
143 gpr->ok_fun = purple_perl_sv_from_fun(handle, ok_cb); |
| 141 gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len)); |
144 gpr->cancel_fun = purple_perl_sv_from_fun(handle, cancel_cb); |
| 142 g_free(basename); |
145 g_free(basename); |
| 143 |
146 |
| 144 RETVAL = purple_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr); |
147 RETVAL = purple_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr); |
| 145 OUTPUT: |
148 OUTPUT: |
| 146 RETVAL |
149 RETVAL |
| 153 gboolean savedialog |
156 gboolean savedialog |
| 154 SV * ok_cb |
157 SV * ok_cb |
| 155 SV * cancel_cb |
158 SV * cancel_cb |
| 156 CODE: |
159 CODE: |
| 157 PurplePerlRequestData *gpr; |
160 PurplePerlRequestData *gpr; |
| 158 STRLEN len; |
|
| 159 char *basename; |
161 char *basename; |
| 160 |
162 |
| 161 basename = g_path_get_basename(handle->path); |
163 basename = g_path_get_basename(handle->path); |
| 162 purple_perl_normalize_script_name(basename); |
164 purple_perl_normalize_script_name(basename); |
| 163 gpr = g_new(PurplePerlRequestData, 1); |
165 gpr = g_new(PurplePerlRequestData, 1); |
| 164 gpr->ok_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(ok_cb, len)); |
166 gpr->ok_fun = purple_perl_sv_from_fun(handle, ok_cb); |
| 165 gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len)); |
167 gpr->cancel_fun = purple_perl_sv_from_fun(handle, cancel_cb); |
| 166 g_free(basename); |
168 g_free(basename); |
| 167 |
169 |
| 168 RETVAL = purple_request_file(handle, title, filename, savedialog, G_CALLBACK(purple_perl_request_ok_cb), G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr); |
170 RETVAL = purple_request_file(handle, title, filename, savedialog, G_CALLBACK(purple_perl_request_ok_cb), G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr); |
| 169 OUTPUT: |
171 OUTPUT: |
| 170 RETVAL |
172 RETVAL |
| 180 SV * ok_cb |
182 SV * ok_cb |
| 181 const char * cancel_text |
183 const char * cancel_text |
| 182 SV * cancel_cb |
184 SV * cancel_cb |
| 183 CODE: |
185 CODE: |
| 184 PurplePerlRequestData *gpr; |
186 PurplePerlRequestData *gpr; |
| 185 STRLEN len; |
|
| 186 char *basename; |
187 char *basename; |
| 187 |
188 |
| 188 basename = g_path_get_basename(handle->path); |
189 basename = g_path_get_basename(handle->path); |
| 189 purple_perl_normalize_script_name(basename); |
190 purple_perl_normalize_script_name(basename); |
| 190 gpr = g_new(PurplePerlRequestData, 1); |
191 gpr = g_new(PurplePerlRequestData, 1); |
| 191 gpr->ok_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(ok_cb, len)); |
192 gpr->ok_fun = purple_perl_sv_from_fun(handle, ok_cb); |
| 192 gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len)); |
193 gpr->cancel_fun = purple_perl_sv_from_fun(handle, cancel_cb); |
| 193 g_free(basename); |
194 g_free(basename); |
| 194 |
195 |
| 195 RETVAL = purple_request_fields(handle, title, primary, secondary, fields, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr); |
196 RETVAL = purple_request_fields(handle, title, primary, secondary, fields, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr); |
| 196 OUTPUT: |
197 OUTPUT: |
| 197 RETVAL |
198 RETVAL |