"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