Index: xfce-panel-plugin.h =================================================================== --- xfce-panel-plugin.h (revision 25717) +++ xfce-panel-plugin.h (working copy) @@ -102,6 +102,44 @@ } /** + * XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL_WITH_INIT + * @construct : name of a function that can be cast to an #XfcePanelPluginFunc + * @init : function run before gtk_init() + * + * Registers and initializes the plugin. This is the only thing that is + * required to create a panel plugin. + * + * The @init argument should be a function that takes two parameters: + * + * void init( int argc, char **argv ); + * + * See also: Panel Plugin interface + **/ +#define XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL_WITH_INIT(construct,init_func) \ + gint \ + main (gint argc, gchar **argv) \ + { \ + GtkWidget *plugin; \ + \ + init_func (argc, argv); \ + \ + gtk_init (&argc, &argv); \ + \ + plugin = xfce_external_panel_plugin_new (argc, argv, \ + (XfcePanelPluginFunc)construct); \ + \ + if (G_UNLIKELY (plugin == NULL)) \ + return 1; \ + \ + g_signal_connect_after (G_OBJECT (plugin), "destroy", \ + G_CALLBACK (gtk_main_quit), NULL); \ + gtk_widget_show (plugin); \ + \ + gtk_main (); \ + return 0; \ + } + +/** * XFCE_PANEL_PLUGIN_REGISTER_INTERNAL * @construct : name of a function that can be cast to an #XfcePanelPluginFunc *