Factored some more code

This commit is contained in:
Pierre Pronchery 2013-11-21 04:43:21 +01:00
parent 57615321ea
commit 19960d14f6
3 changed files with 29 additions and 44 deletions

View File

@ -91,6 +91,8 @@ static void _helper_init(PanelAppletHelper * helper, Panel * panel,
/* useful */
#define HELPER_POSITION_MENU_WIDGET
#include "../src/helper.c"
static int _helper_append(PanelAppletHelper * helper, char const * applet,
GtkWidget * box);
/* public */
@ -209,3 +211,28 @@ static void _helper_init(PanelAppletHelper * helper, Panel * panel,
helper->shutdown_dialog = _panel_helper_shutdown_dialog;
helper->suspend = _panel_helper_suspend;
}
/* useful */
/* helper_append */
static int _helper_append(PanelAppletHelper * helper, char const * applet,
GtkWidget * box)
{
Plugin * plugin;
PanelAppletDefinition * pad;
PanelApplet * pa;
GtkWidget * widget;
if((plugin = plugin_new(LIBDIR, "Panel", "applets", applet)) == NULL)
return error_print(PROGNAME);
if((pad = plugin_lookup(plugin, "applet")) == NULL)
{
plugin_delete(plugin);
return error_print(PROGNAME);
}
widget = NULL;
if((pa = pad->init(helper, &widget)) != NULL && widget != NULL)
gtk_box_pack_start(GTK_BOX(box), widget, pad->expand, pad->fill,
0);
return 0;
}

View File

@ -68,12 +68,8 @@ static int _notify(GtkIconSize iconsize, int timeout, char * applets[])
PanelWindow top;
char * filename;
GtkWidget * box;
GtkWidget * widget;
size_t i;
Plugin * plugin;
PanelAppletHelper helper;
PanelAppletDefinition * pad;
PanelApplet * pa;
GdkScreen * screen;
GdkWindow * root;
GdkRectangle rect;
@ -104,24 +100,7 @@ static int _notify(GtkIconSize iconsize, int timeout, char * applets[])
box = gtk_hbox_new(FALSE, 4);
_helper_init(&helper, &panel, PANEL_APPLET_TYPE_NOTIFICATION, iconsize);
for(i = 0; applets[i] != NULL; i++)
{
if((plugin = plugin_new(LIBDIR, "Panel", "applets", applets[i]))
== NULL)
{
error_print(PROGNAME);
continue;
}
if((pad = plugin_lookup(plugin, "applet")) == NULL)
{
plugin_delete(plugin);
continue;
}
widget = NULL;
if((pa = pad->init(&helper, &widget)) != NULL
&& widget != NULL)
gtk_box_pack_start(GTK_BOX(box), widget, pad->expand,
pad->fill, 0);
}
_helper_append(&helper, applets[i], box);
gtk_container_add(GTK_CONTAINER(panel.window), box);
gtk_widget_show_all(panel.window);
panel.timeout = 0;

View File

@ -64,12 +64,8 @@ static int _test(GtkIconSize iconsize, char * applets[])
PanelWindow top;
char * filename;
GtkWidget * box;
GtkWidget * widget;
size_t i;
Plugin * plugin;
PanelAppletHelper helper;
PanelAppletDefinition * pad;
PanelApplet * pa;
GdkScreen * screen;
GdkWindow * root;
GdkRectangle rect;
@ -92,24 +88,7 @@ static int _test(GtkIconSize iconsize, char * applets[])
box = gtk_hbox_new(FALSE, 4);
_helper_init(&helper, &panel, PANEL_APPLET_TYPE_NORMAL, iconsize);
for(i = 0; applets[i] != NULL; i++)
{
if((plugin = plugin_new(LIBDIR, "Panel", "applets", applets[i]))
== NULL)
{
error_print(PROGNAME);
continue;
}
if((pad = plugin_lookup(plugin, "applet")) == NULL)
{
plugin_delete(plugin);
continue;
}
widget = NULL;
if((pa = pad->init(&helper, &widget)) != NULL
&& widget != NULL)
gtk_box_pack_start(GTK_BOX(box), widget, pad->expand,
pad->fill, 0);
}
_helper_append(&helper, applets[i], box);
gtk_container_add(GTK_CONTAINER(panel.window), box);
gtk_widget_show_all(panel.window);
panel.timeout = 0;