Move internal data into 'private.h' header for better new plugins design.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Sat, 1 Feb 2014 16:04:17 +0000 (18:04 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Sat, 1 Feb 2014 16:04:17 +0000 (18:04 +0200)
37 files changed:
src/Makefile.am
src/configurator.c
src/icon-grid.c
src/menu-policy.c
src/misc.c
src/misc.h
src/panel.c
src/panel.h
src/plugin.c
src/plugin.h [deleted file]
src/plugins/batt/batt.c
src/plugins/cpu/cpu.c
src/plugins/cpufreq/cpufreq.c
src/plugins/dclock.c
src/plugins/deskno/deskno.c
src/plugins/dirmenu.c
src/plugins/image.c
src/plugins/indicator/indicator.c
src/plugins/kbled/kbled.c
src/plugins/launchbar.c
src/plugins/menu.c
src/plugins/monitors/monitors.c
src/plugins/netstat/netstat.c
src/plugins/netstatus/netstatus.c
src/plugins/pager.c
src/plugins/separator.c
src/plugins/space.c
src/plugins/taskbar.c
src/plugins/test.c
src/plugins/thermal/thermal.c
src/plugins/tray.c
src/plugins/volume/volume.c
src/plugins/volumealsa/volumealsa.c
src/plugins/wincmd.c
src/plugins/wnckpager/wnckpager.c
src/plugins/xkb/xkb.h
src/private.h [new file with mode: 0644]

index 8815274..6fc9d0a 100644 (file)
@@ -23,7 +23,7 @@ MENU_SOURCES = gtk-run.c
 endif
 
 lxpanel_SOURCES = \
-       misc.c misc.h \
+       misc.c \
        bg.c bg.h  \
        configurator.c \
        dbg.c dbg.h \
@@ -31,15 +31,21 @@ lxpanel_SOURCES = \
        gtkbar.h gtkbar.c \
        icon-grid.h icon-grid.c \
        menu-policy.h menu-policy.c \
-       panel.c panel.h \
-       plugin.c plugin.h \
-       conf.c conf.h \
+       panel.c \
+       plugin.c \
+       private.h \
+       conf.c \
        $(MENU_SOURCES)
 
+lxpanel_includedir = $(includedir)/lxpanel
+lxpanel_include_HEADERS = \
+       plugin.h \
+       panel.h \
+       misc.h \
+       conf.h
+
 if BUILD_PLUGIN_LOADER
 DYNAMIC_FLAGS = -export-dynamic
-lxpanel_includedir = $(includedir)/lxpanel
-lxpanel_include_HEADERS = $(top_srcdir)/include/lxpanel/plugin.h
 endif
 lxpanel_LDFLAGS = $(DYNAMIC_FLAGS)
 
index 2034bf6..ab298c7 100644 (file)
@@ -21,8 +21,7 @@
 #include "config.h"
 #endif
 
-#include "plugin.h"
-#include "panel.h"
+#include "private.h"
 #include "misc.h"
 #include "bg.h"
 #include <stdlib.h>
index 23f25d5..e2a42d5 100644 (file)
@@ -21,8 +21,7 @@
 #include <string.h>
 
 #include "icon-grid.h"
-#include "panel.h"
-#include "plugin.h"
+#include "private.h"
 
 static gboolean icon_grid_placement(IconGrid * ig);
 static void icon_grid_geometry(IconGrid * ig, gboolean layout);
index 4e630cd..8f82336 100644 (file)
@@ -20,7 +20,7 @@
 #include <glib.h>
 
 #include "menu-policy.h"
-#include "panel.h"
+#include "private.h"
 
 guint32 visibility_flags = 0;
 
index 6a7f659..266ab22 100644 (file)
@@ -30,7 +30,7 @@
 #include <libfm/fm.h>
 
 #include "misc.h"
-#include "panel.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 2353a88..ef678a2 100644 (file)
 #include <stdio.h>
 
 #include "panel.h"
-#include "plugin.h"
-
-enum _PluginConfType {
-    CONF_TYPE_STR,
-    CONF_TYPE_INT,
-    CONF_TYPE_BOOL,
-    CONF_TYPE_FILE,
-    CONF_TYPE_FILE_ENTRY,
-    CONF_TYPE_DIRECTORY_ENTRY,
-    CONF_TYPE_TRIM
-};
-
-enum { LINE_NONE, LINE_BLOCK_START, LINE_BLOCK_END, LINE_VAR };
 
+/* Decoded value of WM_STATE property. */
 typedef struct {
-    int num, len, type;
-    gchar str[256];
-    gchar *t[3];
-} line;
-
-
+    unsigned int modal : 1;
+    unsigned int sticky : 1;
+    unsigned int maximized_vert : 1;
+    unsigned int maximized_horz : 1;
+    unsigned int shaded : 1;
+    unsigned int skip_taskbar : 1;
+    unsigned int skip_pager : 1;
+    unsigned int hidden : 1;
+    unsigned int fullscreen : 1;
+    unsigned int above : 1;
+    unsigned int below : 1;
+} NetWMState;
+
+/* Decoded value of _NET_WM_WINDOW_TYPE property. */
 typedef struct {
-    int num;
-    gchar *str;
-} pair;
-
-extern pair allign_pair[];
-extern pair edge_pair[];
-extern pair width_pair[];
-extern pair height_pair[];
-extern pair bool_pair[];
-extern pair pos_pair[];
-
-int str2num(pair *p, gchar *str, int defval);
-gchar *num2str(pair *p, int num, gchar *defval);
-
-extern int lxpanel_get_line(char **fp, line *s);
-extern int lxpanel_put_line(FILE* fp, const char* format, ...);
-#define lxpanel_put_str(fp, name, val) (G_UNLIKELY( !(val) || !*(val) )) ? 0 : lxpanel_put_line(fp, "%s=%s", name, val)
-#define lxpanel_put_bool(fp, name, val) lxpanel_put_line(fp, "%s=%c", name, (val) ? '1' : '0')
-#define lxpanel_put_int(fp, name, val) lxpanel_put_line(fp, "%s=%d", name, val)
-//extern int lxpanel_put_str( FILE* fp, const char* name, const char* val );
-//extern int lxpanel_put_bool( FILE* fp, const char* name, gboolean val );
-//extern int lxpanel_put_int( FILE* fp, const char* name, int val );
-int get_line_as_is(char **fp, line *s);
+    unsigned int desktop : 1;
+    unsigned int dock : 1;
+    unsigned int toolbar : 1;
+    unsigned int menu : 1;
+    unsigned int utility : 1;
+    unsigned int splash : 1;
+    unsigned int dialog : 1;
+    unsigned int normal : 1;
+} NetWMWindowType;
 
 void Xclimsg(Window win, Atom type, long l0, long l1, long l2, long l3, long l4);
 void Xclimsgwm(Window win, Atom type, Atom arg);
@@ -92,8 +74,6 @@ GPid get_net_wm_pid(Window win);
 void calculate_position(Panel *np);
 gchar *expand_tilda(gchar *file);
 
-GtkWidget *_gtk_image_new_from_file_scaled(const gchar *file, gint width,
-                                           gint height, gboolean keep_ratio);
 void get_button_spacing(GtkRequisition *req, GtkContainer *parent, gchar *name);
 guint32 gcolor2rgb24(GdkColor *color);
 GtkWidget * fb_button_new_from_file(
@@ -101,9 +81,6 @@ GtkWidget * fb_button_new_from_file(
 GtkWidget * fb_button_new_from_file_with_label(
     gchar * image_file, int width, int height, gulong highlight_color, gboolean keep_ratio, Panel * panel, gchar * label);
 
-char* translate_exec_to_cmd( const char* exec, const char* icon,
-                             const char* title, const char* fpath );
-
 /*
  This function is used to re-create a new box with different
  orientation from the old one, add all children of the old one to
@@ -114,22 +91,10 @@ char* translate_exec_to_cmd( const char* exec, const char* icon,
 */
 GtkWidget* recreate_box( GtkBox* oldbox, GtkOrientation orientation );
 
-void show_error( GtkWindow* parent_win, const char* msg );
-
-/* Parameters: const char* name, gpointer ret_value, GType type, ....NULL */
-GtkWidget* create_generic_config_dlg( const char* title, GtkWidget* parent,
-                              GSourceFunc apply_func, Plugin * plugin,
-                      const char* name, ... );
-
-
 char* get_config_file( const char* profile, const char* file_name, gboolean is_global );
 
-extern GtkMenu* lxpanel_get_panel_menu( Panel* panel, Plugin* plugin, gboolean use_sub_menu );
-
 extern GdkPixbuf* lxpanel_load_icon( const char* name, int width, int height, gboolean use_fallback );
 
 void fb_button_set_from_file(GtkWidget* btn, const char* img_file, gint width, gint height, gboolean keep_ratio);
 
-gboolean lxpanel_launch_app(const char* exec, GList* files, gboolean in_terminal, char const* in_workdir);
-
 #endif
index 6b15607..0bc9fb2 100644 (file)
@@ -32,8 +32,7 @@
 #include <gdk/gdkx.h>
 #include <libfm/fm-gtk.h>
 
-#include "plugin.h"
-#include "panel.h"
+#include "private.h"
 #include "misc.h"
 #include "bg.h"
 
index c52ebfd..03c87bd 100644 (file)
 
 #include <X11/Xlib.h>
 #include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include "config.h"
-
-#include "bg.h"
-#include "ev.h"
-
-enum { ALLIGN_NONE, ALLIGN_LEFT, ALLIGN_CENTER, ALLIGN_RIGHT  };
-enum { EDGE_NONE=0, EDGE_LEFT, EDGE_RIGHT, EDGE_TOP, EDGE_BOTTOM };
-enum { WIDTH_NONE, WIDTH_REQUEST, WIDTH_PIXEL, WIDTH_PERCENT };
-enum { HEIGHT_NONE, HEIGHT_PIXEL, HEIGHT_REQUEST };
-enum {
-    ORIENT_NONE = -1,
-    ORIENT_VERT = GTK_ORIENTATION_VERTICAL,
-    ORIENT_HORIZ = GTK_ORIENTATION_HORIZONTAL
-};
-enum { POS_NONE, POS_START, POS_END };
-
-#define PANEL_ICON_SIZE               24       /* Default size of panel icons */
-#define PANEL_HEIGHT_DEFAULT          26       /* Default height of horizontal panel */
-#define PANEL_WIDTH_DEFAULT           150      /* Default "height" of vertical panel */
-#define PANEL_HEIGHT_MAX              200      /* Maximum height of panel */
-#define PANEL_HEIGHT_MIN              16       /* Minimum height of panel */
-#define PANEL_ICON_HIGHLIGHT          0x202020 /* Constant to pass to icon loader */
-
-/* to check if we are in LXDE */
-extern gboolean is_in_lxde;
-
-/* Context of a panel on a given edge. */
-typedef struct _Panel {
-    char* name;
-    GtkWidget * topgwin;               /* Main panel window */
-    Window topxwin;                    /* Main panel's X window   */
-    GdkDisplay * display;              /* Main panel's GdkDisplay */
-    GtkStyle * defstyle;
-    GtkIconTheme* icon_theme; /*Default icon theme*/
-
-    GtkWidget * box;                   /* Top level widget */
-
-    GtkRequisition requisition;
-    GtkWidget *(*my_box_new) (gboolean, gint);
-    GtkWidget *(*my_separator_new) ();
-
-    FbBg *bg;
-    int alpha;
-    guint32 tintcolor;
-    guint32 fontcolor;
-    GdkColor gtintcolor;
-    GdkColor gfontcolor;
-
-    int ax, ay, aw, ah;  /* prefferd allocation of a panel */
-    int cx, cy, cw, ch;  /* current allocation (as reported by configure event) allocation */
-    int allign, edge, margin;
-    int orientation;
-    int widthtype, width;
-    int heighttype, height;
-    gint monitor;
-    gulong strut_size;                 /* Values for WM_STRUT_PARTIAL */
-    gulong strut_lower;
-    gulong strut_upper;
-    int strut_edge;
-
-    guint config_changed : 1;
-    guint self_destroy : 1;
-    guint setdocktype : 1;
-    guint setstrut : 1;
-    guint round_corners : 1;
-    guint usefontcolor : 1;
-    guint usefontsize : 1;
-    guint fontsize;    
-    guint transparent : 1;
-    guint background : 1;
-    guint spacing;
-
-    guint autohide : 1;
-    guint visible : 1;
-    int height_when_hidden;
-    guint hide_timeout;
-    int icon_size;                     /* Icon size */
-
-    int desknum;
-    int curdesk;
-    guint32 *workarea;
-    int wa_len;
-
-    char* background_file;
-
-    GList * plugins;                   /* List of all plugins */
-    GSList * system_menus;             /* List of plugins having menus */
-
-    GtkWidget* plugin_pref_dialog;     /* Plugin preference dialog */
-    GtkWidget* pref_dialog;            /* preference dialog */
-    GtkWidget* margin_control;         /* Margin control in preference dialog */
-    GtkWidget* height_label;           /* Label of height control */
-    GtkWidget* width_label;            /* Label of width control */
-    GtkWidget* alignment_left_label;   /* Label of alignment: left control */
-    GtkWidget* alignment_right_label;  /* Label of alignment: right control */
-    GtkWidget* height_control;         /* Height control in preference dialog */
-    GtkWidget* width_control;          /* Width control in preference dialog */
-} Panel;
-
-/* Decoded value of WM_STATE property. */
-typedef struct {
-    unsigned int modal : 1;
-    unsigned int sticky : 1;
-    unsigned int maximized_vert : 1;
-    unsigned int maximized_horz : 1;
-    unsigned int shaded : 1;
-    unsigned int skip_taskbar : 1;
-    unsigned int skip_pager : 1;
-    unsigned int hidden : 1;
-    unsigned int fullscreen : 1;
-    unsigned int above : 1;
-    unsigned int below : 1;
-} NetWMState;
-
-/* Decoded value of _NET_WM_WINDOW_TYPE property. */
-typedef struct {
-    unsigned int desktop : 1;
-    unsigned int dock : 1;
-    unsigned int toolbar : 1;
-    unsigned int menu : 1;
-    unsigned int utility : 1;
-    unsigned int splash : 1;
-    unsigned int dialog : 1;
-    unsigned int normal : 1;
-} NetWMWindowType;
-
-typedef struct {
-    char *name;
-    char *disp_name;
-    void (*cmd)(void);
-} Command;
-
-extern Command commands[];
 
 extern gchar *cprofile;
 
@@ -218,9 +83,7 @@ extern int verbose;
 /* if current window manager is EWMH conforming. */
 extern gboolean is_ewmh_supported;
 
-extern FbEv *fbev;
-
-#define FBPANEL_WIN(win)  gdk_window_lookup(win)
+typedef struct _Panel Panel;
 
 extern void panel_apply_icon(GtkWindow *w);
 extern void panel_destroy(Panel *p);
@@ -241,4 +104,12 @@ extern int panel_handle_x_error_swallow_BadWindow_BadDrawable(Display * d, XErro
 
 extern const char* lxpanel_get_file_manager();
 
+/* Accessors APIs for Panel* */
+extern gboolean panel_is_horisontal(Panel *panel);
+extern gint panel_get_icon_size(Panel *panel);
+extern gint panel_get_height(Panel *panel);
+extern GtkWindow *panel_get_toplevel_window(Panel *panel);
+extern GtkStyle *panel_get_defstyle(Panel *panel);
+extern GtkIconTheme *panel_get_icon_theme(Panel *panel);
+
 #endif
index 6007702..128a778 100644 (file)
@@ -20,7 +20,7 @@
 #include "config.h"
 #endif
 
-#include "plugin.h"
+#include "private.h"
 
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
diff --git a/src/plugin.h b/src/plugin.h
deleted file mode 100644 (file)
index 21612ae..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * Copyright (c) 2006 LxDE Developers, see the file AUTHORS for details.
- *
- * 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, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef PLUGIN_H
-#define PLUGIN_H
-
-#include <gmodule.h>
-
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-#include <stdio.h>
-#include "panel.h"
-
-struct _Plugin;
-
-/* Support for external plugin versioning.
- * Plugins must invoke PLUGINCLASS_VERSIONING when they instantiate PluginClass. */
-#define PLUGINCLASS_VERSION 1
-#define PLUGINCLASS_VERSIONING \
-    .structure_size = sizeof(PluginClass), \
-    .structure_version = PLUGINCLASS_VERSION
-
-/* Representative of an available plugin. */
-typedef struct {
-
-    /* Keep these first.  Do not make unnecessary changes in structure layout. */
-    unsigned short structure_size;             /* Structure size, for versioning support */
-    unsigned short structure_version;          /* Structure version, for versioning support */
-
-    char * fname;                              /* Plugin file pathname */
-    int count;                                 /* Reference count */
-    GModule * gmodule;                         /* Associated GModule structure */
-
-    int dynamic : 1;                           /* True if dynamically loaded */
-    int unused_invisible : 1;                  /* Unused; reserved bit */
-    int not_unloadable : 1;                    /* Not unloadable due to GModule restriction */
-    int one_per_system : 1;                    /* Special: only one possible per system, such as system tray */
-    int one_per_system_instantiated : 1;       /* True if one instance exists */
-    int expand_available : 1;                  /* True if "stretch" option is available */
-    int expand_default : 1;                    /* True if "stretch" option is default */
-
-    /* These fields point within the plugin image. */
-    char * type;                               /* Internal name of plugin, to match external filename */
-    char * name;                               /* Display name of plugin for selection UI */
-    char * version;                            /* Version of plugin */
-    char * description;                                /* Brief textual description of plugin for selection UI */
-
-    int (*constructor)(struct _Plugin * plugin, char ** fp);           /* Create an instance of the plugin */
-    void (*destructor)(struct _Plugin * plugin);                       /* Destroy an instance of the plugin */
-    void (*config)(struct _Plugin * plugin, GtkWindow * parent);       /* Request the plugin to display its configuration dialog */
-    void (*save)(struct _Plugin * plugin, FILE * fp);                  /* Request the plugin to save its configuration to a file */
-    void (*panel_configuration_changed)(struct _Plugin * plugin);      /* Request the plugin to do a full redraw after a panel configuration change */
-} PluginClass;
-
-/* Representative of a loaded and active plugin attached to a panel. */
-typedef struct _Plugin {
-    PluginClass * class;                       /* Back pointer to PluginClass */
-    Panel * panel;                             /* Back pointer to Panel */
-    GtkWidget * pwid;                          /* Top level widget; plugin allocates, but plugin mechanism, not plugin itself, destroys this */
-    int expand;                                        /* Expand ("stretch") setting for container */
-    int padding;                               /* Padding setting for container */
-    int border;                                        /* Border setting for container */
-    gpointer priv;                             /* Private context for plugin; plugin frees this in its destructor */
-} Plugin;
-
-extern Plugin * plugin_load(char * type);              /* Create an instance of a plugin, loading it if necessary */
-extern int plugin_start(Plugin * this, char ** fp);    /* Configure and start a plugin by calling its constructor */
-extern void plugin_unload(Plugin * pl);                        /* Delete an instance of a plugin if initialization fails */
-extern void plugin_delete(Plugin * pl);                        /* Delete an instance of a plugin */
-extern GList * plugin_get_available_classes(void);     /* Get a list of all plugin classes; free with plugin_class_list_free */
-extern void plugin_class_list_free(GList * list);      /* Free the list allocated by plugin_get_available_classes */
-extern void plugin_widget_set_background(GtkWidget * w, Panel * p);
-                                                       /* Recursively set the background of all widgets on a panel background configuration change */
-extern gboolean plugin_button_press_event(GtkWidget *widget, GdkEventButton *event, Plugin *plugin);
-                                                        /* Handler for "button_press_event" signal with Plugin as parameter */
-extern void plugin_popup_set_position_helper(Plugin * p, GtkWidget * near, GtkWidget * popup, GtkRequisition * popup_req, gint * px, gint * py);
-                                                       /* Helper for position-calculation callback for popup menus */
-extern void plugin_adjust_popup_position(GtkWidget * popup, Plugin * plugin);
-                                                       /* Helper to move popup windows away from the panel */
-
-/* FIXME: optional definitions */
-#define STATIC_SEPARATOR
-#define STATIC_LAUNCHBAR
-#define STATIC_DCLOCK
-#define STATIC_WINCMD
-#define STATIC_DIRMENU
-#define STATIC_TASKBAR
-#define STATIC_PAGER
-#define STATIC_TRAY
-#define STATIC_MENU
-#define STATIC_SPACE
-#define STATIC_ICONS
-
-#endif
index 6809c6a..62d3dc4 100644 (file)
@@ -48,7 +48,7 @@
 #include "batt_sys.h"
 #include "misc.h" /* used for the line struct */
 #include "panel.h" /* used to determine panel orientation */
-#include "plugin.h"
+#include "private.h"
 
 /* The last MAX_SAMPLES samples are averaged when charge rates are evaluated.
    This helps prevent spikes in the "time left" values the user sees. */
index d495487..7857eb5 100644 (file)
@@ -28,7 +28,7 @@
 #include <stdlib.h>
 #include <glib/gi18n.h>
 
-#include "plugin.h"
+#include "private.h"
 #include "panel.h"
 #include "misc.h"
 
index bebbaee..7c46c67 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 06ac01c..350a93d 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 686391d..c6d31d4 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index d6a1d6e..13eb65b 100644 (file)
@@ -25,7 +25,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "dbg.h"
 
 /* Temporary for sort of directory names. */
index e637978..59e72b4 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 15c6191..b1e90da 100644 (file)
@@ -28,7 +28,7 @@ TODO : vertical support (r354)
 
 */
 
-#include "plugin.h"
+#include "private.h"
 
 #include "misc.h"
 #include "panel.h"
index 45d2841..ac28d4b 100644 (file)
@@ -32,7 +32,7 @@
 #include "dbg.h"
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "icon-grid.h"
 
 static const char * on_icons_theme[] = {
index 748d608..07694ee 100644 (file)
@@ -38,7 +38,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "icon-grid.h"
 #include "menu-policy.h"
 
index a400435..e07f5da 100644 (file)
@@ -32,7 +32,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "bg.h"
 #include "menu-policy.h"
 
index a2adbb6..3cb4ef7 100644 (file)
@@ -68,7 +68,7 @@
 #include <stdlib.h>
 #include <glib/gi18n.h>
 
-#include "plugin.h"
+#include "private.h"
 #include "panel.h"
 #include "misc.h"
 
index 9bc1d7a..6cc5af7 100644 (file)
@@ -36,7 +36,7 @@
 #include "wireless.h"
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "dbg.h"
 
 /* 1 second */
index e7bde94..422df45 100644 (file)
@@ -24,7 +24,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 0617f1a..e2b61e7 100644 (file)
@@ -34,7 +34,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "icon-grid.h"
 
 #include "dbg.h"
index 7612ce2..ceba4f7 100644 (file)
@@ -18,7 +18,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include <glib/gi18n.h>
 
index 9a23232..a7c6f89 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 80ccf07..c28327f 100644 (file)
@@ -31,7 +31,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "icon.xpm"
 #include "gtkbar.h"
 #include "icon-grid.h"
index 3de93c9..167a1b7 100644 (file)
@@ -13,7 +13,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 1337910..61aeb83 100644 (file)
@@ -28,7 +28,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 062c172..936a9f1 100644 (file)
@@ -32,7 +32,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "bg.h"
 #include "icon-grid.h"
 
index 59b5f8b..2a6eb38 100644 (file)
@@ -27,7 +27,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index ece5c76..1bb6582 100644 (file)
@@ -27,7 +27,7 @@
 #include <poll.h>
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "dbg.h"
 
 #define ICONS_VOLUME_HIGH   PACKAGE_DATA_DIR "/lxpanel/images/volume-high.png"
index 23e8280..f9bba26 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 #include "dbg.h"
 
 /* Commands that can be issued. */
index 895f176..ca2c11b 100644 (file)
@@ -38,7 +38,7 @@
 
 #include "panel.h"
 #include "misc.h"
-#include "plugin.h"
+#include "private.h"
 
 #include "dbg.h"
 
index 6f9931a..12750e2 100644 (file)
@@ -24,7 +24,7 @@
 #include <gtk/gtk.h>
 #include <glib.h>
 
-#include "plugin.h"
+#include "private.h"
 #include "misc.h"
 #include "panel.h"
 #include "ev.h"
diff --git a/src/private.h b/src/private.h
new file mode 100644 (file)
index 0000000..e050cb7
--- /dev/null
@@ -0,0 +1,301 @@
+/**
+ * Copyright (c) 2006 LxDE Developers, see the file AUTHORS for details.
+ *
+ * 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, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef PRIVATE_H
+#define PRIVATE_H
+
+//#include "plugin.h"
+
+#include <gmodule.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+#include <stdio.h>
+#include "panel.h"
+
+#include <gdk/gdk.h>
+
+#include "bg.h"
+#include "ev.h"
+
+/* Extracted from panel.h */
+enum { ALLIGN_NONE, ALLIGN_LEFT, ALLIGN_CENTER, ALLIGN_RIGHT  };
+enum { EDGE_NONE=0, EDGE_LEFT, EDGE_RIGHT, EDGE_TOP, EDGE_BOTTOM };
+enum { WIDTH_NONE, WIDTH_REQUEST, WIDTH_PIXEL, WIDTH_PERCENT };
+enum { HEIGHT_NONE, HEIGHT_PIXEL, HEIGHT_REQUEST };
+enum {
+    ORIENT_NONE = -1,
+    ORIENT_VERT = GTK_ORIENTATION_VERTICAL,
+    ORIENT_HORIZ = GTK_ORIENTATION_HORIZONTAL
+};
+enum { POS_NONE, POS_START, POS_END };
+
+#define PANEL_ICON_SIZE               24       /* Default size of panel icons */
+#define PANEL_HEIGHT_DEFAULT          26       /* Default height of horizontal panel */
+#define PANEL_WIDTH_DEFAULT           150      /* Default "height" of vertical panel */
+#define PANEL_HEIGHT_MAX              200      /* Maximum height of panel */
+#define PANEL_HEIGHT_MIN              16       /* Minimum height of panel */
+#define PANEL_ICON_HIGHLIGHT          0x202020 /* Constant to pass to icon loader */
+
+/* to check if we are in LXDE */
+extern gboolean is_in_lxde;
+
+/* Context of a panel on a given edge. */
+struct _Panel {
+    char* name;
+    GtkWidget * topgwin;               /* Main panel window */
+    Window topxwin;                    /* Main panel's X window   */
+    GdkDisplay * display;              /* Main panel's GdkDisplay */
+    GtkStyle * defstyle;
+    GtkIconTheme* icon_theme; /*Default icon theme*/
+
+    GtkWidget * box;                   /* Top level widget */
+
+    GtkRequisition requisition;
+    GtkWidget *(*my_box_new) (gboolean, gint);
+    GtkWidget *(*my_separator_new) ();
+
+    FbBg *bg;
+    int alpha;
+    guint32 tintcolor;
+    guint32 fontcolor;
+    GdkColor gtintcolor;
+    GdkColor gfontcolor;
+
+    int ax, ay, aw, ah;  /* prefferd allocation of a panel */
+    int cx, cy, cw, ch;  /* current allocation (as reported by configure event) allocation */
+    int allign, edge, margin;
+    int orientation;
+    int widthtype, width;
+    int heighttype, height;
+    gint monitor;
+    gulong strut_size;                 /* Values for WM_STRUT_PARTIAL */
+    gulong strut_lower;
+    gulong strut_upper;
+    int strut_edge;
+
+    guint config_changed : 1;
+    guint self_destroy : 1;
+    guint setdocktype : 1;
+    guint setstrut : 1;
+    guint round_corners : 1;
+    guint usefontcolor : 1;
+    guint usefontsize : 1;
+    guint fontsize;    
+    guint transparent : 1;
+    guint background : 1;
+    guint spacing;
+
+    guint autohide : 1;
+    guint visible : 1;
+    int height_when_hidden;
+    guint hide_timeout;
+    int icon_size;                     /* Icon size */
+
+    int desknum;
+    int curdesk;
+    guint32 *workarea;
+    int wa_len;
+
+    char* background_file;
+
+    GList * plugins;                   /* List of all plugins */
+    GSList * system_menus;             /* List of plugins having menus */
+
+    GtkWidget* plugin_pref_dialog;     /* Plugin preference dialog */
+    GtkWidget* pref_dialog;            /* preference dialog */
+    GtkWidget* margin_control;         /* Margin control in preference dialog */
+    GtkWidget* height_label;           /* Label of height control */
+    GtkWidget* width_label;            /* Label of width control */
+    GtkWidget* alignment_left_label;   /* Label of alignment: left control */
+    GtkWidget* alignment_right_label;  /* Label of alignment: right control */
+    GtkWidget* height_control;         /* Height control in preference dialog */
+    GtkWidget* width_control;          /* Width control in preference dialog */
+};
+
+typedef struct {
+    char *name;
+    char *disp_name;
+    void (*cmd)(void);
+} Command;
+
+extern Command commands[];
+
+extern FbEv *fbev;
+
+#define FBPANEL_WIN(win)  gdk_window_lookup(win)
+
+
+/* Extracted from misc.h */
+typedef struct _Plugin Plugin;
+
+enum _PluginConfType {
+    CONF_TYPE_STR,
+    CONF_TYPE_INT,
+    CONF_TYPE_BOOL,
+    CONF_TYPE_FILE,
+    CONF_TYPE_FILE_ENTRY,
+    CONF_TYPE_DIRECTORY_ENTRY,
+    CONF_TYPE_TRIM
+};
+
+enum { LINE_NONE, LINE_BLOCK_START, LINE_BLOCK_END, LINE_VAR };
+
+typedef struct {
+    int num, len, type;
+    gchar str[256];
+    gchar *t[3];
+} line;
+
+
+typedef struct {
+    int num;
+    gchar *str;
+} pair;
+
+extern pair allign_pair[];
+extern pair edge_pair[];
+extern pair width_pair[];
+extern pair height_pair[];
+extern pair bool_pair[];
+extern pair pos_pair[];
+
+int str2num(pair *p, gchar *str, int defval);
+gchar *num2str(pair *p, int num, gchar *defval);
+
+extern int lxpanel_get_line(char **fp, line *s);
+extern int lxpanel_put_line(FILE* fp, const char* format, ...);
+#define lxpanel_put_str(fp, name, val) (G_UNLIKELY( !(val) || !*(val) )) ? 0 : lxpanel_put_line(fp, "%s=%s", name, val)
+#define lxpanel_put_bool(fp, name, val) lxpanel_put_line(fp, "%s=%c", name, (val) ? '1' : '0')
+#define lxpanel_put_int(fp, name, val) lxpanel_put_line(fp, "%s=%d", name, val)
+//extern int lxpanel_put_str( FILE* fp, const char* name, const char* val );
+//extern int lxpanel_put_bool( FILE* fp, const char* name, gboolean val );
+//extern int lxpanel_put_int( FILE* fp, const char* name, int val );
+int get_line_as_is(char **fp, line *s);
+
+GtkWidget *_gtk_image_new_from_file_scaled(const gchar *file, gint width,
+                                           gint height, gboolean keep_ratio);
+
+char* translate_exec_to_cmd( const char* exec, const char* icon,
+                             const char* title, const char* fpath );
+
+void show_error( GtkWindow* parent_win, const char* msg );
+
+/* Parameters: const char* name, gpointer ret_value, GType type, ....NULL */
+GtkWidget* create_generic_config_dlg( const char* title, GtkWidget* parent,
+                              GSourceFunc apply_func, Plugin * plugin,
+                      const char* name, ... );
+
+extern GtkMenu* lxpanel_get_panel_menu( Panel* panel, Plugin* plugin, gboolean use_sub_menu );
+
+gboolean lxpanel_launch_app(const char* exec, GList* files, gboolean in_terminal, char const* in_workdir);
+
+
+/* Extracted from plugin.h */
+struct _Plugin;
+
+/* Support for external plugin versioning.
+ * Plugins must invoke PLUGINCLASS_VERSIONING when they instantiate PluginClass. */
+#define PLUGINCLASS_VERSION 1
+#define PLUGINCLASS_VERSIONING \
+    .structure_size = sizeof(PluginClass), \
+    .structure_version = PLUGINCLASS_VERSION
+
+/* Representative of an available plugin. */
+typedef struct {
+
+    /* Keep these first.  Do not make unnecessary changes in structure layout. */
+    unsigned short structure_size;             /* Structure size, for versioning support */
+    unsigned short structure_version;          /* Structure version, for versioning support */
+
+    char * fname;                              /* Plugin file pathname */
+    int count;                                 /* Reference count */
+    GModule * gmodule;                         /* Associated GModule structure */
+
+    int dynamic : 1;                           /* True if dynamically loaded */
+    int unused_invisible : 1;                  /* Unused; reserved bit */
+    int not_unloadable : 1;                    /* Not unloadable due to GModule restriction */
+    int one_per_system : 1;                    /* Special: only one possible per system, such as system tray */
+    int one_per_system_instantiated : 1;       /* True if one instance exists */
+    int expand_available : 1;                  /* True if "stretch" option is available */
+    int expand_default : 1;                    /* True if "stretch" option is default */
+
+    /* These fields point within the plugin image. */
+    char * type;                               /* Internal name of plugin, to match external filename */
+    char * name;                               /* Display name of plugin for selection UI */
+    char * version;                            /* Version of plugin */
+    char * description;                                /* Brief textual description of plugin for selection UI */
+
+    int (*constructor)(struct _Plugin * plugin, char ** fp);           /* Create an instance of the plugin */
+    void (*destructor)(struct _Plugin * plugin);                       /* Destroy an instance of the plugin */
+    void (*config)(struct _Plugin * plugin, GtkWindow * parent);       /* Request the plugin to display its configuration dialog */
+    void (*save)(struct _Plugin * plugin, FILE * fp);                  /* Request the plugin to save its configuration to a file */
+    void (*panel_configuration_changed)(struct _Plugin * plugin);      /* Request the plugin to do a full redraw after a panel configuration change */
+} PluginClass;
+
+/* Representative of a loaded and active plugin attached to a panel. */
+struct _Plugin {
+    PluginClass * class;                       /* Back pointer to PluginClass */
+    Panel * panel;                             /* Back pointer to Panel */
+    GtkWidget * pwid;                          /* Top level widget; plugin allocates, but plugin mechanism, not plugin itself, destroys this */
+    int expand;                                        /* Expand ("stretch") setting for container */
+    int padding;                               /* Padding setting for container */
+    int border;                                        /* Border setting for container */
+    gpointer priv;                             /* Private context for plugin; plugin frees this in its destructor */
+};
+
+/* Plugins management - deprecated style, for backward compatibility */
+extern Plugin * plugin_load(char * type);              /* Create an instance of a plugin, loading it if necessary */
+extern int plugin_start(Plugin * this, char ** fp);    /* Configure and start a plugin by calling its constructor */
+extern void plugin_unload(Plugin * pl);                        /* Delete an instance of a plugin if initialization fails */
+extern void plugin_delete(Plugin * pl);                        /* Delete an instance of a plugin */
+extern GList * plugin_get_available_classes(void);     /* Get a list of all plugin classes; free with plugin_class_list_free */
+extern void plugin_class_list_free(GList * list);      /* Free the list allocated by plugin_get_available_classes */
+extern gboolean plugin_button_press_event(GtkWidget *widget, GdkEventButton *event, Plugin *plugin);
+                                                        /* Handler for "button_press_event" signal with Plugin as parameter */
+extern void plugin_adjust_popup_position(GtkWidget * popup, Plugin * plugin);
+                                                       /* Helper to move popup windows away from the panel */
+extern void plugin_popup_set_position_helper(Plugin * p, GtkWidget * near, GtkWidget * popup, GtkRequisition * popup_req, gint * px, gint * py);
+                                                       /* Helper for position-calculation callback for popup menus */
+
+extern void plugin_widget_set_background(GtkWidget * w, Panel * p);
+                                                       /* Recursively set the background of all widgets on a panel background configuration change */
+
+/* FIXME: optional definitions */
+#define STATIC_SEPARATOR
+#define STATIC_LAUNCHBAR
+#define STATIC_DCLOCK
+#define STATIC_WINCMD
+#define STATIC_DIRMENU
+#define STATIC_TASKBAR
+#define STATIC_PAGER
+#define STATIC_TRAY
+#define STATIC_MENU
+#define STATIC_SPACE
+#define STATIC_ICONS
+
+/* Plugins management - new style */
+gboolean lxpanel_add_plugin(Panel *p, const char *name, gint at);
+GList *lxpanel_get_all_types(void); /* transfer none */
+
+GQuark lxpanel_plugin_qinit; /* access to LXPanelPluginInit data */
+#define PLUGIN_CLASS(_i) (g_object_get_qdata(G_OBJECT(_i),lxpanel_plugin_qinit))
+
+GQuark lxpanel_plugin_qconf; /* access to congig_setting_t data */
+
+#endif