To migrate from LibBonobo to the DBUS API remove PANEL_APPLET_BONOBO_FACTORY and replace it with either PANEL_APPLET_OUT_PROCESS_FACTORY or PANEL_APPLET_IN_PROCESS_FACTORY depending if you want an out-process or in-process applet, respectively.
The new macros have the same parameters as the old, except the version and description parameters have been
removed. Also the OAFIID:GNOME_
prefix of the first parameter can be dropped both from
the factory ID and the applet type name. The following
two code listings show the difference between the old and new macro definitions:
1 2 3 4 5 6 |
PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_HelloWorldFactory", PANEL_TYPE_APPLET, "WindowNavigationApplets", "0", hello_world_factory, NULL) |
1 2 3 4 |
PANEL_APPLET_OUT_PROCESS_FACTORY ("HelloWorldFactory", PANEL_TYPE_APPLET, hello_world_factory, NULL) |
The applet factory callback, in this case the hello_world_factory
usually contains a
check to ensure that the applet factory supports the requested applet. Here the
OAFIID:GNOME_
prefix should be dropped as well, see the following two code listings.
When you drop the prefix here, you must also remove the prefix from the applet name in the Panel Applet File.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
static gboolean hello_world_factory (PanelApplet *applet, const char *iid, gpointer data) { if (!g_strcmp (iid, "OAFIID:GNOME_HelloWorldApplet") != 0) return FALSE; hello_world_applet_fill (applet); return TRUE; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
static gboolean hello_world_factory (PanelApplet *applet, const char *iid, gpointer data) { if (!g_strcmp0 (iid, "HelloWorldApplet") != 0) return FALSE; hello_world_applet_fill (applet); return TRUE; } |
The old applet will have a service.in.in
file that was used to register the
applet with the GNOME Panel. This file must be renamed to .panel-applet
and its
content changed to match the format of the new file type. See
Panel Applet Files for a detailed explanation of the
valid fields. If you decided to use the out-process factory macro, then you should also supply a
D-BUS Service File so your applet can be started
using D-BUS activation.
For compatibility you can keep the old BonoboId
. This field can contain the old
bonobo identifier. It allows the panel to load applets using existing configuration data in your panels
settings. It can be a single string or a list of strings in case of applets with more than one
identifier.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Applet Factory] Id=HellWorldFactory Location=@LOCATION@ _Name=Hello World Applet Factory _Description=Factory for the our example applets [HelloWorldApplet] _Name=Hello World _Description=Factory for the Hello World example applet Icon=hello-world-icon BonoboId=OAFIID:GNOME_HelloWorldApplet X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=gnome-panel X-GNOME-Bugzilla-Component=hello-world-applet X-GNOME-Bugzilla-Version=@VERSION@ X-GNOME-Bugzilla-OtherBinaries=hello-world-applet |