Commit 67c3fa4b authored by Alberts Muktupāvels's avatar Alberts Muktupāvels

panel-separator: convert to builtin module

parent 02d900dc
......@@ -164,6 +164,10 @@ PKG_CHECK_MODULES([NOTIFICATION_AREA], [
x11
])
PKG_CHECK_MODULES([SEPARATOR], [
gtk+-3.0 >= $GTK_REQUIRED
])
PKG_CHECK_MODULES([STATUS_NOTIFIER], [
gtk+-3.0 >= $GTK_REQUIRED
])
......@@ -280,6 +284,7 @@ AC_CONFIG_FILES([
modules/Makefile
modules/builtin/Makefile
modules/builtin/separator/Makefile
modules/external/Makefile
modules/external/clock/Makefile
modules/external/clock/pixmaps/Makefile
......
......@@ -39,7 +39,6 @@ panel_sources = \
panel-menu-bar-object.c \
panel-menu-button.c \
panel-menu-items.c \
panel-separator.c \
panel-recent.c \
panel-action-protocol.c \
panel-toplevel.c \
......@@ -81,7 +80,6 @@ panel_headers = \
panel-menu-bar-object.h \
panel-menu-button.h \
panel-menu-items.h \
panel-separator.h \
panel-recent.h \
panel-action-protocol.h \
panel-toplevel.h \
......
......@@ -24,7 +24,6 @@
#include "panel-applet-frame.h"
#include "panel-action-button.h"
#include "panel-menu-bar.h"
#include "panel-separator.h"
#include "panel-toplevel.h"
#include "panel-util.h"
#include "panel-menu-button.h"
......@@ -66,7 +65,6 @@ panel_applet_set_dnd_enabled (AppletInfo *info,
dnd_enabled);
break;
case PANEL_OBJECT_MENU_BAR:
case PANEL_OBJECT_SEPARATOR:
case PANEL_OBJECT_USER_MENU:
break;
default:
......@@ -192,7 +190,6 @@ applet_callback_callback (GtkWidget *widget,
* Applet's menu's are handled differently
*/
break;
case PANEL_OBJECT_SEPARATOR:
case PANEL_OBJECT_USER_MENU:
break;
default:
......
......@@ -36,7 +36,6 @@
#include "panel-applet-frame.h"
#include "panel-action-button.h"
#include "panel-menu-bar.h"
#include "panel-separator.h"
#include "panel-toplevel.h"
#include "panel-menu-button.h"
#include "panel-globals.h"
......@@ -90,7 +89,6 @@ typedef enum {
PANEL_ADDTO_LAUNCHER_NEW,
PANEL_ADDTO_MENU,
PANEL_ADDTO_MENUBAR,
PANEL_ADDTO_SEPARATOR,
PANEL_ADDTO_USER_MENU
} PanelAddtoItemType;
......@@ -155,15 +153,6 @@ prepend_internal_applets (GSList *list)
internal->iid = g_strdup ("MENUBAR:NEW");
list = g_slist_prepend (list, internal);
internal = g_new0 (PanelAddtoItemInfo, 1);
internal->type = PANEL_ADDTO_SEPARATOR;
internal->name = g_strdup (_("Separator"));
internal->description = g_strdup (_("A separator to organize the panel items"));
internal->icon = g_themed_icon_new (PANEL_ICON_SEPARATOR);
internal->action_type = PANEL_ACTION_NONE;
internal->iid = g_strdup ("SEPARATOR:NEW");
list = g_slist_prepend (list, internal);
internal = g_new0 (PanelAddtoItemInfo, 1);
internal->type = PANEL_ADDTO_USER_MENU;
internal->name = g_strdup (_("User menu"));
......@@ -768,11 +757,6 @@ panel_addto_add_item (PanelAddtoDialog *dialog,
dialog->insert_pack_type,
pack_index);
break;
case PANEL_ADDTO_SEPARATOR:
panel_separator_create (dialog->panel_widget->toplevel,
dialog->insert_pack_type,
pack_index);
break;
case PANEL_ADDTO_USER_MENU:
panel_user_menu_create (dialog->panel_widget->toplevel,
dialog->insert_pack_type,
......
......@@ -46,7 +46,6 @@ typedef enum {
PANEL_OBJECT_APPLET,
PANEL_OBJECT_ACTION,
PANEL_OBJECT_MENU_BAR,
PANEL_OBJECT_SEPARATOR,
PANEL_OBJECT_USER_MENU
} PanelObjectType;
......
......@@ -30,7 +30,6 @@
#define PANEL_ICON_REMOTE "applications-internet"
#define PANEL_ICON_REMOVABLE_MEDIA "drive-removable-media"
#define PANEL_ICON_RUN "system-run"
#define PANEL_ICON_SEPARATOR "gnome-panel-separator"
#define PANEL_ICON_SAVED_SEARCH "folder-saved-search"
#define PANEL_ICON_SEARCHTOOL "system-search"
#define PANEL_ICON_SHUTDOWN "system-shutdown"
......
......@@ -41,7 +41,6 @@
#include "panel-applet-frame.h"
#include "panel-menu-bar.h"
#include "panel-menu-button.h"
#include "panel-separator.h"
#include "panel-user-menu.h"
#include "panel-object-loader.h"
......@@ -225,11 +224,6 @@ panel_object_loader_idle_handler (gpointer dummy)
object->id,
object->settings);
break;
case PANEL_OBJECT_SEPARATOR:
panel_separator_load (panel_widget,
object->id,
object->settings);
break;
case PANEL_OBJECT_USER_MENU:
panel_user_menu_load (panel_widget,
object->id,
......@@ -373,7 +367,6 @@ static struct {
{ PANEL_OBJECT_MENU_BAR, "MenuBar" , FALSE },
{ PANEL_OBJECT_MENU, "MenuButton" , FALSE },
{ PANEL_OBJECT_LAUNCHER, "Launcher" , FALSE },
{ PANEL_OBJECT_SEPARATOR, "Separator" , FALSE },
{ PANEL_OBJECT_USER_MENU, "UserMenu" , FALSE }
};
......
/*
* panel-separator.c: panel "Separator" module
*
* Copyright (C) 2005 Carlos Garcia Campos <carlosgc@gnome.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
* Authors:
* Carlos Garcia Campos <carlosgc@gnome.org>
*/
#include <config.h>
#include "panel-layout.h"
#include "panel-separator.h"
#define PANEL_SEPARATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PANEL_TYPE_SEPARATOR, PanelSeparatorPrivate))
struct _PanelSeparatorPrivate {
AppletInfo *info;
PanelWidget *panel;
GtkOrientation orientation;
GtkWidget *separator;
};
G_DEFINE_TYPE (PanelSeparator, panel_separator, GTK_TYPE_EVENT_BOX)
static void
panel_separator_get_preferred_width (GtkWidget *widget,
gint *minimal_width,
gint *natural_width)
{
PanelSeparator *separator;
int size;
separator = PANEL_SEPARATOR (widget);
size = panel_toplevel_get_size (separator->priv->panel->toplevel);
if (separator->priv->orientation == GTK_ORIENTATION_VERTICAL)
*minimal_width = *natural_width = size;
else {
/* set width based on css styling & width of GtkSeparator */
GtkStyleContext *context;
GtkStateFlags state;
GtkWidget *child;
GtkBorder padding;
GtkBorder border;
gint width;
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
child = gtk_bin_get_child (GTK_BIN (widget));
if (child && gtk_widget_get_visible (child))
gtk_widget_get_preferred_width (child,
minimal_width,
natural_width);
else
*minimal_width = *natural_width = 0;
gtk_style_context_get_border (context, state, &border);
gtk_style_context_get_padding (context, state, &padding);
width = border.left + border.right + padding.left + padding.right;
*minimal_width += width;
*natural_width += width;
}
}
static void
panel_separator_get_preferred_height (GtkWidget *widget,
gint *minimal_height,
gint *natural_height)
{
PanelSeparator *separator;
int size;
separator = PANEL_SEPARATOR (widget);
size = panel_toplevel_get_size (separator->priv->panel->toplevel);
if (separator->priv->orientation == GTK_ORIENTATION_VERTICAL) {
/* set height based on css styling & height of GtkSeparator */
GtkStyleContext *context;
GtkStateFlags state;
GtkWidget *child;
GtkBorder padding;
GtkBorder border;
gint height;
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
child = gtk_bin_get_child (GTK_BIN (widget));
if (child && gtk_widget_get_visible (child))
gtk_widget_get_preferred_height (child,
minimal_height,
natural_height);
else
*minimal_height = *natural_height = 0;
gtk_style_context_get_border (context, state, &border);
gtk_style_context_get_padding (context, state, &padding);
height = border.top + border.bottom + padding.top + padding.bottom;
*minimal_height += height;
*natural_height += height;
} else
*minimal_height = *natural_height = size;
}
static void
panel_separator_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkStyleContext *context;
GtkStateFlags state;
GtkBorder padding;
GtkBorder border;
GtkAllocation new_allocation;
GtkWidget *child;
GTK_WIDGET_CLASS (panel_separator_parent_class)->size_allocate (widget, allocation);
/* We cannot return early here if allocation == old_allocation because
* the event_box base class just sized the child and we need to
* recalculate and resize the child (the actual GtkSeparator).
*
* Preferably, the event_box base class would offer a method of moving
* the private event window, in which case, calling its size_allocate
* would not be necessary. But, alas, no. */
context = gtk_widget_get_style_context (widget);
state = gtk_widget_get_state_flags (widget);
gtk_style_context_get_border (context, state, &border);
gtk_style_context_get_padding (context, state, &padding);
new_allocation.x = border.left + padding.left;
new_allocation.y = border.top + padding.top;
new_allocation.width = allocation->width -
(border.left + border.right + padding.left + padding.right);
new_allocation.height = allocation->height -
(border.top + border.bottom + padding.top + padding.bottom);
new_allocation.width = MAX (1, new_allocation.width);
new_allocation.height = MAX (1, new_allocation.height);
child = gtk_bin_get_child (GTK_BIN (widget));
if (child && gtk_widget_get_visible (child))
gtk_widget_size_allocate (child, &new_allocation);
}
static void
panel_separator_parent_set (GtkWidget *widget,
GtkWidget *previous_parent)
{
PanelSeparator *separator;
GtkWidget *parent;
separator = PANEL_SEPARATOR (widget);
parent = gtk_widget_get_parent (widget);
g_assert (!parent || PANEL_IS_WIDGET (parent));
separator->priv->panel = (PanelWidget *) parent;
}
static void
panel_separator_class_init (PanelSeparatorClass *klass)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
widget_class->get_preferred_width = panel_separator_get_preferred_width;
widget_class->get_preferred_height = panel_separator_get_preferred_height;
widget_class->size_allocate = panel_separator_size_allocate;
widget_class->parent_set = panel_separator_parent_set;
g_type_class_add_private (klass, sizeof (PanelSeparatorPrivate));
}
static void
panel_separator_init (PanelSeparator *separator)
{
GtkStyleContext *context;
separator->priv = PANEL_SEPARATOR_GET_PRIVATE (separator);
separator->priv->info = NULL;
separator->priv->panel = NULL;
separator->priv->orientation = GTK_ORIENTATION_HORIZONTAL;
separator->priv->separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
gtk_container_add (GTK_CONTAINER (separator),
separator->priv->separator);
gtk_widget_show (separator->priv->separator);
context = gtk_widget_get_style_context (GTK_WIDGET (separator));
gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
}
void
panel_separator_set_orientation (PanelSeparator *separator,
PanelOrientation orientation)
{
GtkOrientation orient = GTK_ORIENTATION_HORIZONTAL;
GtkOrientation orient_separator = GTK_ORIENTATION_VERTICAL;
GtkStyleContext *context;
g_return_if_fail (PANEL_IS_SEPARATOR (separator));
switch (orientation) {
case PANEL_ORIENTATION_TOP:
case PANEL_ORIENTATION_BOTTOM:
orient = GTK_ORIENTATION_HORIZONTAL;
orient_separator = GTK_ORIENTATION_VERTICAL;
break;
case PANEL_ORIENTATION_RIGHT:
case PANEL_ORIENTATION_LEFT:
orient = GTK_ORIENTATION_VERTICAL;
orient_separator = GTK_ORIENTATION_HORIZONTAL;
break;
}
if (orient == separator->priv->orientation)
return;
/* Use css class "horizontal"/"vertical" for theming */
context = gtk_widget_get_style_context (GTK_WIDGET (separator));
if (orient == GTK_ORIENTATION_HORIZONTAL) {
gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
gtk_style_context_remove_class (context, GTK_STYLE_CLASS_VERTICAL);
} else {
gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
gtk_style_context_remove_class (context, GTK_STYLE_CLASS_HORIZONTAL);
}
separator->priv->orientation = orient;
gtk_orientable_set_orientation (GTK_ORIENTABLE (separator->priv->separator),
orient_separator);
gtk_widget_queue_resize (GTK_WIDGET (separator));
}
void
panel_separator_load (PanelWidget *panel,
const char *id,
GSettings *settings)
{
PanelSeparator *separator;
separator = g_object_new (PANEL_TYPE_SEPARATOR, NULL);
separator->priv->info = panel_applet_register (GTK_WIDGET (separator),
panel,
PANEL_OBJECT_SEPARATOR,
id, settings,
NULL, NULL
);
if (!separator->priv->info) {
gtk_widget_destroy (GTK_WIDGET (separator));
return;
}
panel_widget_set_applet_expandable (panel, GTK_WIDGET (separator),
FALSE, TRUE);
panel_widget_set_applet_size_constrained (panel,
GTK_WIDGET (separator), TRUE);
}
void
panel_separator_create (PanelToplevel *toplevel,
PanelObjectPackType pack_type,
int pack_index)
{
panel_layout_object_create (PANEL_OBJECT_SEPARATOR, NULL,
panel_toplevel_get_id (toplevel),
pack_type, pack_index);
}
/*
* panel-separator.h: panel "Separator" module
*
* Copyright (C) 2005 Carlos Garcia Campos <carlosgc@gnome.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*
* Authors:
* Carlos Garcia Campos <carlosgc@gnome.org>
*/
#ifndef PANEL_SEPARATOR_H
#define PANEL_SEPARATOR_H
#include "applet.h"
#include "panel-widget.h"
G_BEGIN_DECLS
#define PANEL_TYPE_SEPARATOR (panel_separator_get_type ())
#define PANEL_SEPARATOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PANEL_TYPE_SEPARATOR, PanelSeparator))
#define PANEL_SEPARATOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), PANEL_TYPE_SEPARATOR, PanelSeparatorClass))
#define PANEL_IS_SEPARATOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PANEL_TYPE_SEPARATOR))
#define PANEL_IS_SEPARATOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PANEL_TYPE_SEPARATOR))
#define PANEL_SEPARATOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PANEL_TYPE_SEPARATOR, PanelSeparatorClass))
typedef struct _PanelSeparator PanelSeparator;
typedef struct _PanelSeparatorClass PanelSeparatorClass;
typedef struct _PanelSeparatorPrivate PanelSeparatorPrivate;
struct _PanelSeparator {
GtkEventBox parent;
PanelSeparatorPrivate *priv;
};
struct _PanelSeparatorClass {
GtkEventBoxClass parent_class;
};
GType panel_separator_get_type (void) G_GNUC_CONST;
void panel_separator_create (PanelToplevel *toplevel,
PanelObjectPackType pack_type,
int pack_index);
void panel_separator_load (PanelWidget *panel_widget,
const char *id,
GSettings *settings);
void panel_separator_set_orientation (PanelSeparator *separator,
PanelOrientation orientation);
G_END_DECLS
#endif /* PANEL_SEPARATOR_H */
......@@ -33,7 +33,6 @@
#include "panel-applet-frame.h"
#include "panel-action-button.h"
#include "panel-menu-bar.h"
#include "panel-separator.h"
#include "panel-multiscreen.h"
#include "panel-toplevel.h"
#include "panel-menu-button.h"
......@@ -81,10 +80,6 @@ orientation_change (AppletInfo *info,
case PANEL_OBJECT_USER_MENU:
panel_menu_bar_object_set_orientation (PANEL_MENU_BAR_OBJECT (info->widget), orientation);
break;
case PANEL_OBJECT_SEPARATOR:
panel_separator_set_orientation (PANEL_SEPARATOR (info->widget),
orientation);
break;
default:
break;
}
......@@ -868,15 +863,6 @@ drop_internal_applet (PanelWidget *panel,
success = FALSE;
}
} else if (!strcmp(applet_type,"SEPARATOR:NEW")) {
if (panel_layout_is_writable ()) {
panel_separator_create (panel->toplevel,
pack_type, pack_index);
success = TRUE;
} else {
success = FALSE;
}
} else if (!strcmp (applet_type, "USERMENU:NEW")) {
if (panel_layout_is_writable ()) {
panel_user_menu_create (panel->toplevel,
......
NULL =
SUBDIRS = \
separator \
$(NULL)
noinst_LTLIBRARIES = libbuiltin.la
libbuiltin_la_SOURCES = \
......@@ -27,6 +31,7 @@ libbuiltin_la_LDFLAGS = \
libbuiltin_la_LIBADD = \
$(top_builddir)/libgnome-panel/libgnome-panel.la \
$(top_builddir)/modules/builtin/separator/libseparator.la \
$(LIBGNOME_PANEL_LIBS) \
$(BUILTIN_LIBS) \
$(NULL)
......
......@@ -18,8 +18,10 @@
#include "config.h"
#include "gp-builtin.h"
#include "separator/separator-module.h"
const GpModuleVTable *builtin[] =
{
&separator_vtable,
NULL
};
NULL =
noinst_LTLIBRARIES = libseparator.la
libseparator_la_CPPFLAGS = \
-DLOCALEDIR=\""$(localedir)"\" \
-DG_LOG_DOMAIN=\""separator"\" \
-DG_LOG_USE_STRUCTURED=1 \
-I$(top_srcdir) \
$(AM_CPPFLAGS) \
$(NULL)
libseparator_la_CFLAGS = \
$(LIBGNOME_PANEL_CFLAGS) \
$(SEPARATOR_CFLAGS) \
$(WARN_CFLAGS) \
$(AM_CFLAGS) \
$(NULL)
libseparator_la_SOURCES = \
separator-applet.c \
separator-applet.h \
separator-module.c \
separator-module.h \
$(NULL)
libseparator_la_LIBADD = \
$(top_builddir)/libgnome-panel/libgnome-panel.la \
$(LIBGNOME_PANEL_LIBS) \
$(SEPARATOR_LIBS) \
$(NULL)
libseparator_la_LDFLAGS = \
$(WARN_LDFLAGS) \
$(AM_LDFLAGS) \
$(NULL)
-include $(top_srcdir)/git.mk
/*
* Copyright (C) 2016 Alberts Muktupāvels
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "separator-applet.h"
struct _SeparatorApplet
{
GpApplet parent;
GtkWidget *separator;
};
G_DEFINE_TYPE (SeparatorApplet, separator_applet, GP_TYPE_APPLET)
static void
separator_applet_placement_changed (GpApplet *applet,
GtkOrientation orientation,
GtkPositionType position)
{
SeparatorApplet *separator;
GtkOrientable *orientable;
separator = SEPARATOR_APPLET (applet);
orientable = GTK_ORIENTABLE (separator->separator);
if (orientation == GTK_ORIENTATION_HORIZONTAL)
gtk_orientable_set_orientation (orientable, GTK_ORIENTATION_VERTICAL);
else
gtk_orientable_set_orientation (orientable, GTK_ORIENTATION_HORIZONTAL);
}
static void
separator_applet_class_init (SeparatorAppletClass *separator_class)
{
GpAppletClass *applet_class;
applet_class = GP_APPLET_CLASS (separator_class);
applet_class->placement_changed = separator_applet_placement_changed;
}
static void
separator_applet_init (SeparatorApplet *separator)
{
GpApplet *applet;
GpAppletFlags flags;
GtkOrientation orientation;
applet = GP_APPLET (separator);
flags = GP_APPLET_FLAGS_EXPAND_MINOR;
orientation = gp_applet_get_orientation (applet);
gp_applet_set_flags (applet, flags);
if (orientation == GTK_ORIENTATION_HORIZONTAL)
separator->separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);
else
separator->separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
gtk_container_add (GTK_CONTAINER (separator), separator->separator);
gtk_widget_show (separator->separator);
}
/*
* Copyright (C) 2016 Alberts Muktupāvels
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef SEPARATOR_APPLET_H
#define SEPARATOR_APPLET_H
#include <libgnome-panel/gp-applet.h>
G_BEGIN_DECLS
#define SEPARATOR_TYPE_APPLET separator_applet_get_type ()
G_DECLARE_FINAL_TYPE (SeparatorApplet, separator_applet,
SEPARATOR, APPLET, GpApplet)
G_END_DECLS
#endif
/*
* Copyright (C) 2016 Alberts Muktupāvels
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <glib/gi18n-lib.h>
#include <libgnome-panel/gp-module.h>
#include "separator-applet.h"