| Extracted from Pike v7.8 release 866 at 2016-04-05.

[Top]
Gnome
Gnome.AppletWidget

# Class Gnome.AppletWidget

Description

  Applets are basically GNOME applications whose window sits inside the panel. Also the panel "takes care" of the applets by providing them with session saving and restarting, window management (inside of the panel), and a context menu.

  The simplest applet one can write would be along the lines of:

       int main( int argc, array argv )
       {
         Gnome.init( "hello", "1.0", argv, 0 );
         Gnome.AppletWidget("hello")-&gt;add(GTK.Label("Hello World!"))-&gt;show_all();
         GTK.applet_widget_gtk_main();
       }

  This creates an applet which just sits on the panel, not really doing anything, in real life the label would be substituted by something which actually does something useful. As you can see the applet doesn't really take care of restarting itself.

  For the applet to be added to the menus, you need to install two files. Your x.gnorba file goes into $sysconfdir/CORBA/servers/ and the x.desktop file goes into $prefix/share/applets/&lt;category&gt;/.

  Example hello.desktop:

       [Desktop Entry]
        Name=Hello Applet
        Comment=An example Hello World type Applet
        Type=PanelApplet
        Exec=hello.pike
        Icon=gnome-hello.png
        Terminal=0

  Example hello.gnorba:

       [hello]
        type=exe
        repo_id=IDL:GNOME/Applet:1.0
        description=Hello Applet
        location_info=hello.pike

  One thing to keep in mind is that the Exec line for the .desktop doesn't actually get executed when the Type is PanelApplet. The Exec line should be the GOAD ID specified in the .gnorba file (the "hello" enclosed by brackets). For a simple applet all you need to do is replace the hello.pike with the name of your applet executable.

  When the user right clicks on the applet, a menu appears, this is all handeled by the panel, so in order to add items to it you use a special interface to "add callbacks" to the menu. A very simple example would be (making our hello applet even more feature full):

       void hello_there()
       {
         write( "Hello there, indeed!\n" );
       }

       int main( int argc, array argv )
       {
         Gnome.AppletWidget w;
         Gnome.init( "hello", "1.0", argv, 0 );
         w = Gnome.AppletWidget("hello");
         w-&gt;add(GTK.Label("Hello World!"))-&gt;show_all();
         w-&gt;register_callback( "hello", "Hello there", hello_there, 0 );
         GTK.applet_widget_gtk_main();
       }

  Now the user will see a "Hello There" menu item on the applet menu, and when selected, the applet will print "Hello There". Useful huh?

  Note that the first argument to the register_callback is just a string identifier of this callback, and can really be whatever you want. But it should NOT be translated as the label (the 2nd argument) should be.

  Signals: back_change

  change_orient

  change_pixel_size

  change_position

  tooltip_state

Inherit Plug

  inherit GTK.Plug : Plug