11118
|
1 #include "module.h"
|
|
2
|
11170
|
3 typedef struct {
|
|
4 char *cancel_cb;
|
|
5 char *ok_cb;
|
|
6 } GaimPerlRequestData;
|
|
7
|
|
8 /********************************************************/
|
|
9 /* */
|
|
10 /* Callback function that calls a perl subroutine */
|
|
11 /* */
|
|
12 /* The void * field data is being used as a way to hide */
|
|
13 /* the perl sub's name in a GaimPerlRequestData */
|
|
14 /* */
|
|
15 /********************************************************/
|
|
16 void gaim_perl_request_ok_cb(void * data, GaimRequestFields *fields) {
|
|
17
|
|
18 GaimPerlRequestData *gpr = (GaimPerlRequestData *)data;
|
|
19
|
|
20 dSP;
|
|
21 ENTER;
|
|
22 SAVETMPS;
|
|
23 PUSHMARK(sp);
|
|
24
|
|
25 XPUSHs(gaim_perl_bless_object(fields, "Gaim::Request::Fields"));
|
|
26 PUTBACK;
|
|
27
|
|
28 call_pv(gpr->ok_cb, G_EVAL | G_SCALAR);
|
|
29 SPAGAIN;
|
|
30
|
|
31 PUTBACK;
|
|
32 FREETMPS;
|
|
33 LEAVE;
|
|
34 }
|
|
35
|
|
36 void gaim_perl_request_cancel_cb(void * data, GaimRequestFields *fields) {
|
|
37
|
|
38 GaimPerlRequestData *gpr = (GaimPerlRequestData *)data;
|
|
39
|
|
40 dSP;
|
|
41 ENTER;
|
|
42 SAVETMPS;
|
|
43 PUSHMARK(sp);
|
|
44
|
|
45 XPUSHs(gaim_perl_bless_object(fields, "Gaim::Request::Fields"));
|
|
46 PUTBACK;
|
|
47 call_pv(gpr->cancel_cb, G_EVAL | G_SCALAR);
|
|
48 SPAGAIN;
|
|
49
|
|
50 PUTBACK;
|
|
51 FREETMPS;
|
|
52 LEAVE;
|
|
53 }
|
|
54
|
11290
|
55 MODULE = Gaim::Request PACKAGE = Gaim::Request PREFIX = gaim_request_
|
|
56 PROTOTYPES: ENABLE
|
11118
|
57
|
|
58 void *
|
11290
|
59 gaim_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, ok_cb, cancel_text, cancel_cb)
|
|
60 Gaim::Plugin handle
|
|
61 const char * title
|
|
62 const char * primary
|
|
63 const char * secondary
|
|
64 const char * default_value
|
|
65 gboolean multiline
|
|
66 gboolean masked
|
|
67 gchar * hint
|
|
68 const char * ok_text
|
|
69 SV * ok_cb
|
|
70 const char * cancel_text
|
|
71 SV * cancel_cb
|
|
72 CODE:
|
|
73 GaimPerlRequestData *gpr;
|
|
74 STRLEN len;
|
|
75 char *basename, *package;
|
|
76
|
|
77 basename = g_path_get_basename(handle->path);
|
|
78 gaim_perl_normalize_script_name(basename);
|
|
79 package = g_strdup_printf("Gaim::Script::%s", basename);
|
|
80 gpr = g_new(GaimPerlRequestData, 1);
|
|
81 gpr->ok_cb = g_strdup_printf("%s::%s", package, SvPV(ok_cb, len));
|
|
82 gpr->cancel_cb = g_strdup_printf("%s::%s", package, SvPV(cancel_cb, len));
|
|
83
|
|
84 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);
|
|
85 OUTPUT:
|
|
86 RETVAL
|
|
87
|
11118
|
88 void *
|
11290
|
89 gaim_request_file(handle, title, filename, savedialog, ok_cb, cancel_cb)
|
|
90 Gaim::Plugin handle
|
|
91 const char * title
|
|
92 const char * filename
|
|
93 gboolean savedialog
|
|
94 SV * ok_cb
|
|
95 SV * cancel_cb
|
|
96 CODE:
|
|
97 GaimPerlRequestData *gpr;
|
|
98 STRLEN len;
|
|
99 char *basename, *package;
|
11118
|
100
|
11290
|
101 basename = g_path_get_basename(handle->path);
|
|
102 gaim_perl_normalize_script_name(basename);
|
|
103 package = g_strdup_printf("Gaim::Script::%s", basename);
|
|
104 gpr = g_new(GaimPerlRequestData, 1);
|
|
105 gpr->ok_cb = g_strdup_printf("%s::%s", package, SvPV(ok_cb, len));
|
|
106 gpr->cancel_cb = g_strdup_printf("%s::%s", package, SvPV(cancel_cb, len));
|
11118
|
107
|
11290
|
108 RETVAL = gaim_request_file(handle, title, filename, savedialog, G_CALLBACK(gaim_perl_request_ok_cb), G_CALLBACK(gaim_perl_request_cancel_cb), gpr);
|
|
109 OUTPUT:
|
|
110 RETVAL
|
|
111
|
11118
|
112
|
11170
|
113 void *
|
|
114 gaim_request_fields(handle, title, primary, secondary, fields, ok_text, ok_cb, cancel_text, cancel_cb)
|
|
115 Gaim::Plugin handle
|
|
116 const char * title
|
|
117 const char * primary
|
|
118 const char * secondary
|
|
119 Gaim::Request::Fields fields
|
|
120 const char * ok_text
|
|
121 SV * ok_cb
|
|
122 const char * cancel_text
|
|
123 SV * cancel_cb
|
|
124 CODE:
|
|
125 GaimPerlRequestData *gpr;
|
|
126 STRLEN len;
|
|
127 char *basename, *package;
|
|
128
|
|
129 basename = g_path_get_basename(handle->path);
|
|
130 gaim_perl_normalize_script_name(basename);
|
|
131 package = g_strdup_printf("Gaim::Script::%s", basename);
|
|
132 gpr = g_new(GaimPerlRequestData, 1);
|
|
133 gpr->ok_cb = g_strdup_printf("%s::%s", package, SvPV(ok_cb, len));
|
|
134 gpr->cancel_cb = g_strdup_printf("%s::%s", package, SvPV(cancel_cb, len));
|
|
135
|
|
136 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);
|
|
137 OUTPUT:
|
|
138 RETVAL
|
|
139
|
11118
|
140 void *
|
|
141 gaim_request_action_varg(handle, title, primary, secondary, default_action, user_data, action_count, actions)
|
|
142 void * handle
|
|
143 const char *title
|
|
144 const char *primary
|
|
145 const char *secondary
|
|
146 unsigned int default_action
|
|
147 void *user_data
|
|
148 size_t action_count
|
|
149 va_list actions
|
|
150
|
|
151 void
|
|
152 gaim_request_close(type, uihandle)
|
|
153 Gaim::RequestType type
|
|
154 void * uihandle
|
|
155
|
|
156 void
|
|
157 gaim_request_close_with_handle(handle)
|
|
158 void * handle
|
|
159
|
|
160 Gaim::Account
|
|
161 gaim_request_field_account_get_default_value(field)
|
|
162 Gaim::Request::Field field
|
|
163
|
11130
|
164 IV
|
11118
|
165 gaim_request_field_account_get_filter(field)
|
|
166 Gaim::Request::Field field
|
11130
|
167 CODE:
|
|
168 RETVAL = PTR2IV(gaim_request_field_account_get_filter(field));
|
|
169 OUTPUT:
|
|
170 RETVAL
|
11118
|
171
|
|
172 gboolean
|
|
173 gaim_request_field_account_get_show_all(field)
|
|
174 Gaim::Request::Field field
|
|
175
|
|
176 Gaim::Account
|
|
177 gaim_request_field_account_get_value(field)
|
|
178 Gaim::Request::Field field
|
|
179
|
|
180 Gaim::Request::Field
|
|
181 gaim_request_field_account_new(id, text, account)
|
|
182 const char *id
|
|
183 const char *text
|
|
184 Gaim::Account account
|
|
185
|
|
186 void
|
|
187 gaim_request_field_account_set_default_value(field, default_value)
|
|
188 Gaim::Request::Field field
|
|
189 Gaim::Account default_value
|
|
190
|
|
191
|
|
192 void
|
|
193 gaim_request_field_account_set_show_all(field, show_all)
|
|
194 Gaim::Request::Field field
|
|
195 gboolean show_all
|
|
196
|
|
197 void
|
|
198 gaim_request_field_account_set_value(field, value)
|
|
199 Gaim::Request::Field field
|
|
200 Gaim::Account value
|
|
201
|
|
202 gboolean
|
|
203 gaim_request_field_bool_get_default_value(field)
|
|
204 Gaim::Request::Field field
|
|
205
|
|
206 gboolean
|
|
207 gaim_request_field_bool_get_value(field)
|
|
208 Gaim::Request::Field field
|
|
209
|
|
210 Gaim::Request::Field
|
|
211 gaim_request_field_bool_new(id, text, default_value)
|
|
212 const char *id
|
|
213 const char *text
|
|
214 gboolean default_value
|
|
215
|
|
216 void
|
|
217 gaim_request_field_bool_set_default_value(field, default_value)
|
|
218 Gaim::Request::Field field
|
|
219 gboolean default_value
|
|
220
|
|
221 void
|
|
222 gaim_request_field_bool_set_value(field, value)
|
|
223 Gaim::Request::Field field
|
|
224 gboolean value
|
|
225
|
|
226 void
|
|
227 gaim_request_field_choice_add(field, label)
|
|
228 Gaim::Request::Field field
|
|
229 const char *label
|
|
230
|
|
231 int
|
|
232 gaim_request_field_choice_get_default_value(field)
|
|
233 Gaim::Request::Field field
|
|
234
|
|
235 void
|
|
236 gaim_request_field_choice_get_labels(field)
|
|
237 Gaim::Request::Field field
|
|
238 PREINIT:
|
|
239 GList *l;
|
|
240 PPCODE:
|
|
241 for (l = gaim_request_field_choice_get_labels(field); l != NULL; l = l->next) {
|
|
242 XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
|
|
243 }
|
|
244
|
|
245
|
|
246
|
|
247
|
|
248 int
|
|
249 gaim_request_field_choice_get_value(field)
|
|
250 Gaim::Request::Field field
|
|
251
|
|
252 Gaim::Request::Field
|
|
253 gaim_request_field_choice_new(id, text, default_value)
|
|
254 const char *id
|
|
255 const char *text
|
|
256 int default_value
|
|
257
|
|
258 void
|
|
259 gaim_request_field_choice_set_default_value(field, default_value)
|
|
260 Gaim::Request::Field field
|
|
261 int default_value
|
|
262
|
|
263 void
|
|
264 gaim_request_field_choice_set_value(field, value)
|
|
265 Gaim::Request::Field field
|
|
266 int value
|
|
267
|
|
268 void
|
|
269 gaim_request_field_destroy(field)
|
|
270 Gaim::Request::Field field
|
|
271
|
|
272 const char *
|
|
273 gaim_request_field_get_id(field)
|
|
274 Gaim::Request::Field field
|
|
275
|
|
276 const char *
|
|
277 gaim_request_field_get_label(field)
|
|
278 Gaim::Request::Field field
|
|
279
|
|
280 Gaim::RequestFieldType
|
|
281 gaim_request_field_get_type(field)
|
|
282 Gaim::Request::Field field
|
|
283
|
|
284 const char *
|
|
285 gaim_request_field_get_type_hint(field)
|
|
286 Gaim::Request::Field field
|
|
287
|
|
288 void
|
|
289 gaim_request_field_group_add_field(group, field)
|
|
290 Gaim::Request::Field::Group group
|
|
291 Gaim::Request::Field field
|
|
292
|
|
293 void
|
|
294 gaim_request_field_group_destroy(group)
|
|
295 Gaim::Request::Field::Group group
|
|
296
|
|
297 void
|
|
298 gaim_request_field_group_get_fields(group)
|
|
299 Gaim::Request::Field::Group group
|
|
300 PREINIT:
|
|
301 GList *l;
|
|
302 PPCODE:
|
|
303 for (l = gaim_request_field_group_get_fields(group); l != NULL; l = l->next) {
|
|
304 XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
|
|
305 }
|
|
306
|
|
307
|
|
308
|
|
309 const char *
|
|
310 gaim_request_field_group_get_title(group)
|
|
311 Gaim::Request::Field::Group group
|
|
312
|
|
313 Gaim::Request::Field::Group
|
|
314 gaim_request_field_group_new(title)
|
|
315 const char *title
|
|
316
|
|
317 int
|
|
318 gaim_request_field_int_get_default_value(field)
|
|
319 Gaim::Request::Field field
|
|
320
|
|
321 int
|
|
322 gaim_request_field_int_get_value(field)
|
|
323 Gaim::Request::Field field
|
|
324
|
|
325 Gaim::Request::Field
|
|
326 gaim_request_field_int_new(id, text, default_value)
|
|
327 const char *id
|
|
328 const char *text
|
|
329 int default_value
|
|
330
|
|
331 void
|
|
332 gaim_request_field_int_set_default_value(field, default_value)
|
|
333 Gaim::Request::Field field
|
|
334 int default_value
|
|
335
|
|
336 void
|
|
337 gaim_request_field_int_set_value(field, value)
|
|
338 Gaim::Request::Field field
|
|
339 int value
|
|
340
|
|
341 gboolean
|
|
342 gaim_request_field_is_required(field)
|
|
343 Gaim::Request::Field field
|
|
344
|
|
345 gboolean
|
|
346 gaim_request_field_is_visible(field)
|
|
347 Gaim::Request::Field field
|
|
348
|
|
349 Gaim::Request::Field
|
|
350 gaim_request_field_label_new(id, text)
|
|
351 const char *id
|
|
352 const char *text
|
|
353
|
|
354 void
|
|
355 gaim_request_field_list_add(field, item, data)
|
|
356 Gaim::Request::Field field
|
|
357 const char *item
|
|
358 void * data
|
|
359
|
|
360 void
|
|
361 gaim_request_field_list_add_selected(field, item)
|
|
362 Gaim::Request::Field field
|
|
363 const char *item
|
|
364
|
|
365 void
|
|
366 gaim_request_field_list_clear_selected(field)
|
|
367 Gaim::Request::Field field
|
|
368
|
|
369 void *
|
|
370 gaim_request_field_list_get_data(field, text)
|
|
371 Gaim::Request::Field field
|
|
372 const char *text
|
|
373
|
|
374 void
|
|
375 gaim_request_field_list_get_items(field)
|
|
376 Gaim::Request::Field field
|
|
377 PREINIT:
|
11130
|
378 const GList *l;
|
11118
|
379 PPCODE:
|
|
380 for (l = gaim_request_field_list_get_items(field); l != NULL; l = l->next) {
|
|
381 XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
|
|
382 }
|
|
383
|
|
384 gboolean
|
|
385 gaim_request_field_list_get_multi_select(field)
|
|
386 Gaim::Request::Field field
|
|
387
|
|
388 void
|
|
389 gaim_request_field_list_get_selected(field)
|
|
390 Gaim::Request::Field field
|
|
391 PREINIT:
|
11130
|
392 const GList *l;
|
11118
|
393 PPCODE:
|
|
394 for (l = gaim_request_field_list_get_selected(field); l != NULL; l = l->next) {
|
|
395 XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
|
|
396 }
|
|
397
|
|
398
|
|
399 gboolean
|
|
400 gaim_request_field_list_is_selected(field, item)
|
|
401 Gaim::Request::Field field
|
|
402 const char *item
|
|
403
|
|
404 Gaim::Request::Field
|
|
405 gaim_request_field_list_new(id, text)
|
|
406 const char *id
|
|
407 const char *text
|
|
408
|
|
409 void
|
|
410 gaim_request_field_list_set_multi_select(field, multi_select)
|
|
411 Gaim::Request::Field field
|
|
412 gboolean multi_select
|
|
413
|
|
414 Gaim::Request::Field
|
|
415 gaim_request_field_new(id, text, type)
|
|
416 const char *id
|
|
417 const char *text
|
|
418 Gaim::RequestFieldType type
|
|
419
|
|
420 void
|
|
421 gaim_request_field_set_label(field, label)
|
|
422 Gaim::Request::Field field
|
|
423 const char *label
|
|
424
|
|
425 void
|
|
426 gaim_request_field_set_required(field, required)
|
|
427 Gaim::Request::Field field
|
|
428 gboolean required
|
|
429
|
|
430 void
|
|
431 gaim_request_field_set_type_hint(field, type_hint)
|
|
432 Gaim::Request::Field field
|
|
433 const char *type_hint
|
|
434
|
|
435 void
|
|
436 gaim_request_field_set_visible(field, visible)
|
|
437 Gaim::Request::Field field
|
|
438 gboolean visible
|
|
439
|
|
440 const char *
|
|
441 gaim_request_field_string_get_default_value(field)
|
|
442 Gaim::Request::Field field
|
|
443
|
|
444 const char *
|
|
445 gaim_request_field_string_get_value(field)
|
|
446 Gaim::Request::Field field
|
|
447
|
|
448 gboolean
|
|
449 gaim_request_field_string_is_editable(field)
|
|
450 Gaim::Request::Field field
|
|
451
|
|
452 gboolean
|
|
453 gaim_request_field_string_is_masked(field)
|
|
454 Gaim::Request::Field field
|
|
455
|
|
456 gboolean
|
|
457 gaim_request_field_string_is_multiline(field)
|
|
458 Gaim::Request::Field field
|
|
459
|
|
460 Gaim::Request::Field
|
|
461 gaim_request_field_string_new(id, text, default_value, multiline)
|
|
462 const char *id
|
|
463 const char *text
|
|
464 const char *default_value
|
|
465 gboolean multiline
|
|
466
|
|
467 void
|
|
468 gaim_request_field_string_set_default_value(field, default_value)
|
|
469 Gaim::Request::Field field
|
|
470 const char *default_value
|
|
471
|
|
472 void
|
|
473 gaim_request_field_string_set_editable(field, editable)
|
|
474 Gaim::Request::Field field
|
|
475 gboolean editable
|
|
476
|
|
477 void
|
|
478 gaim_request_field_string_set_masked(field, masked)
|
|
479 Gaim::Request::Field field
|
|
480 gboolean masked
|
|
481
|
|
482 void
|
|
483 gaim_request_field_string_set_value(field, value)
|
|
484 Gaim::Request::Field field
|
|
485 const char *value
|
|
486
|
|
487 void
|
|
488 gaim_request_fields_add_group(fields, group)
|
|
489 Gaim::Request::Fields fields
|
|
490 Gaim::Request::Field::Group group
|
|
491
|
|
492 gboolean
|
|
493 gaim_request_fields_all_required_filled(fields)
|
|
494 Gaim::Request::Fields fields
|
|
495
|
|
496 void
|
|
497 gaim_request_fields_destroy(fields)
|
|
498 Gaim::Request::Fields fields
|
|
499
|
|
500 gboolean
|
|
501 gaim_request_fields_exists(fields, id)
|
|
502 Gaim::Request::Fields fields
|
|
503 const char *id
|
|
504
|
|
505 Gaim::Account
|
|
506 gaim_request_fields_get_account(fields, id)
|
|
507 Gaim::Request::Fields fields
|
|
508 const char *id
|
|
509
|
|
510 gboolean
|
|
511 gaim_request_fields_get_bool(fields, id)
|
|
512 Gaim::Request::Fields fields
|
|
513 const char *id
|
|
514
|
|
515 int
|
|
516 gaim_request_fields_get_choice(fields, id)
|
|
517 Gaim::Request::Fields fields
|
|
518 const char *id
|
|
519
|
|
520 Gaim::Request::Field
|
|
521 gaim_request_fields_get_field(fields, id)
|
|
522 Gaim::Request::Fields fields
|
|
523 const char *id
|
|
524
|
|
525 void
|
|
526 gaim_request_fields_get_groups(fields)
|
|
527 Gaim::Request::Fields fields
|
|
528 PREINIT:
|
|
529 GList *l;
|
|
530 PPCODE:
|
|
531 for (l = gaim_request_fields_get_groups(fields); l != NULL; l = l->next) {
|
|
532 XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
|
|
533 }
|
|
534
|
|
535
|
|
536
|
|
537 int
|
|
538 gaim_request_fields_get_integer(fields, id)
|
|
539 Gaim::Request::Fields fields
|
|
540 const char *id
|
|
541
|
|
542 void
|
|
543 gaim_request_fields_get_required(fields)
|
|
544 Gaim::Request::Fields fields
|
|
545 PREINIT:
|
11130
|
546 const GList *l;
|
11118
|
547 PPCODE:
|
|
548 for (l = gaim_request_fields_get_required(fields); l != NULL; l = l->next) {
|
|
549 XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
|
|
550 }
|
|
551
|
|
552
|
|
553
|
|
554 const char *
|
|
555 gaim_request_fields_get_string(fields, id)
|
|
556 Gaim::Request::Fields fields
|
|
557 const char *id
|
|
558
|
|
559 gboolean
|
|
560 gaim_request_fields_is_field_required(fields, id)
|
|
561 Gaim::Request::Fields fields
|
|
562 const char *id
|
|
563
|
|
564 Gaim::Request::Fields
|
|
565 gaim_request_fields_new()
|
|
566
|
|
567
|
|
568 Gaim::Request::UiOps
|
|
569 gaim_request_get_ui_ops()
|
|
570
|
|
571
|
|
572 void
|
|
573 gaim_request_set_ui_ops(ops)
|
|
574 Gaim::Request::UiOps ops
|
|
575
|