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