"SfR Fresh" - the SfR Freeware/Shareware Archive 
Member "Gtk-Perl-0.7009/Gnome/xs/AppletWidget.xs" of archive Gtk-Perl-0.7009.tar.gz:
As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers.
Alternatively you can here view or download the uninterpreted source code file.
That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
1
2 #include "EXTERN.h"
3 #include "perl.h"
4 #include "XSUB.h"
5
6 #include "GtkDefs.h"
7 #include "GnomeDefs.h"
8 #include <applet-widget.h>
9
10 extern int did_we_init_gnome;
11 int did_we_init_panel = 0;
12
13 static void start_new_callback(const char * param, gpointer data)
14 {
15 AV * args = (AV*)data;
16 SV * handler = *av_fetch(args, 0, 0);
17 int i;
18 dSP;
19
20 ENTER;
21 SAVETMPS;
22
23 PUSHMARK(SP);
24 for (i=1;i<=av_len(args);i++)
25 XPUSHs(sv_2mortal(newSVsv(*av_fetch(args, i, 0))));
26 if (param)
27 XPUSHs(sv_2mortal(newSVpv(param, 0)));
28 PUTBACK;
29
30 i = perl_call_sv(handler, G_DISCARD);
31
32 FREETMPS;
33 LEAVE;
34 }
35
36 void AppletInit_internal(char * app_id, AV * args)
37 {
38 if (!did_we_init_gdk && !did_we_init_gtk && !did_we_init_gnome && !did_we_init_panel) {
39 int argc;
40 char ** argv = 0;
41 AV * ARGV = perl_get_av("ARGV", FALSE);
42 SV * ARGV0 = perl_get_sv("0", FALSE);
43 int i;
44
45 argc = av_len(ARGV)+2;
46 if (argc) {
47 argv = malloc(sizeof(char*)*argc);
48 argv[0] = SvPV(ARGV0, PL_na);
49 for(i=0;i<=av_len(ARGV);i++)
50 argv[i+1] = SvPV(*av_fetch(ARGV, i, 0), PL_na);
51 }
52
53 i = argc;
54 applet_widget_init(app_id, NULL , argc, argv, NULL, 0, NULL);
55
56 did_we_init_gdk = 1;
57 did_we_init_gtk = 1;
58 did_we_init_gnome = 1;
59 did_we_init_panel = 1;
60
61 while (i--)
62 av_shift(ARGV);
63
64 if (argv)
65 free(argv);
66
67 GtkInit_internal();
68
69 Gnome_InstallTypedefs();
70
71 Gnome_InstallObjects();
72
73
74 }
75 }
76
77
78
79 MODULE = Gnome::Panel::AppletWidget PACKAGE = Gnome::Panel::AppletWidget PREFIX = applet_widget_
80
81 #ifdef APPLET_WIDGET
82
83 void
84 init(Class, app_id, start_func=0, ...)
85 SV * Class
86 char * app_id
87 SV * start_func
88 CODE:
89 {
90 AV * args = 0;
91
92 if (start_func) {
93 args = newAV();
94 PackCallbackST(args, 2);
95 }
96 AppletInit_internal(app_id, args);
97 }
98
99 Gnome::Panel::AppletWidget
100 new(Class, param=0)
101 SV * Class
102 char * param
103 CODE:
104 RETVAL = (AppletWidget*)(applet_widget_new(param));
105 OUTPUT:
106 RETVAL
107
108 void
109 applet_widget_set_tooltip(aw, tooltip)
110 Gnome::Panel::AppletWidget aw
111 char * tooltip
112
113 void
114 applet_widget_set_widget_tooltip(aw, widget, tooltip)
115 Gnome::Panel::AppletWidget aw
116 Gtk::Widget widget
117 char * tooltip
118
119 void
120 applet_widget_add(aw, widget)
121 Gnome::Panel::AppletWidget aw
122 Gtk::Widget widget
123
124 #if 0
125
126 void
127 applet_widget_remove_from_panel(aw)
128 Gnome::Panel::AppletWidget aw
129
130 #endif
131
132 void
133 applet_widget_sync_config(aw)
134 Gnome::Panel::AppletWidget aw
135
136 #if 0
137
138 Gnome::Panel::OrientType
139 applet_widget_get_panel_orient(aw)
140 Gnome::Panel::AppletWidget aw
141
142 #endif
143
144 int
145 applet_widget_get_applet_count(Class)
146 CODE:
147 RETVAL = applet_widget_get_applet_count();
148 OUTPUT:
149 RETVAL
150
151 void
152 applet_widget_gtk_main(Class)
153 CODE:
154 applet_widget_gtk_main();
155
156 #endif
157