Merging upstream version 0.8.0 (Closes: #639729, #761971).
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 8 Dec 2014 10:52:01 +0000 (12:52 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Mon, 8 Dec 2014 10:52:01 +0000 (12:52 +0200)
141 files changed:
AUTHORS
ChangeLog
Makefile.am
Makefile.in
README
TODO [new file with mode: 0644]
aclocal.m4
config.guess
config.sub
configure
configure.ac
data/Makefile.in
data/ui/launchtaskbar.glade
data/ui/launchtaskbar.ui
data/ui/netstatus.glade
data/ui/netstatus.ui
data/ui/panel-pref.glade
data/ui/panel-pref.ui
ltmain.sh
lxpanel.pc.in
man/Makefile.in
plugins/Makefile.am
plugins/Makefile.in
plugins/batt/batt.c
plugins/cpu/cpu.c
plugins/cpufreq/cpufreq.c
plugins/dclock.c
plugins/deskno/deskno.c
plugins/dirmenu.c
plugins/kbled/kbled.c
plugins/launchtaskbar.c
plugins/menu.c
plugins/monitors/monitors.c
plugins/netstat/netstat.c
plugins/netstat/netstat.h
plugins/netstat/nsconfig.h
plugins/netstat/passwd_gui.c
plugins/netstat/statusicon.c
plugins/netstat/statusicon.h
plugins/netstatus/netstatus-dialog.c
plugins/netstatus/netstatus-icon.c
plugins/pager.c
plugins/separator.c
plugins/space.c
plugins/thermal/thermal.c
plugins/tray.c
plugins/volume/volume.c
plugins/volumealsa/volumealsa.c
plugins/weather/weather.c
plugins/weather/weatherwidget.c
plugins/weather/weatherwidget.h
plugins/wincmd.c
plugins/xkb/xkb-plugin.c
po/LINGUAS
po/POTFILES.in
po/af.po
po/ar.po
po/be.po
po/bg.po
po/bn.po
po/bn_IN.po
po/ca.po
po/cs.po
po/da.po
po/de.po
po/el.po
po/en_GB.po
po/es.po
po/es_VE.po [deleted file]
po/et.po
po/eu.po
po/fa.po
po/fi.po
po/fo.po
po/fr.po
po/frp.po
po/gl.po
po/he.po
po/hr.po
po/hu.po
po/id.po
po/is.po
po/it.po
po/ja.po
po/kk.po
po/km.po
po/ko.po
po/lg.po
po/lt.po
po/lv.po [new file with mode: 0644]
po/ml.po
po/ms.po
po/nb.po
po/nl.po
po/nn.po
po/pa.po
po/pl.po
po/ps.po
po/pt.po
po/pt_BR.po
po/ro.po
po/ru.po
po/sk.po
po/sl.po
po/sr.po
po/sr@latin.po
po/sv.po
po/te.po
po/th.po
po/tr.po
po/tt_RU.po
po/ug.po
po/uk.po
po/ur.po
po/ur_PK.po
po/vi.po
po/zh_CN.po
po/zh_HK.po
po/zh_TW.po
src/Makefile.am
src/Makefile.in
src/bg.c
src/conf.c
src/configurator.c
src/ev.c
src/ev.h
src/gtk-compat.h [new file with mode: 0644]
src/gtk-run.c
src/icon-grid-old.c
src/icon-grid.c
src/icon-grid.h
src/input-button.c [new file with mode: 0644]
src/main.c [new file with mode: 0644]
src/misc.c
src/misc.h
src/panel.c
src/panel.h
src/panel.h.in [new file with mode: 0644]
src/plugin.c
src/plugin.h
src/private.h

diff --git a/AUTHORS b/AUTHORS
index ddf5c87..c97ec8c 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -14,6 +14,7 @@ LXPanel - Lightweight X11 desktop panel
     Giuseppe Penone <giuspen@gmail.com>
     Piotr Sipika <piotr.sipika@gmail.com>
     Raimar Bühmann <raimar@buehmann.de>
+    Peter <ombalaxitabou@users.sf.net>
 
 [History]
 LXPanel is a derivative work from fbpanel [1] written by Anatoly Asviyan,
index 8ddeed9..260a8a2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,96 @@
+* Added workaround for crash in gtk-run with old libmenu-cache.
+* Core functions are separated into a private library to allow reliable
+    linking of modules using -Wl,-z,defs.
+* Added macro LXPANEL_CHECK_VERSION() for third party pluguns API check.
+* Added CONF_TYPE_EXTERNAL support for lxpanel_generic_config_dlg().
+* Implemented property "aspect-width" for PanelIconGrid to allow using
+    non-square tray sockets.
+* Added support for monitors "All" to span panel over all monitors (i.e.
+    to allow pre-0.6.0 behavior).
+* Implemented monitors hotplug support.
+* Fixed popups positioning in multi-monitor environment.
+* Fixed updating panel size if appropriate monitor changed its size or
+    position.
+* Implemented disabling for "Reserve space" button if another monitor
+    lies beyond the edge so reservation will cover it. Also reservation
+    will not be applied in such cases even if set in config manually.
+* Some edge and monitors selections in panel configuration dialog may be
+    insensitive now if appropriate edge and monitor combination is not
+    available, to avoid panels stacking one over another.
+* Fixed bug with hidden panel disappearing after resolution change.
+* Add lxpanel_image_new_for_icon() API to replace another (obsolete) API
+    _gtk_image_new_from_file_scaled().
+* Added API panel_config_hotkey_button_new() to use as CONF_TYPE_EXTERNAL
+    widget to allow configure global hotkeys for plugins functions.
+* Added API lxpanel_apply_hotkey() as a convenient libkeybinder interface
+    to use in modules that also use panel_config_hotkey_button_new(). Now
+    LXPanel requires libkeybinder too.
+* Added API panel_config_click_button_new() to configure mouse gestures
+    and panel_config_click_parse() to parse its output.
+* Added "icon-size-changed" signal to LXPanel which is emitted when icons
+    size in configuration dialog was changed.
+* Improved lxpanel_image_new_for_icon() API to follow panel icons size
+    changes, not only theme changes. This way calls on lxpanel_image_*
+    APIs on theme or panel changes may be eliminated, i.e. code becomes
+    simpler.
+* Added new lxpanel_image_change_icon() API for simplification reasons so
+    other lxpanel_image_* APIs can be replaced completely.
+* APIs lxpanel_button_set_icon() lxpanel_button_update_icon() now don't
+    require setting icon size since created button already follows size
+    from panel settings. Also it doesn't require refresh after the panel
+    configuration change.
+* Disabled scaling up small icons in the taskbar: scaled up icons look
+    bad due to pixelization (patch from Anton Lobashev).
+* When adding new panel, now correctly edges of monitor where popup was
+    are tried before any other monitors.
+* Correctly open 'netstat' plugin own menu on leftclick since rightclick
+    should open panel context menu instead.
+* System critical temperature level in 'thermal' plugin now is properly
+    ignored if manual levels are active.
+* Fixed click on 'menu' plugin, only image was clickable, not whole area.
+* Added API panel_config_int_button_new() for generic plugin config spin
+    button with custom range, not just generic 0...1000.
+* Fixed wrong behavior with PanelIconGrid constrained width after child
+    was removed: size wasn't always renegotiated correctly.
+* Fixed range of space reservation in multi-monitor setup (reservation
+    might cover another monitor).
+* Numeric-only string will be saved now double-quoted to distinguish it
+    from number in config.
+* Implemented flashing on task with urgency in grouped task list menu.
+* Disabled flashing on urgency hint if window has focus, most of window
+    managers do the same on window decorations.
+* Fixed border of 'batt' plugin, it should correctly use panel settings.
+    Also 'Size' setting of it doesn't include border width.
+* Allowed default alarmCommand on 'batt' plugin be translated.
+* Implemented sorting plugins in Add plugin window in alphabetic order.
+* Fixed font in the weather plugin to use panel settings.
+* Added new API lxpanel_button_compose() for future usage by plugins.
+* Added optional volumealsa plugin volume mapping from alsamixer (patch
+    from Peter).
+* Added new API lxpanel_button_set_label() to change label of button that
+    was created using some lxpanel_button_*() API.
+* Added "panel-font-changed" signal to LXPanel to be able follow settings
+    change in font configuration of panel using lxpanel_button_*() API.
+* Fixed nasty bug with autohidden panel after unhide appeared for short
+    time somewhere at the screen.
+* Fixed calendar and configuration windows blinking on their appearance.
+* Fixed panel update when background image changed in configuration.
+* Changed to use persistent background image for panel and Cairo. This
+    way updating background should be faster, and also fixed background
+    of plugins when image is used, both placement and alpha color.
+* Urgent window is now always visible on the taskbar irrelevant of the
+    desktop number on which it appears, because urgent window requires
+    user attention (patch from Andy Balaam).
+* Moved bit of code that is used out from src/bg.c and discarded src/bg.c
+    from code used.
+* Dropped setting members of Panel structure: workarea, wa_len, bg.
+* Replaced GtkComboBoxEntry in netstatus plugin window with GtkComboBox.
+* Simplified plugins background setting - they should never use any own
+    background but either use one from panel or from theme (depending on
+    panel configuration). This should improve performance.
+* Don't update a whole panel background anymore after some plugin was
+    resized, only update the plugin itself to improve performance.
+
 0.7.2
 -------------------------------------------------------------------------
 * Fixed unhiding panel if it becomes empty and height_when_hidden is 0.
index 586cb09..2d67e5a 100644 (file)
@@ -2,7 +2,7 @@
 
 ACLOCAL_AMFLAGS= -I m4
 
-SUBDIRS = plugins src data po man
+SUBDIRS = src plugins data po man
 
 EXTRA_DIST = \
         autogen.sh \
index d0ee9ba..42490c0 100644 (file)
@@ -85,7 +85,7 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
        $(top_srcdir)/data/default/panels/panel.in \
        $(top_srcdir)/data/two_panels/panels/top.in \
        $(top_srcdir)/data/two_panels/panels/bottom.in AUTHORS COPYING \
-       ChangeLog README ar-lib compile config.guess config.sub \
+       ChangeLog README TODO ar-lib compile config.guess config.sub \
        install-sh missing ltmain.sh
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
@@ -230,7 +230,6 @@ am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
-ADDITIONAL_FLAGS = @ADDITIONAL_FLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
 ALL_PLUGINS_LIST = @ALL_PLUGINS_LIST@
 AMTAR = @AMTAR@
@@ -283,6 +282,8 @@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
 INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
 INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
 INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
+KEYBINDER_CFLAGS = @KEYBINDER_CFLAGS@
+KEYBINDER_LIBS = @KEYBINDER_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
@@ -293,7 +294,6 @@ LIBXML2_LIBS = @LIBXML2_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LXPANEL_MODULE = @LXPANEL_MODULE@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MENU_CACHE_CFLAGS = @MENU_CACHE_CFLAGS@
@@ -334,6 +334,9 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+VERSION_MAJOR = @VERSION_MAJOR@
+VERSION_MICRO = @VERSION_MICRO@
+VERSION_MINOR = @VERSION_MINOR@
 X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -393,7 +396,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = plugins src data po man
+SUBDIRS = src plugins data po man
 EXTRA_DIST = \
         autogen.sh \
         lxpanel.pc.in
diff --git a/README b/README
index a8ca465..64e23b9 100644 (file)
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ LXPanel is a lightweight X11 desktop panel.
 
 To build this program you need some development packages:
   libtool 2.2 or newer, intltool, libgtk 2.18 or newer,
-  libfm-gtk 1.2 or newer, libwnck.
+  libfm-gtk 1.2 or newer, libwnck, libkeybinder.
 Optional development packages may be required to build some modules:
   libmenu-cache,
   libalsasound ('volumealsa' plugin isn't built if missing),
@@ -40,7 +40,9 @@ About Netstat and Netstatus plugins:
 
 About theming & lxpanel:
 
-1. In future, hardcoding should not be used for icon lookup. Instead, use Gtk's built-in functions to handle icon lookup. If necessary, provide a fallback (hardcoded) icon.
+1. LXPanel tries to use as much themed icons as possible.  Fallback icons
+   may be also provided if they are placed into $(datadir)/lxpanel/images
+   directory.  Few plugins already provide their fallback icons.
 
 2. Current icon names that can be themed specifically for lxpanel include:
        *"lxpanel-background"
@@ -51,10 +53,13 @@ About theming & lxpanel:
        *"numlock-off"
        *"scrllock-on"
        *"scrllock-off"
-       *"wincmd"
+       *"window-manager"
        *"ns-lock"
+       *"cpufreq-icon"
        *possibly more, as yet unfound.
 
+There are also a substantial amount of others, but they use the icon naming specification.
+
 3. You can also set theme for any plugin specifically using it's widget name
     which is equal to plugin type.
 
@@ -62,8 +67,6 @@ About theming & lxpanel:
     as ~/.config/lxpanel/$PROFILE/gtkrc, where $PROFILE is the profile used on
     the LXPanel start.
 
-There are also a substantial amount of others, but they use the icon naming specification.
-
 
 About keyboard options translations in xkb plugin:
 
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..4a1a989
--- /dev/null
+++ b/TODO
@@ -0,0 +1,16 @@
+* drag & drop plugins via middle button
+* "Move" option in plugin context menu
+* "lxpanelctl command ..."
+* drag & drop launchers (LauncherButton widget as "application/x-lxpanel-launcher")
+* accessibility (keys-only; single-button-mouse; special devices)
+* 'volumealsa' improvements
+* compose new custom launcher in launchbar config dialog
+* special launchers support ()
+* manage invisible panel from unplugged monitor
+* hotkeys for launchers
+* support rounded corners
+* support keywords in gtk-run
+* convert Task into GtkWidget and use it to emit signals for menus and buttons
+* make click-wait-release popdown popups similarly to as GtkMenuShell does
+* make lxpanel multiscreen-aware
+* improve startup time (move every non-instant operation into idle callback)
index 79105bb..89c24e4 100644 (file)
@@ -337,7 +337,6 @@ msgstr ""
 dnl
 glib_DEFUN([GLIB_GNU_GETTEXT],
   [AC_REQUIRE([AC_PROG_CC])dnl
-   AC_REQUIRE([AC_HEADER_STDC])dnl
    
    GLIB_LC_MESSAGES
    GLIB_WITH_NLS
@@ -673,7 +672,7 @@ AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
 
 
 # nls.m4 serial 5 (gettext-0.18)
-dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -1478,8 +1477,7 @@ to "yes", and re-run configure.
 END
     AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
   fi
-fi
-])
+fi])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
index 1f5c50c..b79252d 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2014-03-23'
+timestamp='2013-06-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,7 +149,7 @@ Linux|GNU|GNU/*)
        LIBC=gnu
        #endif
        EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
        ;;
 esac
 
@@ -826,7 +826,7 @@ EOF
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
-    *:MSYS*:*)
+    i*:MSYS*:*)
        echo ${UNAME_MACHINE}-pc-msys
        exit ;;
     i*:windows32*:*)
@@ -969,10 +969,10 @@ EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
        ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-${LIBC}
+    or1k:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
+    or32:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     padre:Linux:*:*)
@@ -1260,26 +1260,16 @@ EOF
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
-       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                   grep IS_64BIT_ARCH >/dev/null
-               then
-                   case $UNAME_PROCESSOR in
-                       i386) UNAME_PROCESSOR=x86_64 ;;
-                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
-                   esac
-               fi
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               case $UNAME_PROCESSOR in
+                   i386) UNAME_PROCESSOR=x86_64 ;;
+                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
+               esac
            fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # Avoid executing cc on OS X 10.9, as it ships with a stub
-           # that puts up a graphical alert prompting to install
-           # developer tools.  Any system running Mac OS X 10.7 or
-           # later (Darwin 11 and later) is required to have a 64-bit
-           # processor. This is not true of the ARM version of Darwin
-           # that Apple uses in portable devices.
-           UNAME_PROCESSOR=x86_64
        fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
@@ -1371,6 +1361,154 @@ EOF
        exit ;;
 esac
 
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+       "4"
+#else
+       ""
+#endif
+       ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    c34*)
+       echo c34-convex-bsd
+       exit ;;
+    c38*)
+       echo c38-convex-bsd
+       exit ;;
+    c4*)
+       echo c4-convex-bsd
+       exit ;;
+    esac
+fi
+
 cat >&2 <<EOF
 $0: unable to guess system type
 
index d654d03..9633db7 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2014-05-01'
+timestamp='2013-08-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -265,7 +265,6 @@ case $basic_machine in
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
-       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -283,10 +282,8 @@ case $basic_machine in
        | mips64vr5900 | mips64vr5900el \
        | mipsisa32 | mipsisa32el \
        | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa32r6 | mipsisa32r6el \
        | mipsisa64 | mipsisa64el \
        | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64r6 | mipsisa64r6el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipsr5900 | mipsr5900el \
@@ -298,7 +295,8 @@ case $basic_machine in
        | nds32 | nds32le | nds32be \
        | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
-       | open8 | or1k | or1knd | or32 \
+       | open8 \
+       | or1k | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
@@ -326,7 +324,7 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -383,7 +381,6 @@ case $basic_machine in
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
-       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
@@ -403,10 +400,8 @@ case $basic_machine in
        | mips64vr5900-* | mips64vr5900el-* \
        | mipsisa32-* | mipsisa32el-* \
        | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa32r6-* | mipsisa32r6el-* \
        | mipsisa64-* | mipsisa64el-* \
        | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64r6-* | mipsisa64r6el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
        | mipsr5900-* | mipsr5900el-* \
@@ -418,7 +413,6 @@ case $basic_machine in
        | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
-       | or1k*-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -1380,7 +1374,7 @@ case $os in
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1598,6 +1592,9 @@ case $basic_machine in
        mips*-*)
                os=-elf
                ;;
+       or1k-*)
+               os=-elf
+               ;;
        or32-*)
                os=-coff
                ;;
index 4cd33a2..6f6acc0 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for lxpanel 0.7.2.
+# Generated by GNU Autoconf 2.69 for lxpanel 0.8.0.
 #
 # Report bugs to <http://lxde.org/>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='lxpanel'
 PACKAGE_TARNAME='lxpanel'
-PACKAGE_VERSION='0.7.2'
-PACKAGE_STRING='lxpanel 0.7.2'
+PACKAGE_VERSION='0.8.0'
+PACKAGE_STRING='lxpanel 0.8.0'
 PACKAGE_BUGREPORT='http://lxde.org/'
 PACKAGE_URL=''
 
@@ -634,6 +634,9 @@ ac_includes_default="\
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
+VERSION_MICRO
+VERSION_MINOR
+VERSION_MAJOR
 MKINSTALLDIRS
 POSUB
 POFILES
@@ -658,8 +661,6 @@ BUILD_OSS_PLUGINS_FALSE
 BUILD_OSS_PLUGINS_TRUE
 BUILD_ALSA_PLUGINS_FALSE
 BUILD_ALSA_PLUGINS_TRUE
-LXPANEL_MODULE
-ADDITIONAL_FLAGS
 ENABLE_MENU_CACHE_FALSE
 ENABLE_MENU_CACHE_TRUE
 MENU_CACHE_LIBS
@@ -672,6 +673,8 @@ APPLET_LIBS
 APPLET_CFLAGS
 ENABLE_INDICATOR_SUPPORT_FALSE
 ENABLE_INDICATOR_SUPPORT_TRUE
+KEYBINDER_LIBS
+KEYBINDER_CFLAGS
 PACKAGE_LIBS
 PACKAGE_CFLAGS
 PKG_CONFIG_LIBDIR
@@ -861,6 +864,8 @@ PKG_CONFIG_PATH
 PKG_CONFIG_LIBDIR
 PACKAGE_CFLAGS
 PACKAGE_LIBS
+KEYBINDER_CFLAGS
+KEYBINDER_LIBS
 APPLET_CFLAGS
 APPLET_LIBS
 X11_CFLAGS
@@ -1410,7 +1415,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures lxpanel 0.7.2 to adapt to many kinds of systems.
+\`configure' configures lxpanel 0.8.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1484,7 +1489,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of lxpanel 0.7.2:";;
+     short | recursive ) echo "Configuration of lxpanel 0.8.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1549,6 +1554,10 @@ Some influential environment variables:
               C compiler flags for PACKAGE, overriding pkg-config
   PACKAGE_LIBS
               linker flags for PACKAGE, overriding pkg-config
+  KEYBINDER_CFLAGS
+              C compiler flags for KEYBINDER, overriding pkg-config
+  KEYBINDER_LIBS
+              linker flags for KEYBINDER, overriding pkg-config
   APPLET_CFLAGS
               C compiler flags for APPLET, overriding pkg-config
   APPLET_LIBS linker flags for APPLET, overriding pkg-config
@@ -1630,7 +1639,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-lxpanel configure 0.7.2
+lxpanel configure 0.8.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1999,7 +2008,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by lxpanel $as_me 0.7.2, which was
+It was created by lxpanel $as_me 0.8.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2862,7 +2871,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='lxpanel'
- VERSION='0.7.2'
+ VERSION='0.8.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2954,7 +2963,6 @@ END
     as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
   fi
 fi
-
 ac_config_headers="$ac_config_headers config.h"
 
 
@@ -12398,6 +12406,62 @@ CC="$lt_save_CC"
 
 
 # Checks for libraries.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing log" >&5
+$as_echo_n "checking for library containing log... " >&6; }
+if ${ac_cv_search_log+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char log ();
+int
+main ()
+{
+return log ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' m; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_log=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_log+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_log+:} false; then :
+
+else
+  ac_cv_search_log=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_log" >&5
+$as_echo "$ac_cv_search_log" >&6; }
+ac_res=$ac_cv_search_log
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
 # Check whether --enable-gtk3 was given.
 if test "${enable_gtk3+set}" = set; then :
   enableval=$enable_gtk3; case "${enableval}" in
 
 
 if test "x$enable_gtk3" = "xyes" ; then
-  CFLAGS="$CFLAGS -DENABLE_GTK3"
   pkg_modules="$pkg_modules gtk+-3.0 libfm-gtk3 >= 1.2.0 libwnck-3.0"
+  keybinder_module=keybinder-3.0
 else
   pkg_modules="$pkg_modules gtk+-2.0 >= 2.18.0 libfm-gtk >= 1.2.0 libwnck-1.0"
+  keybinder_module=keybinder
 fi
 
 pkg_modules="$pkg_modules \
 
 
 
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for KEYBINDER" >&5
+$as_echo_n "checking for KEYBINDER... " >&6; }
+
+if test -n "$KEYBINDER_CFLAGS"; then
+    pkg_cv_KEYBINDER_CFLAGS="$KEYBINDER_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$keybinder_module\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$keybinder_module") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_KEYBINDER_CFLAGS=`$PKG_CONFIG --cflags "$keybinder_module" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$KEYBINDER_LIBS"; then
+    pkg_cv_KEYBINDER_LIBS="$KEYBINDER_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$keybinder_module\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$keybinder_module") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_KEYBINDER_LIBS=`$PKG_CONFIG --libs "$keybinder_module" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               KEYBINDER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$keybinder_module" 2>&1`
+        else
+               KEYBINDER_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$keybinder_module" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$KEYBINDER_PKG_ERRORS" >&5
+
+       as_fn_error $? "Package requirements ($keybinder_module) were not met:
+
+$KEYBINDER_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables KEYBINDER_CFLAGS
+and KEYBINDER_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables KEYBINDER_CFLAGS
+and KEYBINDER_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+       KEYBINDER_CFLAGS=$pkg_cv_KEYBINDER_CFLAGS
+       KEYBINDER_LIBS=$pkg_cv_KEYBINDER_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+
 ###########################
 # Indicator Info
 ###########################
@@ -12934,8 +13093,6 @@ $as_echo "$as_me: WARNING: No libmenu-cache found.  All menu related routines ar
 $as_echo "#define DISABLE_MENU 1" >>confdefs.h
 
 fi
-
-
  if test x"$enable_menu_cache" = x"yes"; then
   ENABLE_MENU_CACHE_TRUE=
   ENABLE_MENU_CACHE_FALSE='#'
@@ -12958,7 +13115,6 @@ if test x"$enable_more_warnings" = x"yes"; then
   ADDITIONAL_FLAGS="-Wall -Werror=all -Werror=format -Werror=implicit-function-declaration -Werror=implicit-int -Werror=missing-braces -Werror=parentheses -Werror=return-type -Werror=strict-aliasing -Werror=switch -Wuninitialized -Werror=unused-label -Werror=unused-value -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Werror=missing-declarations -Wredundant-decls -Wmissing-noreturn -Wpointer-arith -Wcast-align -Wwrite-strings -Werror=inline -Werror=format-nonliteral -Wformat-nonliteral -Werror=format-security -Wformat-security -Winit-self -Werror=missing-include-dirs -Werror=undef -Werror=aggregate-return -Wmissing-format-attribute -Werror=nested-externs -fno-strict-aliasing -fmessage-length=0 -Wp,-D_FORTIFY_SOURCE=2 -DG_DISABLE_DEPRECATED -DG_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_DEPRECATED -DGTK_DISABLE_SINGLE_INCLUDES"
 fi
 
-
 PACKAGE_CFLAGS="$PACKAGE_CFLAGS $MENU_CACHE_CFLAGS $ADDITIONAL_FLAGS"
 PACKAGE_LIBS="$PACKAGE_LIBS $MENU_CACHE_LIBS"
 
@@ -13022,19 +13178,6 @@ $as_echo "no" >&6; }
   ;;
 esac
 
-# when passing "-z defs" to linker, we would better to make sure
-# there are no undefined references.  However, we intend not to
-# fix at the moment since we don't have spin-off libraray containing
-# the necessary functions.
-if test ! -z "$LDFLAGS"; then
-    LDFLAGS=`echo "$LDFLAGS" | sed -e 's/-Wl,-z,defs//'`
-fi
-
-LXPANEL_MODULE="-avoid-version \
--rpath \$(libdir)/lxpanel/plugins \
--no-undefined "'-export-symbols-regex "^[^_].*"'
-
-
 # Check whether --enable-alsa was given.
 if test "${enable_alsa+set}" = set; then :
   enableval=$enable_alsa; compile_alsa=$enableval
@@ -14990,12 +15133,18 @@ else
     CPPFLAGS="$CPPFLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
 fi
 
+ac_version_subst_str=`echo $VERSION | awk -F '.' '/.*/ { printf "VERSION_MAJOR=%d VERSION_MINOR=%d VERSION_MICRO=%d", $1, $2, $3 }'`
+eval ${ac_version_subst_str}
+
+
+
+
 if test `eval "echo $sysconfdir"` = /usr/etc
 then
     sysconfdir=/etc
 fi
 
-ac_config_files="$ac_config_files lxpanel.pc Makefile src/Makefile plugins/Makefile po/Makefile.in data/Makefile data/default/panels/panel data/two_panels/panels/top data/two_panels/panels/bottom man/Makefile"
+ac_config_files="$ac_config_files lxpanel.pc Makefile src/Makefile src/panel.h plugins/Makefile po/Makefile.in data/Makefile data/default/panels/panel data/two_panels/panels/top data/two_panels/panels/bottom man/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -15551,7 +15700,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by lxpanel $as_me 0.7.2, which was
+This file was extended by lxpanel $as_me 0.8.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15617,7 +15766,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-lxpanel config.status 0.7.2
+lxpanel config.status 0.8.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -16031,6 +16180,7 @@ do
     "lxpanel.pc") CONFIG_FILES="$CONFIG_FILES lxpanel.pc" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "src/panel.h") CONFIG_FILES="$CONFIG_FILES src/panel.h" ;;
     "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
     "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
index 68860fc..e8290eb 100644 (file)
@@ -1,5 +1,5 @@
 AC_PREREQ(2.53)
-AC_INIT(lxpanel, 0.7.2, http://lxde.org/)
+AC_INIT(lxpanel, 0.8.0, http://lxde.org/)
 AM_INIT_AUTOMAKE([-Wall foreign subdir-objects no-dist-gzip dist-xz])
 AC_CONFIG_HEADER([config.h])
 AC_CONFIG_MACRO_DIR([m4])
@@ -24,6 +24,7 @@ LT_PREREQ([2.2])
 LT_INIT
 
 # Checks for libraries.
+AC_SEARCH_LIBS([log], [m])
 AC_ARG_ENABLE(gtk3,
 AC_HELP_STRING([--enable-gtk3],[enable to use gtk-3.0 instead of gtk-2.0]),
 [case "${enableval}" in
@@ -33,10 +34,11 @@ AC_HELP_STRING([--enable-gtk3],[enable to use gtk-3.0 instead of gtk-2.0]),
 esac],[])
 
 if test "x$enable_gtk3" = "xyes" ; then
-  CFLAGS="$CFLAGS -DENABLE_GTK3"
   pkg_modules="$pkg_modules gtk+-3.0 libfm-gtk3 >= 1.2.0 libwnck-3.0"
+  keybinder_module=keybinder-3.0
 else
   pkg_modules="$pkg_modules gtk+-2.0 >= 2.18.0 libfm-gtk >= 1.2.0 libwnck-1.0"
+  keybinder_module=keybinder
 fi
 
 pkg_modules="$pkg_modules \
@@ -47,6 +49,10 @@ PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
 AC_SUBST(PACKAGE_CFLAGS)
 AC_SUBST(PACKAGE_LIBS)
 
+PKG_CHECK_MODULES(KEYBINDER, [$keybinder_module])
+AC_SUBST(KEYBINDER_CFLAGS)
+AC_SUBST(KEYBINDER_LIBS)
+
 ###########################
 # Indicator Info
 ###########################
@@ -86,8 +92,6 @@ if test x"$enable_menu_cache" = "xno"; then
        AC_WARN([No libmenu-cache found.  All menu related routines are not built.])
        AC_DEFINE(DISABLE_MENU, [1], [Disable menu related routines])
 fi
-AC_SUBST(MENU_CACHE_CFLAGS)
-AC_SUBST(MENU_CACHE_LIBS)
 AM_CONDITIONAL(ENABLE_MENU_CACHE, test x"$enable_menu_cache" = x"yes")
 
 AC_ARG_ENABLE(more_warnings,
@@ -100,7 +104,6 @@ AC_ARG_ENABLE(more_warnings,
 if test x"$enable_more_warnings" = x"yes"; then
   ADDITIONAL_FLAGS="-Wall -Werror=all -Werror=format -Werror=implicit-function-declaration -Werror=implicit-int -Werror=missing-braces -Werror=parentheses -Werror=return-type -Werror=strict-aliasing -Werror=switch -Wuninitialized -Werror=unused-label -Werror=unused-value -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Werror=missing-declarations -Wredundant-decls -Wmissing-noreturn -Wpointer-arith -Wcast-align -Wwrite-strings -Werror=inline -Werror=format-nonliteral -Wformat-nonliteral -Werror=format-security -Wformat-security -Winit-self -Werror=missing-include-dirs -Werror=undef -Werror=aggregate-return -Wmissing-format-attribute -Werror=nested-externs -fno-strict-aliasing -fmessage-length=0 -Wp,-D_FORTIFY_SOURCE=2 -DG_DISABLE_DEPRECATED -DG_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_DEPRECATED -DGTK_DISABLE_SINGLE_INCLUDES"
 fi
-AC_SUBST(ADDITIONAL_FLAGS)
 
 PACKAGE_CFLAGS="$PACKAGE_CFLAGS $MENU_CACHE_CFLAGS $ADDITIONAL_FLAGS"
 PACKAGE_LIBS="$PACKAGE_LIBS $MENU_CACHE_LIBS"
@@ -155,20 +158,6 @@ case `$LD --sort-common -v 2>&1 </dev/null` in
   ;;
 esac
 
-dnl FIXME: filter for undefined symbols in plugins
-# when passing "-z defs" to linker, we would better to make sure
-# there are no undefined references.  However, we intend not to
-# fix at the moment since we don't have spin-off libraray containing
-# the necessary functions.
-if test ! -z "$LDFLAGS"; then
-    LDFLAGS=`echo "$LDFLAGS" | sed -e 's/-Wl,-z,defs//'`
-fi
-
-LXPANEL_MODULE="-avoid-version \
--rpath \$(libdir)/lxpanel/plugins \
--no-undefined "'-export-symbols-regex "^[[^_]].*"'
-AC_SUBST(LXPANEL_MODULE)
-
 AC_ARG_ENABLE([alsa],
     AS_HELP_STRING([--disable-alsa],
                     [compile ALSA providers (default: enable)]),
@@ -381,6 +370,13 @@ else
     CPPFLAGS="$CPPFLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
 fi
 
+dnl Make version subfields for LXPANEL_CHECK_VERSION macro
+ac_version_subst_str=`echo $VERSION | awk -F '.' '/.*/ { printf "VERSION_MAJOR=%d VERSION_MINOR=%d VERSION_MICRO=%d", $1, $2, $3 }'`
+eval ${ac_version_subst_str}
+AC_SUBST(VERSION_MAJOR)
+AC_SUBST(VERSION_MINOR)
+AC_SUBST(VERSION_MICRO)
+
 dnl Fix invalid sysconfdir when --prefix=/usr
 if test `eval "echo $sysconfdir"` = /usr/etc
 then
@@ -391,6 +387,7 @@ AC_CONFIG_FILES([
     lxpanel.pc
     Makefile
     src/Makefile
+    src/panel.h
     plugins/Makefile
     po/Makefile.in
     data/Makefile
index 6404700..1ea43ec 100644 (file)
@@ -148,7 +148,6 @@ DATA = $(default_config_DATA) $(default_config_panel_DATA) \
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-ADDITIONAL_FLAGS = @ADDITIONAL_FLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
 ALL_PLUGINS_LIST = @ALL_PLUGINS_LIST@
 AMTAR = @AMTAR@
@@ -201,6 +200,8 @@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
 INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
 INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
 INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
+KEYBINDER_CFLAGS = @KEYBINDER_CFLAGS@
+KEYBINDER_LIBS = @KEYBINDER_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
@@ -211,7 +212,6 @@ LIBXML2_LIBS = @LIBXML2_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LXPANEL_MODULE = @LXPANEL_MODULE@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MENU_CACHE_CFLAGS = @MENU_CACHE_CFLAGS@
@@ -252,6 +252,9 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+VERSION_MAJOR = @VERSION_MAJOR@
+VERSION_MICRO = @VERSION_MICRO@
+VERSION_MINOR = @VERSION_MINOR@
 X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 XGETTEXT = @XGETTEXT@
index 50118a4..0eac29e 100644 (file)
                   </packing>
                 </child>
                 <child>
+                  <object class="GtkCheckButton" id="checkbutton_disable_taskbar_upscale">
+                    <property name="label" translatable="yes">Disable enlargement for small task icons</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">8</property>
+                  </packing>
+                </child>
+                <child>
                   <object class="GtkHBox" id="hbox2">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                   <packing>
                     <property name="expand">True</property>
                     <property name="fill">True</property>
-                    <property name="position">8</property>
+                    <property name="position">9</property>
                   </packing>
                 </child>
                 <child>
                   <packing>
                     <property name="expand">True</property>
                     <property name="fill">True</property>
-                    <property name="position">9</property>
+                    <property name="position">10</property>
                   </packing>
                 </child>
               </object>
index 60f51e3..0c5d6d3 100644 (file)
@@ -3,7 +3,7 @@
 <column type="GdkPixbuf"/>
 <column type="gchararray"/>
 <column type="gchararray"/>
-<column type="gpointer"/></columns></object><object class="GtkDialog" id="dlg"><property name="can_focus">False</property><property name="border_width">10</property><property name="title" translatable="yes">Application Launch and Task Bar</property><property name="window_position">center</property><property name="default_width">640</property><property name="default_height">440</property><property name="type_hint">dialog</property><child internal-child="vbox"><object class="GtkVBox" id="dialog-vbox"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">6</property><child><object class="GtkHBox" id="hbox_mode"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">12</property><child><object class="GtkLabel" id="label5"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes" comments="Launchtaskbar mode: launchbar, taskbar, or combined">&lt;b&gt;Mode:&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkComboBox" id="combobox_mode"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore_mode</property><child><object class="GtkCellRendererText" id="cellrenderertext1"/><attributes><attribute name="text">0</attribute></attributes></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkNotebook" id="notebook"><property name="visible">True</property><property name="can_focus">True</property><child><object class="GtkHBox" id="hbox1"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">12</property><child><object class="GtkVBox" id="vbox_defined"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkScrolledWindow" id="scroll1"><property name="visible">True</property><property name="can_focus">True</property><property name="hscrollbar_policy">automatic</property><property name="vscrollbar_policy">automatic</property><property name="shadow_type">etched-in</property><child><object class="GtkTreeView" id="defined_view"><property name="visible">True</property><property name="can_focus">True</property><property name="model">defined_store</property><property name="headers_clickable">False</property><property name="search_column">1</property><child><object class="GtkTreeViewColumn" id="defined_col"><property name="title" translatable="yes">Launchers</property><property name="expand">True</property></object></child></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkLabel" id="label_def_app_exec"><property name="visible">True</property><property name="can_focus">False</property><property name="ellipsize">end</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkVBox" id="vbox1"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">6</property><child><object class="GtkButton" id="button_add"><property name="label">gtk-add</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkButton" id="button_remove"><property name="label">gtk-remove</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkButton" id="button_up"><property name="label">gtk-go-up</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">2</property></packing></child><child><object class="GtkButton" id="button_down"><property name="label">gtk-go-down</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">3</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkVBox" id="vbox_menu"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkScrolledWindow" id="menu_view_window"><property name="visible">True</property><property name="can_focus">True</property><property name="hscrollbar_policy">automatic</property><property name="vscrollbar_policy">automatic</property><property name="shadow_type">etched-in</property><child><placeholder/></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkLabel" id="label_menu_app_exec"><property name="visible">True</property><property name="can_focus">False</property><property name="ellipsize">end</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object></child><child type="tab"><object class="GtkLabel" id="label1"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Launchbar&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="tab_fill">False</property></packing></child><child><object class="GtkVBox" id="vbox2"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkCheckButton" id="checkbutton_show_tooltips"><property name="label" translatable="yes">Show tooltips</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_icons_only"><property name="label" translatable="yes">Icons only</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_flat_buttons"><property name="label" translatable="yes">Flat buttons</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_show_all_desks"><property name="label" translatable="yes">Show windows from all desktops</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">3</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_same_monitor_only"><property name="label" translatable="yes">Only show windows on the same monitor as the task bar</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">4</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_mouse_wheel"><property name="label" translatable="yes">Use mouse wheel</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">5</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_urgency_hint"><property name="label" translatable="yes">Flash when there is any window requiring attention</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">6</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_grouped_tasks"><property name="label" translatable="yes">Combine multiple application windows into a single button</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">7</property></packing></child><child><object class="GtkHBox" id="hbox2"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkLabel" id="label3"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Maximum width of task button</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="padding">2</property><property name="position">0</property></packing></child><child><object class="GtkSpinButton" id="spinbutton_max_width"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment_max_width</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="padding">3</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">8</property></packing></child><child><object class="GtkHBox" id="hbox3"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkLabel" id="label4"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Spacing</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="padding">2</property><property name="position">0</property></packing></child><child><object class="GtkSpinButton" id="spinbutton_spacing"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment_spacing</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="padding">3</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">9</property></packing></child></object><packing><property name="position">1</property></packing></child><child type="tab"><object class="GtkLabel" id="label2"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Taskbar&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="position">1</property><property name="tab_fill">False</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child internal-child="action_area"><object class="GtkHButtonBox" id="dialog-action_area"><property name="visible">True</property><property name="can_focus">False</property><property name="layout_style">end</property><child><object class="GtkButton" id="close"><property name="label">gtk-close</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="pack_type">end</property><property name="position">2</property></packing></child></object></child><action-widgets><action-widget response="-7">close</action-widget></action-widgets></object><object class="GtkListStore" id="liststore_mode"><columns>
+<column type="gpointer"/></columns></object><object class="GtkDialog" id="dlg"><property name="can_focus">False</property><property name="border_width">10</property><property name="title" translatable="yes">Application Launch and Task Bar</property><property name="window_position">center</property><property name="default_width">640</property><property name="default_height">440</property><property name="type_hint">dialog</property><child internal-child="vbox"><object class="GtkVBox" id="dialog-vbox"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">6</property><child><object class="GtkHBox" id="hbox_mode"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">12</property><child><object class="GtkLabel" id="label5"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes" comments="Launchtaskbar mode: launchbar, taskbar, or combined">&lt;b&gt;Mode:&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkComboBox" id="combobox_mode"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore_mode</property><child><object class="GtkCellRendererText" id="cellrenderertext1"/><attributes><attribute name="text">0</attribute></attributes></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkNotebook" id="notebook"><property name="visible">True</property><property name="can_focus">True</property><child><object class="GtkHBox" id="hbox1"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">12</property><child><object class="GtkVBox" id="vbox_defined"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkScrolledWindow" id="scroll1"><property name="visible">True</property><property name="can_focus">True</property><property name="hscrollbar_policy">automatic</property><property name="vscrollbar_policy">automatic</property><property name="shadow_type">etched-in</property><child><object class="GtkTreeView" id="defined_view"><property name="visible">True</property><property name="can_focus">True</property><property name="model">defined_store</property><property name="headers_clickable">False</property><property name="search_column">1</property><child><object class="GtkTreeViewColumn" id="defined_col"><property name="title" translatable="yes">Launchers</property><property name="expand">True</property></object></child></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkLabel" id="label_def_app_exec"><property name="visible">True</property><property name="can_focus">False</property><property name="ellipsize">end</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkVBox" id="vbox1"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">6</property><child><object class="GtkButton" id="button_add"><property name="label">gtk-add</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkButton" id="button_remove"><property name="label">gtk-remove</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkButton" id="button_up"><property name="label">gtk-go-up</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">2</property></packing></child><child><object class="GtkButton" id="button_down"><property name="label">gtk-go-down</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">3</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkVBox" id="vbox_menu"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkScrolledWindow" id="menu_view_window"><property name="visible">True</property><property name="can_focus">True</property><property name="hscrollbar_policy">automatic</property><property name="vscrollbar_policy">automatic</property><property name="shadow_type">etched-in</property><child><placeholder/></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkLabel" id="label_menu_app_exec"><property name="visible">True</property><property name="can_focus">False</property><property name="ellipsize">end</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object></child><child type="tab"><object class="GtkLabel" id="label1"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Launchbar&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="tab_fill">False</property></packing></child><child><object class="GtkVBox" id="vbox2"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkCheckButton" id="checkbutton_show_tooltips"><property name="label" translatable="yes">Show tooltips</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_icons_only"><property name="label" translatable="yes">Icons only</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_flat_buttons"><property name="label" translatable="yes">Flat buttons</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_show_all_desks"><property name="label" translatable="yes">Show windows from all desktops</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">3</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_same_monitor_only"><property name="label" translatable="yes">Only show windows on the same monitor as the task bar</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">4</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_mouse_wheel"><property name="label" translatable="yes">Use mouse wheel</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">5</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_urgency_hint"><property name="label" translatable="yes">Flash when there is any window requiring attention</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">6</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_grouped_tasks"><property name="label" translatable="yes">Combine multiple application windows into a single button</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">7</property></packing></child><child><object class="GtkCheckButton" id="checkbutton_disable_taskbar_upscale"><property name="label" translatable="yes">Disable enlargement for small task icons</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">8</property></packing></child><child><object class="GtkHBox" id="hbox2"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkLabel" id="label3"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Maximum width of task button</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="padding">2</property><property name="position">0</property></packing></child><child><object class="GtkSpinButton" id="spinbutton_max_width"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment_max_width</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="padding">3</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">9</property></packing></child><child><object class="GtkHBox" id="hbox3"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkLabel" id="label4"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Spacing</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="padding">2</property><property name="position">0</property></packing></child><child><object class="GtkSpinButton" id="spinbutton_spacing"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment_spacing</property></object><packing><property name="expand">False</property><property name="fill">True</property><property name="padding">3</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">10</property></packing></child></object><packing><property name="position">1</property></packing></child><child type="tab"><object class="GtkLabel" id="label2"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Taskbar&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="position">1</property><property name="tab_fill">False</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child internal-child="action_area"><object class="GtkHButtonBox" id="dialog-action_area"><property name="visible">True</property><property name="can_focus">False</property><property name="layout_style">end</property><child><object class="GtkButton" id="close"><property name="label">gtk-close</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="pack_type">end</property><property name="position">2</property></packing></child></object></child><action-widgets><action-widget response="-7">close</action-widget></action-widgets></object><object class="GtkListStore" id="liststore_mode"><columns>
 <column type="gchararray"/></columns><data><row><col id="0" translatable="yes">Only Application Launch Bar</col></row><row><col id="0" translatable="yes">Only Task Bar (Window List)</col></row><row><col id="0" translatable="yes">Integrated Application Launch Bar and Task Bar</col></row></data></object><object class="GtkTreeStore" id="menu_store"><columns>
 <column type="GdkPixbuf"/>
 <column type="gchararray"/>
index 39f7299..fc956d3 100644 (file)
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkComboBoxEntry" id="name_combo">
+                                  <object class="GtkComboBox" id="name_combo">
                                     <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="has_entry">True</property>
+                                    <child internal-child="entry">
+                                      <object class="GtkEntry" id="combobox-entry">
+                                        <property name="can_focus">True</property>
+                                      </object>
+                                    </child>
                                   </object>
                                   <packing>
                                     <property name="left_attach">1</property>
index dfcd883..8d18249 100644 (file)
@@ -1,2 +1,2 @@
 <?xml version="1.0"?><interface><requires lib="gtk+" version="2.16"/>
-<object class="GtkDialog" id="network_status_dialog"><property name="border_width">5</property><property name="resizable">False</property><property name="window_position">center</property><property name="default_width">300</property><property name="type_hint">dialog</property><property name="has_separator">False</property><child internal-child="vbox"><object class="GtkVBox" id="dialog-vbox2"><property name="visible">True</property><property name="spacing">2</property><child><object class="GtkNotebook" id="notebook1"><property name="visible">True</property><property name="can_focus">True</property><property name="border_width">5</property><child><object class="GtkVBox" id="vbox1"><property name="visible">True</property><property name="border_width">12</property><property name="spacing">18</property><child><object class="GtkVBox" id="connection_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="label3"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Connection&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox6"><property name="visible">True</property><child><object class="GtkLabel" id="label43"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="connection_hbox"><property name="visible">True</property><property name="spacing">12</property><child><object class="GtkTable" id="connection_table"><property name="visible">True</property><property name="n_rows">2</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="label5"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Status:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="status_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label16"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">_Name:</property><property name="use_underline">True</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkComboBoxEntry" id="name_combo"><property name="visible">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options"></property><property name="y_options"></property></packing></child></object><packing><property name="position">0</property></packing></child><child><placeholder/></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">0</property></packing></child><child><object class="GtkVBox" id="activity_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="label4"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Activity&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox8"><property name="visible">True</property><child><object class="GtkLabel" id="label44"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkTable" id="table2"><property name="visible">True</property><property name="n_rows">2</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="received_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="sent_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label11"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Received:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label12"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Sent:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">1</property></packing></child><child><object class="GtkVBox" id="signal_strength_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="label48"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Signal Strength&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox14"><property name="visible">True</property><child><object class="GtkLabel" id="label49"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox15"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkProgressBar" id="signal_strength_bar"><property name="visible">True</property><property name="pulse_step">0.10000000149</property></object><packing><property name="position">0</property></packing></child><child><object class="GtkLabel" id="signal_strength_label"><property name="visible">True</property><property name="label" translatable="yes">0%</property></object><packing><property name="expand">False</property><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">2</property></packing></child></object></child><child type="tab"><object class="GtkLabel" id="label1"><property name="visible">True</property><property name="label" translatable="yes">General</property></object><packing><property name="tab_fill">False</property></packing></child><child><object class="GtkVBox" id="vbox2"><property name="visible">True</property><property name="border_width">12</property><property name="spacing">18</property><child><object class="GtkVBox" id="inet4_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="label25"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Internet Protocol (IPv4)&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox11"><property name="visible">True</property><child><object class="GtkLabel" id="label45"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkTable" id="inet4_table"><property name="visible">True</property><property name="n_rows">4</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="inet4_addr_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Address:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_dest_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Destination:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_bcast_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Broadcast:</property></object><packing><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_mask_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Subnet Mask:</property></object><packing><property name="top_attach">3</property><property name="bottom_attach">4</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_addr_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_dest_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_bcast_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_mask_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">3</property><property name="bottom_attach">4</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">0</property></packing></child><child><object class="GtkVBox" id="inet6_frame"><property name="spacing">6</property><child><object class="GtkLabel" id="label26"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Internet Protocol (IPv6)&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox12"><property name="visible">True</property><child><object class="GtkLabel" id="label46"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkTable" id="table5"><property name="visible">True</property><property name="n_rows">2</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="label39"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Address:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label40"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Scope:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet6_addr_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet6_scope_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">1</property></packing></child><child><object class="GtkVBox" id="dev_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="dev_label"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Network Device&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox13"><property name="visible">True</property><child><object class="GtkLabel" id="label47"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkTable" id="table6"><property name="visible">True</property><property name="n_rows">2</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="dev_addr_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Address:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="dev_addr_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="dev_type_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="dev_type_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Type:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">2</property></packing></child></object><packing><property name="position">1</property></packing></child><child type="tab"><object class="GtkLabel" id="label2"><property name="visible">True</property><property name="label" translatable="yes">Support</property></object><packing><property name="position">1</property><property name="tab_fill">False</property></packing></child></object><packing><property name="position">1</property></packing></child><child internal-child="action_area"><object class="GtkHButtonBox" id="dialog-action_area2"><property name="visible">True</property><property name="layout_style">end</property><child><object class="GtkButton" id="helpbutton1"><property name="label">gtk-help</property><property name="can_focus">True</property><property name="can_default">True</property><property name="has_default">True</property><property name="receives_default">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkButton" id="configure_button"><property name="visible">True</property><property name="can_focus">True</property><property name="can_default">True</property><property name="receives_default">False</property><child><object class="GtkAlignment" id="alignment2"><property name="visible">True</property><property name="xscale">0</property><property name="yscale">0</property><child><object class="GtkHBox" id="hbox5"><property name="visible">True</property><property name="spacing">2</property><child><object class="GtkImage" id="image2"><property name="visible">True</property><property name="stock">gtk-preferences</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkLabel" id="label42"><property name="visible">True</property><property name="label" translatable="yes">Con_figure</property><property name="use_underline">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object></child></object></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child><child><object class="GtkButton" id="close_button"><property name="label">gtk-close</property><property name="visible">True</property><property name="can_focus">True</property><property name="can_default">True</property><property name="has_default">True</property><property name="receives_default">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">2</property></packing></child></object><packing><property name="expand">False</property><property name="pack_type">end</property><property name="position">0</property></packing></child></object></child><action-widgets><action-widget response="-11">helpbutton1</action-widget><action-widget response="0">configure_button</action-widget><action-widget response="-7">close_button</action-widget></action-widgets></object></interface>
+<object class="GtkDialog" id="network_status_dialog"><property name="border_width">5</property><property name="resizable">False</property><property name="window_position">center</property><property name="default_width">300</property><property name="type_hint">dialog</property><property name="has_separator">False</property><child internal-child="vbox"><object class="GtkVBox" id="dialog-vbox2"><property name="visible">True</property><property name="spacing">2</property><child><object class="GtkNotebook" id="notebook1"><property name="visible">True</property><property name="can_focus">True</property><property name="border_width">5</property><child><object class="GtkVBox" id="vbox1"><property name="visible">True</property><property name="border_width">12</property><property name="spacing">18</property><child><object class="GtkVBox" id="connection_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="label3"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Connection&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox6"><property name="visible">True</property><child><object class="GtkLabel" id="label43"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="connection_hbox"><property name="visible">True</property><property name="spacing">12</property><child><object class="GtkTable" id="connection_table"><property name="visible">True</property><property name="n_rows">2</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="label5"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Status:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="status_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label16"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">_Name:</property><property name="use_underline">True</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkComboBox" id="name_combo"><property name="visible">True</property><property name="can_focus">False</property><property name="has_entry">True</property><child internal-child="entry"><object class="GtkEntry" id="combobox-entry"><property name="can_focus">True</property></object></child></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options"></property><property name="y_options"></property></packing></child></object><packing><property name="position">0</property></packing></child><child><placeholder/></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">0</property></packing></child><child><object class="GtkVBox" id="activity_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="label4"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Activity&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox8"><property name="visible">True</property><child><object class="GtkLabel" id="label44"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkTable" id="table2"><property name="visible">True</property><property name="n_rows">2</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="received_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="sent_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label11"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Received:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label12"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Sent:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">1</property></packing></child><child><object class="GtkVBox" id="signal_strength_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="label48"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Signal Strength&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox14"><property name="visible">True</property><child><object class="GtkLabel" id="label49"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox15"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkProgressBar" id="signal_strength_bar"><property name="visible">True</property><property name="pulse_step">0.10000000149</property></object><packing><property name="position">0</property></packing></child><child><object class="GtkLabel" id="signal_strength_label"><property name="visible">True</property><property name="label" translatable="yes">0%</property></object><packing><property name="expand">False</property><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">2</property></packing></child></object></child><child type="tab"><object class="GtkLabel" id="label1"><property name="visible">True</property><property name="label" translatable="yes">General</property></object><packing><property name="tab_fill">False</property></packing></child><child><object class="GtkVBox" id="vbox2"><property name="visible">True</property><property name="border_width">12</property><property name="spacing">18</property><child><object class="GtkVBox" id="inet4_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="label25"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Internet Protocol (IPv4)&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox11"><property name="visible">True</property><child><object class="GtkLabel" id="label45"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkTable" id="inet4_table"><property name="visible">True</property><property name="n_rows">4</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="inet4_addr_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Address:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_dest_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Destination:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_bcast_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Broadcast:</property></object><packing><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_mask_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Subnet Mask:</property></object><packing><property name="top_attach">3</property><property name="bottom_attach">4</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_addr_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_dest_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_bcast_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet4_mask_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">3</property><property name="bottom_attach">4</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">0</property></packing></child><child><object class="GtkVBox" id="inet6_frame"><property name="spacing">6</property><child><object class="GtkLabel" id="label26"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Internet Protocol (IPv6)&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox12"><property name="visible">True</property><child><object class="GtkLabel" id="label46"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkTable" id="table5"><property name="visible">True</property><property name="n_rows">2</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="label39"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Address:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label40"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Scope:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet6_addr_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="inet6_scope_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">1</property></packing></child><child><object class="GtkVBox" id="dev_frame"><property name="visible">True</property><property name="spacing">6</property><child><object class="GtkLabel" id="dev_label"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">&lt;b&gt;Network Device&lt;/b&gt;</property><property name="use_markup">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox13"><property name="visible">True</property><child><object class="GtkLabel" id="label47"><property name="visible">True</property><property name="label">    </property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkTable" id="table6"><property name="visible">True</property><property name="n_rows">2</property><property name="n_columns">2</property><property name="column_spacing">12</property><property name="row_spacing">6</property><child><object class="GtkLabel" id="dev_addr_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Address:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="dev_addr_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="dev_type_label"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="selectable">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="dev_type_title"><property name="visible">True</property><property name="xalign">0</property><property name="label" translatable="yes">Type:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="position">2</property></packing></child></object><packing><property name="position">1</property></packing></child><child type="tab"><object class="GtkLabel" id="label2"><property name="visible">True</property><property name="label" translatable="yes">Support</property></object><packing><property name="position">1</property><property name="tab_fill">False</property></packing></child></object><packing><property name="position">1</property></packing></child><child internal-child="action_area"><object class="GtkHButtonBox" id="dialog-action_area2"><property name="visible">True</property><property name="layout_style">end</property><child><object class="GtkButton" id="helpbutton1"><property name="label">gtk-help</property><property name="can_focus">True</property><property name="can_default">True</property><property name="has_default">True</property><property name="receives_default">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkButton" id="configure_button"><property name="visible">True</property><property name="can_focus">True</property><property name="can_default">True</property><property name="receives_default">False</property><child><object class="GtkAlignment" id="alignment2"><property name="visible">True</property><property name="xscale">0</property><property name="yscale">0</property><child><object class="GtkHBox" id="hbox5"><property name="visible">True</property><property name="spacing">2</property><child><object class="GtkImage" id="image2"><property name="visible">True</property><property name="stock">gtk-preferences</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkLabel" id="label42"><property name="visible">True</property><property name="label" translatable="yes">Con_figure</property><property name="use_underline">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object></child></object></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child><child><object class="GtkButton" id="close_button"><property name="label">gtk-close</property><property name="visible">True</property><property name="can_focus">True</property><property name="can_default">True</property><property name="has_default">True</property><property name="receives_default">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">2</property></packing></child></object><packing><property name="expand">False</property><property name="pack_type">end</property><property name="position">0</property></packing></child></object></child><action-widgets><action-widget response="-11">helpbutton1</action-widget><action-widget response="0">configure_button</action-widget><action-widget response="-7">close_button</action-widget></action-widgets></object></interface>
index 5b856ec..e59dcce 100644 (file)
@@ -3,7 +3,6 @@
   <requires lib="gtk+" version="2.16"/>
   <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkAdjustment" id="adjustment1">
-    <property name="lower">0</property>
     <property name="upper">10</property>
     <property name="value">2</property>
     <property name="step_increment">1</property>
     <property name="value">10</property>
     <property name="step_increment">1</property>
   </object>
-  <object class="GtkAdjustment" id="adjustment7">
-    <property name="lower">1</property>
-    <property name="step_increment">1</property>
-    <property name="page_increment">1</property>
-  </object>
   <object class="GtkListStore" id="liststore1">
     <columns>
       <!-- column-name item -->
       </row>
     </data>
   </object>
+  <object class="GtkListStore" id="liststore4">
+    <columns>
+      <!-- column-name mon -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">All</col>
+      </row>
+      <row>
+        <col id="0">1</col>
+      </row>
+    </data>
+  </object>
   <object class="GtkDialog" id="panel_pref">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
                                         <property name="yalign">0.10000000149011612</property>
-                                        <property name="xscale">0.80000001192092896</property>
+                                        <property name="xscale">0.85</property>
                                         <property name="yscale">0</property>
                                         <property name="left_padding">12</property>
                                         <property name="right_padding">12</property>
                                         <child>
-                                          <object class="GtkSpinButton" id="monitor">
+                                          <object class="GtkComboBox" id="monitor">
                                             <property name="visible">True</property>
-                                            <property name="can_focus">True</property>
-                                            <property name="invisible_char">•</property>
-                                            <property name="width_chars">6</property>
-                                            <property name="invisible_char_set">True</property>
-                                            <property name="primary_icon_activatable">False</property>
-                                            <property name="secondary_icon_activatable">False</property>
-                                            <property name="primary_icon_sensitive">True</property>
-                                            <property name="secondary_icon_sensitive">True</property>
-                                            <property name="adjustment">adjustment7</property>
-                                            <property name="climb_rate">1</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="model">liststore4</property>
                                           </object>
                                         </child>
                                       </object>
                                 <child>
                                   <object class="GtkComboBox" id="fm_combobox">
                                     <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
+                                    <property name="can_focus">False</property>
                                   </object>
                                   <packing>
                                     <property name="expand">True</property>
index da88abe..e8ff67f 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?><interface><requires lib="gtk+" version="2.16"/>
-<object class="GtkAdjustment" id="adjustment1"><property name="lower">0</property><property name="upper">10</property><property name="value">2</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment2"><property name="upper">100</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment3"><property name="upper">100</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment4"><property name="upper">32767</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment5"><property name="upper">32767</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment6"><property name="lower">2</property><property name="upper">20</property><property name="value">10</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment7"><property name="lower">1</property><property name="step_increment">1</property><property name="page_increment">1</property></object><object class="GtkListStore" id="liststore1"><columns>
+<object class="GtkAdjustment" id="adjustment1"><property name="upper">10</property><property name="value">2</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment2"><property name="upper">100</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment3"><property name="upper">100</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment4"><property name="upper">32767</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment5"><property name="upper">32767</property><property name="step_increment">1</property></object><object class="GtkAdjustment" id="adjustment6"><property name="lower">2</property><property name="upper">20</property><property name="value">10</property><property name="step_increment">1</property></object><object class="GtkListStore" id="liststore1"><columns>
 <column type="gchararray"/></columns><data><row><col id="0" translatable="yes">Dynamic</col></row><row><col id="0" translatable="yes">Pixels</col></row><row><col id="0" translatable="yes">% Percent</col></row></data></object><object class="GtkListStore" id="liststore2"><columns>
 <column type="gchararray"/></columns><data><row><col id="0" translatable="yes">Pixels</col></row></data></object><object class="GtkListStore" id="liststore3"><columns>
-<column type="gchararray"/></columns><data><row><col id="0" translatable="yes">None</col></row><row><col id="0" translatable="yes">Err</col></row><row><col id="0" translatable="yes">Warn</col></row><row><col id="0" translatable="yes">Info</col></row><row><col id="0" translatable="yes">All</col></row></data></object><object class="GtkDialog" id="panel_pref"><property name="visible">True</property><property name="can_focus">False</property><property name="title" translatable="yes">Panel Preferences</property><property name="type_hint">dialog</property><child internal-child="vbox"><object class="GtkVBox" id="dialog-vbox1"><property name="visible">True</property><property name="can_focus">False</property><child internal-child="action_area"><object class="GtkHButtonBox" id="dialog-action_area1"><property name="visible">True</property><property name="can_focus">False</property><property name="layout_style">end</property><child><object class="GtkButton" id="close_btn"><property name="label">gtk-close</property><property name="visible">True</property><property name="can_focus">True</property><property name="can_default">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="pack_type">end</property><property name="position">0</property></packing></child><child><object class="GtkNotebook" id="notebook"><property name="visible">True</property><property name="can_focus">True</property><child><object class="GtkVBox" id="vbox7"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkFrame" id="frame1"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment1"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkHBox" id="hbox6"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkFrame" id="edge_frame"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment11"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0.10000000149011612</property><property name="yscale">0</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox9"><property name="visible">True</property><property name="can_focus">False</property><property name="homogeneous">True</property><child><object class="GtkRadioButton" id="edge_bottom"><property name="label" translatable="yes">Bottom</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="active">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkRadioButton" id="edge_top"><property name="label" translatable="yes">Top</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">edge_bottom</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkRadioButton" id="edge_left"><property name="label" translatable="yes">Left</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">edge_bottom</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child><child><object class="GtkRadioButton" id="edge_right"><property name="label" translatable="yes">Right</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">edge_bottom</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">3</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label20"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Edge:</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="alignment_frame"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment12"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0.10000000149011612</property><property name="yscale">0</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox12"><property name="visible">True</property><property name="can_focus">False</property><property name="homogeneous">True</property><child><object class="GtkRadioButton" id="alignment_left"><property name="label" translatable="yes">Left</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="active">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkRadioButton" id="alignment_center"><property name="label" translatable="yes">Center</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">alignment_left</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkRadioButton" id="alignment_right"><property name="label" translatable="yes">Right</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">alignment_left</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label7"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Alignment:</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkVBox" id="vbox11"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkFrame" id="margin_frame"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment13"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0.10000000149011612</property><property name="xscale">0.80000001192092896</property><property name="yscale">0</property><property name="left_padding">12</property><property name="right_padding">12</property><child><object class="GtkSpinButton" id="margin"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="width_chars">6</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment4</property><property name="climb_rate">1</property></object></child></object></child><child type="label"><object class="GtkLabel" id="label9"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Margin:</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="monitor_frame"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment14"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0.10000000149011612</property><property name="xscale">0.80000001192092896</property><property name="yscale">0</property><property name="left_padding">12</property><property name="right_padding">12</property><child><object class="GtkSpinButton" id="monitor"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="width_chars">6</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment7</property><property name="climb_rate">1</property></object></child></object></child><child type="label"><object class="GtkLabel" id="label8"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Monitor:</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label5"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Position&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="frame2"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment2"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="xscale">0</property><property name="left_padding">12</property><child><object class="GtkTable" id="table2"><property name="visible">True</property><property name="can_focus">False</property><property name="n_rows">3</property><property name="n_columns">3</property><property name="column_spacing">4</property><property name="row_spacing">2</property><child><object class="GtkLabel" id="width_label"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Width:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="height_label"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Height:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkComboBox" id="height_unit"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore2</property><child><object class="GtkCellRendererText" id="cellrenderertext2"/><attributes><attribute name="text">0</attribute></attributes></child></object><packing><property name="left_attach">2</property><property name="right_attach">3</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkSpinButton" id="width"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment3</property><property name="climb_rate">1</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkSpinButton" id="height"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment2</property><property name="climb_rate">1</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkComboBox" id="width_unit"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore1</property><child><object class="GtkCellRendererText" id="cellrenderertext1"/><attributes><attribute name="text">0</attribute></attributes></child></object><packing><property name="left_attach">2</property><property name="right_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label11"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Icon size:</property><property name="use_markup">True</property></object><packing><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="y_options"></property></packing></child><child><object class="GtkSpinButton" id="icon_size"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment5</property><property name="climb_rate">1</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options">GTK_SHRINK</property></packing></child><child><object class="GtkLabel" id="label14"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Pixels</property></object><packing><property name="left_attach">2</property><property name="right_attach">3</property><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label6"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Size&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object></child><child type="tab"><object class="GtkLabel" id="label1"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Geometry</property></object><packing><property name="tab_fill">False</property></packing></child><child><object class="GtkVBox" id="vbox1"><property name="visible">True</property><property name="can_focus">False</property><property name="border_width">6</property><property name="spacing">4</property><child><object class="GtkFrame" id="frame4"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment4"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox4"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">2</property><child><object class="GtkRadioButton" id="bg_none"><property name="label" translatable="yes">System theme</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="active">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox2"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">10</property><child><object class="GtkRadioButton" id="bg_transparency"><property name="label" translatable="yes">Solid color (with opacity)</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property><property name="group">bg_none</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkColorButton" id="tint_clr"><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_action_appearance">False</property><property name="use_alpha">True</property><property name="color">#000000000000</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child><child><object class="GtkHBox" id="hbox4"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">40</property><child><object class="GtkRadioButton" id="bg_image"><property name="label" translatable="yes">Image</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property><property name="group">bg_none</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkFileChooserButton" id="img_file"><property name="visible">True</property><property name="can_focus">False</property><property name="title" translatable="yes">Select an image file</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">2</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label18"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Background&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="frame5"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment5"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox10"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">2</property><child><object class="GtkHBox" id="hbox1"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">10</property><child><object class="GtkCheckButton" id="use_font_clr"><property name="label" translatable="yes">Custom color</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkColorButton" id="font_clr"><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_action_appearance">False</property><property name="color">#000000000000</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox3"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">10</property><child><object class="GtkCheckButton" id="use_font_size"><property name="label" translatable="yes">Size</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkSpinButton" id="font_size"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">●</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment6</property><property name="climb_rate">1</property><property name="numeric">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label19"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Font&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child><child type="tab"><object class="GtkLabel" id="label10"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Appearance</property></object><packing><property name="position">1</property><property name="tab_fill">False</property></packing></child><child><object class="GtkHBox" id="hbox5"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">2</property><child><object class="GtkVBox" id="vbox5"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkScrolledWindow" id="scrolledwindow1"><property name="visible">True</property><property name="can_focus">True</property><property name="hscrollbar_policy">automatic</property><property name="vscrollbar_policy">automatic</property><property name="shadow_type">in</property><child><object class="GtkTreeView" id="plugin_list"><property name="visible">True</property><property name="can_focus">True</property><property name="rules_hint">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkLabel" id="plugin_desc"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="wrap">True</property><property name="selectable">True</property><property name="ellipsize">end</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkVBox" id="vbox6"><property name="visible">True</property><property name="can_focus">False</property><property name="border_width">2</property><property name="spacing">2</property><child><object class="GtkButton" id="add_btn"><property name="label">gtk-add</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkButton" id="remove_btn"><property name="label">gtk-remove</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child><child><object class="GtkButton" id="edit_btn"><property name="label">gtk-preferences</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">2</property></packing></child><child><object class="GtkButton" id="moveup_btn"><property name="label">gtk-go-up</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">3</property></packing></child><child><object class="GtkButton" id="movedown_btn"><property name="label">gtk-go-down</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">4</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="position">2</property></packing></child><child type="tab"><object class="GtkLabel" id="label3"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Panel Applets</property></object><packing><property name="position">2</property><property name="tab_fill">False</property></packing></child><child><object class="GtkVBox" id="vbox3"><property name="visible">True</property><property name="can_focus">False</property><property name="border_width">6</property><property name="spacing">4</property><child><object class="GtkFrame" id="frame6"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment6"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkTable" id="table3"><property name="visible">True</property><property name="can_focus">False</property><property name="border_width">2</property><property name="n_rows">3</property><property name="n_columns">2</property><property name="column_spacing">4</property><property name="row_spacing">2</property><child><object class="GtkEntry" id="logout"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">●</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="y_options"></property></packing></child><child><object class="GtkEntry" id="term"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">●</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="logout_label"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Logout Command:</property></object><packing><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label24"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Terminal Emulator:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label23"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">File Manager:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkVBox" id="vbox13"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkEntry" id="file_manager"><property name="can_focus">True</property><property name="invisible_char">●</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkComboBox" id="fm_combobox"><property name="visible">True</property><property name="can_focus">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="y_options"></property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label22"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Set Preferred Applications&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="frame3"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment3"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox2"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkCheckButton" id="as_dock"><property name="label" translatable="yes">Make window managers treat the panel as dock</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkCheckButton" id="reserve_space"><property name="label" translatable="yes">Reserve space, and not covered by maximized windows</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label15"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Properties&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkFrame" id="frame7"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment7"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkAlignment" id="alignment8"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkVBox" id="vbox8"><property name="visible">True</property><property name="can_focus">False</property><property name="homogeneous">True</property><child><object class="GtkCheckButton" id="autohide"><property name="label" translatable="yes">Minimize panel when not in use</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox8"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkLabel" id="label12"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Size when minimized</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkSpinButton" id="height_when_minimized"><property name="visible">True</property><property name="can_focus">True</property><property name="max_length">2</property><property name="invisible_char">•</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment1</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkLabel" id="label2"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0.10000000149011612</property><property name="label" translatable="yes">pixels</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label13"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Automatic hiding&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">2</property></packing></child><child><object class="GtkFrame" id="frame8"><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment9"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkAlignment" id="alignment10"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0</property><property name="yscale">0</property><child><object class="GtkHBox" id="hbox7"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkLabel" id="label17"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Log level</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkComboBox" id="log_level"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore3</property><property name="active">2</property><child><object class="GtkCellRendererText" id="cellrenderertext3"/><attributes><attribute name="text">0</attribute></attributes></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label16"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Log level&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">3</property></packing></child></object><packing><property name="position">3</property></packing></child><child type="tab"><object class="GtkLabel" id="label4"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Advanced</property></object><packing><property name="position">3</property><property name="tab_fill">False</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object></child><action-widgets><action-widget response="-7">close_btn</action-widget></action-widgets></object></interface>
+<column type="gchararray"/></columns><data><row><col id="0" translatable="yes">None</col></row><row><col id="0" translatable="yes">Err</col></row><row><col id="0" translatable="yes">Warn</col></row><row><col id="0" translatable="yes">Info</col></row><row><col id="0" translatable="yes">All</col></row></data></object><object class="GtkListStore" id="liststore4"><columns>
+<column type="gchararray"/></columns><data><row><col id="0" translatable="yes">All</col></row><row><col id="0">1</col></row></data></object><object class="GtkDialog" id="panel_pref"><property name="visible">True</property><property name="can_focus">False</property><property name="title" translatable="yes">Panel Preferences</property><property name="type_hint">dialog</property><child internal-child="vbox"><object class="GtkVBox" id="dialog-vbox1"><property name="visible">True</property><property name="can_focus">False</property><child internal-child="action_area"><object class="GtkHButtonBox" id="dialog-action_area1"><property name="visible">True</property><property name="can_focus">False</property><property name="layout_style">end</property><child><object class="GtkButton" id="close_btn"><property name="label">gtk-close</property><property name="visible">True</property><property name="can_focus">True</property><property name="can_default">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="pack_type">end</property><property name="position">0</property></packing></child><child><object class="GtkNotebook" id="notebook"><property name="visible">True</property><property name="can_focus">True</property><child><object class="GtkVBox" id="vbox7"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkFrame" id="frame1"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment1"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkHBox" id="hbox6"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkFrame" id="edge_frame"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment11"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0.10000000149011612</property><property name="yscale">0</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox9"><property name="visible">True</property><property name="can_focus">False</property><property name="homogeneous">True</property><child><object class="GtkRadioButton" id="edge_bottom"><property name="label" translatable="yes">Bottom</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="active">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkRadioButton" id="edge_top"><property name="label" translatable="yes">Top</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">edge_bottom</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkRadioButton" id="edge_left"><property name="label" translatable="yes">Left</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">edge_bottom</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child><child><object class="GtkRadioButton" id="edge_right"><property name="label" translatable="yes">Right</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">edge_bottom</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">3</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label20"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Edge:</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="alignment_frame"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment12"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0.10000000149011612</property><property name="yscale">0</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox12"><property name="visible">True</property><property name="can_focus">False</property><property name="homogeneous">True</property><child><object class="GtkRadioButton" id="alignment_left"><property name="label" translatable="yes">Left</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="active">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkRadioButton" id="alignment_center"><property name="label" translatable="yes">Center</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">alignment_left</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkRadioButton" id="alignment_right"><property name="label" translatable="yes">Right</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property><property name="group">alignment_left</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label7"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Alignment:</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkVBox" id="vbox11"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkFrame" id="margin_frame"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment13"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0.10000000149011612</property><property name="xscale">0.80000001192092896</property><property name="yscale">0</property><property name="left_padding">12</property><property name="right_padding">12</property><child><object class="GtkSpinButton" id="margin"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="width_chars">6</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment4</property><property name="climb_rate">1</property></object></child></object></child><child type="label"><object class="GtkLabel" id="label9"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Margin:</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="monitor_frame"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment14"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0.10000000149011612</property><property name="xscale">0.85</property><property name="yscale">0</property><property name="left_padding">12</property><property name="right_padding">12</property><child><object class="GtkComboBox" id="monitor"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore4</property></object></child></object></child><child type="label"><object class="GtkLabel" id="label8"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Monitor:</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label5"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Position&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="frame2"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment2"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="xscale">0</property><property name="left_padding">12</property><child><object class="GtkTable" id="table2"><property name="visible">True</property><property name="can_focus">False</property><property name="n_rows">3</property><property name="n_columns">3</property><property name="column_spacing">4</property><property name="row_spacing">2</property><child><object class="GtkLabel" id="width_label"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Width:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="height_label"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Height:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkComboBox" id="height_unit"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore2</property><child><object class="GtkCellRendererText" id="cellrenderertext2"/><attributes><attribute name="text">0</attribute></attributes></child></object><packing><property name="left_attach">2</property><property name="right_attach">3</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkSpinButton" id="width"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment3</property><property name="climb_rate">1</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkSpinButton" id="height"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment2</property><property name="climb_rate">1</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkComboBox" id="width_unit"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore1</property><child><object class="GtkCellRendererText" id="cellrenderertext1"/><attributes><attribute name="text">0</attribute></attributes></child></object><packing><property name="left_attach">2</property><property name="right_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label11"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Icon size:</property><property name="use_markup">True</property></object><packing><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="y_options"></property></packing></child><child><object class="GtkSpinButton" id="icon_size"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">•</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment5</property><property name="climb_rate">1</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options">GTK_SHRINK</property></packing></child><child><object class="GtkLabel" id="label14"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Pixels</property></object><packing><property name="left_attach">2</property><property name="right_attach">3</property><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label6"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Size&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object></child><child type="tab"><object class="GtkLabel" id="label1"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Geometry</property></object><packing><property name="tab_fill">False</property></packing></child><child><object class="GtkVBox" id="vbox1"><property name="visible">True</property><property name="can_focus">False</property><property name="border_width">6</property><property name="spacing">4</property><child><object class="GtkFrame" id="frame4"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment4"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox4"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">2</property><child><object class="GtkRadioButton" id="bg_none"><property name="label" translatable="yes">System theme</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="active">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox2"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">10</property><child><object class="GtkRadioButton" id="bg_transparency"><property name="label" translatable="yes">Solid color (with opacity)</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property><property name="group">bg_none</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkColorButton" id="tint_clr"><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_action_appearance">False</property><property name="use_alpha">True</property><property name="color">#000000000000</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child><child><object class="GtkHBox" id="hbox4"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">40</property><child><object class="GtkRadioButton" id="bg_image"><property name="label" translatable="yes">Image</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property><property name="group">bg_none</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkFileChooserButton" id="img_file"><property name="visible">True</property><property name="can_focus">False</property><property name="title" translatable="yes">Select an image file</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">2</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label18"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Background&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="frame5"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment5"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox10"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">2</property><child><object class="GtkHBox" id="hbox1"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">10</property><child><object class="GtkCheckButton" id="use_font_clr"><property name="label" translatable="yes">Custom color</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkColorButton" id="font_clr"><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">True</property><property name="use_action_appearance">False</property><property name="color">#000000000000</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox3"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">10</property><child><object class="GtkCheckButton" id="use_font_size"><property name="label" translatable="yes">Size</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkSpinButton" id="font_size"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">●</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment6</property><property name="climb_rate">1</property><property name="numeric">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label19"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Font&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="position">1</property></packing></child><child type="tab"><object class="GtkLabel" id="label10"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Appearance</property></object><packing><property name="position">1</property><property name="tab_fill">False</property></packing></child><child><object class="GtkHBox" id="hbox5"><property name="visible">True</property><property name="can_focus">False</property><property name="spacing">2</property><child><object class="GtkVBox" id="vbox5"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkScrolledWindow" id="scrolledwindow1"><property name="visible">True</property><property name="can_focus">True</property><property name="hscrollbar_policy">automatic</property><property name="vscrollbar_policy">automatic</property><property name="shadow_type">in</property><child><object class="GtkTreeView" id="plugin_list"><property name="visible">True</property><property name="can_focus">True</property><property name="rules_hint">True</property></object></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkLabel" id="plugin_desc"><property name="visible">True</property><property name="can_focus">True</property><property name="xalign">0</property><property name="wrap">True</property><property name="selectable">True</property><property name="ellipsize">end</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkVBox" id="vbox6"><property name="visible">True</property><property name="can_focus">False</property><property name="border_width">2</property><property name="spacing">2</property><child><object class="GtkButton" id="add_btn"><property name="label">gtk-add</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkButton" id="remove_btn"><property name="label">gtk-remove</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child><child><object class="GtkButton" id="edit_btn"><property name="label">gtk-preferences</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">2</property></packing></child><child><object class="GtkButton" id="moveup_btn"><property name="label">gtk-go-up</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">3</property></packing></child><child><object class="GtkButton" id="movedown_btn"><property name="label">gtk-go-down</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_stock">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">4</property></packing></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="position">2</property></packing></child><child type="tab"><object class="GtkLabel" id="label3"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Panel Applets</property></object><packing><property name="position">2</property><property name="tab_fill">False</property></packing></child><child><object class="GtkVBox" id="vbox3"><property name="visible">True</property><property name="can_focus">False</property><property name="border_width">6</property><property name="spacing">4</property><child><object class="GtkFrame" id="frame6"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment6"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkTable" id="table3"><property name="visible">True</property><property name="can_focus">False</property><property name="border_width">2</property><property name="n_rows">3</property><property name="n_columns">2</property><property name="column_spacing">4</property><property name="row_spacing">2</property><child><object class="GtkEntry" id="logout"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">●</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="y_options"></property></packing></child><child><object class="GtkEntry" id="term"><property name="visible">True</property><property name="can_focus">True</property><property name="invisible_char">●</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="logout_label"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Logout Command:</property></object><packing><property name="top_attach">2</property><property name="bottom_attach">3</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label24"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Terminal Emulator:</property></object><packing><property name="top_attach">1</property><property name="bottom_attach">2</property><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkLabel" id="label23"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">File Manager:</property></object><packing><property name="x_options">GTK_FILL</property><property name="y_options"></property></packing></child><child><object class="GtkVBox" id="vbox13"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkEntry" id="file_manager"><property name="can_focus">True</property><property name="invisible_char">●</property><property name="invisible_char_set">True</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkComboBox" id="fm_combobox"><property name="visible">True</property><property name="can_focus">False</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object><packing><property name="left_attach">1</property><property name="right_attach">2</property><property name="y_options"></property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label22"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Set Preferred Applications&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkFrame" id="frame3"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment3"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkVBox" id="vbox2"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkCheckButton" id="as_dock"><property name="label" translatable="yes">Make window managers treat the panel as dock</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkCheckButton" id="reserve_space"><property name="label" translatable="yes">Reserve space, and not covered by maximized windows</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="use_underline">True</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label15"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Properties&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkFrame" id="frame7"><property name="visible">True</property><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment7"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkAlignment" id="alignment8"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkVBox" id="vbox8"><property name="visible">True</property><property name="can_focus">False</property><property name="homogeneous">True</property><child><object class="GtkCheckButton" id="autohide"><property name="label" translatable="yes">Minimize panel when not in use</property><property name="visible">True</property><property name="can_focus">True</property><property name="receives_default">False</property><property name="use_action_appearance">False</property><property name="draw_indicator">True</property></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">0</property></packing></child><child><object class="GtkHBox" id="hbox8"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkLabel" id="label12"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Size when minimized</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkSpinButton" id="height_when_minimized"><property name="visible">True</property><property name="can_focus">True</property><property name="max_length">2</property><property name="invisible_char">•</property><property name="primary_icon_activatable">False</property><property name="secondary_icon_activatable">False</property><property name="primary_icon_sensitive">True</property><property name="secondary_icon_sensitive">True</property><property name="adjustment">adjustment1</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child><child><object class="GtkLabel" id="label2"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0.10000000149011612</property><property name="label" translatable="yes">pixels</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object><packing><property name="expand">False</property><property name="fill">False</property><property name="position">1</property></packing></child></object></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label13"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Automatic hiding&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">2</property></packing></child><child><object class="GtkFrame" id="frame8"><property name="can_focus">False</property><property name="label_xalign">0</property><property name="shadow_type">none</property><child><object class="GtkAlignment" id="alignment9"><property name="visible">True</property><property name="can_focus">False</property><property name="left_padding">12</property><child><object class="GtkAlignment" id="alignment10"><property name="visible">True</property><property name="can_focus">False</property><property name="yalign">0</property><property name="yscale">0</property><child><object class="GtkHBox" id="hbox7"><property name="visible">True</property><property name="can_focus">False</property><child><object class="GtkLabel" id="label17"><property name="visible">True</property><property name="can_focus">False</property><property name="xalign">0</property><property name="label" translatable="yes">Log level</property></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">0</property></packing></child><child><object class="GtkComboBox" id="log_level"><property name="visible">True</property><property name="can_focus">False</property><property name="model">liststore3</property><property name="active">2</property><child><object class="GtkCellRendererText" id="cellrenderertext3"/><attributes><attribute name="text">0</attribute></attributes></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">1</property></packing></child></object></child></object></child></object></child><child type="label"><object class="GtkLabel" id="label16"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">&lt;b&gt;Log level&lt;/b&gt;</property><property name="use_markup">True</property></object></child></object><packing><property name="expand">False</property><property name="fill">True</property><property name="position">3</property></packing></child></object><packing><property name="position">3</property></packing></child><child type="tab"><object class="GtkLabel" id="label4"><property name="visible">True</property><property name="can_focus">False</property><property name="label" translatable="yes">Advanced</property></object><packing><property name="position">3</property><property name="tab_fill">False</property></packing></child></object><packing><property name="expand">True</property><property name="fill">True</property><property name="position">2</property></packing></child></object></child><action-widgets><action-widget response="-7">close_btn</action-widget></action-widgets></object></interface>
index 9fe8f59..a356aca 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -70,7 +70,7 @@
 #         compiler:            $LTCC
 #         compiler flags:              $LTCFLAGS
 #         linker:              $LD (gnu? $with_gnu_ld)
-#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.6
+#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
 #         automake:    $automake_version
 #         autoconf:    $autoconf_version
 #
@@ -80,7 +80,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.6"
+VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
 TIMESTAMP=""
 package_revision=1.3337
 
index c3b2b3c..db34490 100644 (file)
@@ -1,10 +1,11 @@
 prefix=@prefix@
 exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-datadir=@datadir@
+pkglibdir=@libdir@/lxpanel
+includedir=@includedir@/lxpanel
+pluginsdir=${pkglibdir}/plugins
 
 Name: lxpanel
 Description: A lightweight X11 desktop panel
 Requires: glib-2.0 libfm
 Version: @VERSION@
+Libs: -L${pkglibdir} -llxpanel
index 568101e..bf1c1f3 100644 (file)
@@ -143,7 +143,6 @@ MANS = $(man_MANS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-ADDITIONAL_FLAGS = @ADDITIONAL_FLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
 ALL_PLUGINS_LIST = @ALL_PLUGINS_LIST@
 AMTAR = @AMTAR@
@@ -196,6 +195,8 @@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
 INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
 INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
 INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
+KEYBINDER_CFLAGS = @KEYBINDER_CFLAGS@
+KEYBINDER_LIBS = @KEYBINDER_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
@@ -206,7 +207,6 @@ LIBXML2_LIBS = @LIBXML2_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LXPANEL_MODULE = @LXPANEL_MODULE@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MENU_CACHE_CFLAGS = @MENU_CACHE_CFLAGS@
@@ -247,6 +247,9 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+VERSION_MAJOR = @VERSION_MAJOR@
+VERSION_MICRO = @VERSION_MICRO@
+VERSION_MINOR = @VERSION_MINOR@
 X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 XGETTEXT = @XGETTEXT@
index 5424fbd..5c0f6de 100644 (file)
@@ -8,8 +8,13 @@ AM_CPPFLAGS = \
        $(G_CAST_CHECKS)
 
 AM_LDFLAGS = \
+       -module -avoid-version -shared -export-dynamic \
+       -no-undefined -rpath $(libdir)/lxpanel/plugins \
+       $(top_builddir)/src/liblxpanel.la \
        $(PACKAGE_LIBS)
 
+$(top_builddir)/src/liblxpanel.la:
+       cd $(top_builddir)/src && $(MAKE) liblxpanel.la
 
 ## built-in plugins
 noinst_LIBRARIES = libbuiltin_plugins.a
@@ -72,20 +77,15 @@ batt_la_SOURCES = \
        batt/batt.c \
        batt/batt_sys.c
 batt_la_CFLAGS = -I$(srcdir)/batt
-batt_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # cpu
 cpu_la_SOURCES = cpu/cpu.c
-cpu_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # cpufreq
 cpufreq_la_SOURCES = cpufreq/cpufreq.c
-cpufreq_la_CFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\"
-cpufreq_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # deskno
 deskno_la_SOURCES = deskno/deskno.c
-deskno_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # indicator
 indicator_la_SOURCES = indicator/indicator.c
@@ -93,16 +93,14 @@ indicator_la_CFLAGS = \
        -DINDICATOR_DIR=\""$(INDICATORDIR)"\" \
        -DINDICATOR_ICONS_DIR=\""$(INDICATORICONSDIR)"\" \
        $(APPLET_CFLAGS)
-indicator_la_LDFLAGS = -module @LXPANEL_MODULE@ $(APPLET_LIBS)
+indicator_la_LIBADD = $(APPLET_LIBS)
 
 # kbled
 kbled_la_SOURCES = kbled/kbled.c
-kbled_la_CFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\"
-kbled_la_LDFLAGS = -module @LXPANEL_MODULE@
+kbled_la_LIBADD = $(X11_LIBS)
 
 # monitors
 monitors_la_SOURCES = monitors/monitors.c
-monitors_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # netstat
 netstat_la_SOURCES = \
@@ -112,10 +110,8 @@ netstat_la_SOURCES = \
        netstat/wireless.c \
        netstat/lxnm_client.c \
        netstat/passwd_gui.c
-netstat_la_CFLAGS = \
-       -I$(srcdir)/netstat \
-       -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\"
-netstat_la_LDFLAGS = -module @LXPANEL_MODULE@ -liw
+netstat_la_CFLAGS = -I$(srcdir)/netstat
+netstat_la_LIBADD = -liw
 
 # netstatus
 netstatus_la_SOURCES = \
@@ -128,25 +124,20 @@ netstatus_la_SOURCES = \
        netstatus/netstatus-util.c
 netstatus_la_CFLAGS = \
        -I$(srcdir)/netstatus \
-       -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\" \
        -DPACKAGE_UI_DIR=\""$(datadir)/lxpanel/ui"\"
-netstatus_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # thermal
 thermal_la_SOURCES = thermal/thermal.c
-thermal_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # volume (OSS)
 volume_la_SOURCES = \
        volume/volume-impl.c \
        volume/volume.c
 volume_la_CFLAGS = -I$(srcdir)/volume
-volume_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # volumealsa
 volumealsa_la_SOURCES = volumealsa/volumealsa.c
-volumealsa_la_CFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\"
-volumealsa_la_LDFLAGS = -module @LXPANEL_MODULE@ -lasound
+volumealsa_la_LIBADD = -lasound
 
 # weather
 weather_la_SOURCES = \
@@ -160,7 +151,7 @@ weather_la_SOURCES = \
 weather_la_CFLAGS = \
        -I$(srcdir)/weather \
        $(LIBXML2_CFLAGS)
-weather_la_LDFLAGS = -module @LXPANEL_MODULE@ $(LIBXML2_LIBS)
+weather_la_LIBADD = $(LIBXML2_LIBS)
 
 # xkb
 xkb_la_CFLAGS = \
@@ -171,7 +162,7 @@ xkb_la_CFLAGS = \
 xkb_la_SOURCES = \
        xkb/xkb-plugin.c \
        xkb/xkb.c
-xkb_la_LDFLAGS = -module @LXPANEL_MODULE@
+xkb_la_LIBADD = $(X11_LIBS)
 
 xkeyboardconfigdir=$(datadir)/lxpanel/xkeyboardconfig
 xkeyboardconfig_DATA = \
@@ -339,8 +330,6 @@ EXTRA_DIST = \
 
 install-exec-hook:
        rm -f $(DESTDIR)$(libdir)/lxpanel/plugins/*.la
-       rm -f $(DESTDIR)$(libdir)/lxpanel/plugins/*.a
-       rm -f $(DESTDIR)$(libdir)/lxpanel/plugins/*.
 
 if BUILD_PLUGIN_LOADER
 DYNAMIC_PLUGINS_INSTALLED = $(DYNAMIC_PLUGINS:.la=.so)
index 3cb09e0..435c740 100644 (file)
@@ -156,44 +156,30 @@ am__v_lt_0 = --silent
 am__v_lt_1 = 
 batt_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(batt_la_CFLAGS) \
-       $(CFLAGS) $(batt_la_LDFLAGS) $(LDFLAGS) -o $@
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 cpu_la_LIBADD =
 am_cpu_la_OBJECTS = cpu/cpu.lo
 cpu_la_OBJECTS = $(am_cpu_la_OBJECTS)
-cpu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(cpu_la_LDFLAGS) $(LDFLAGS) -o $@
 cpufreq_la_LIBADD =
-am_cpufreq_la_OBJECTS = cpufreq/cpufreq_la-cpufreq.lo
+am_cpufreq_la_OBJECTS = cpufreq/cpufreq.lo
 cpufreq_la_OBJECTS = $(am_cpufreq_la_OBJECTS)
-cpufreq_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(cpufreq_la_CFLAGS) \
-       $(CFLAGS) $(cpufreq_la_LDFLAGS) $(LDFLAGS) -o $@
 deskno_la_LIBADD =
 am_deskno_la_OBJECTS = deskno/deskno.lo
 deskno_la_OBJECTS = $(am_deskno_la_OBJECTS)
-deskno_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(deskno_la_LDFLAGS) $(LDFLAGS) -o $@
-indicator_la_LIBADD =
+am__DEPENDENCIES_1 =
+indicator_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_indicator_la_OBJECTS = indicator/indicator_la-indicator.lo
 indicator_la_OBJECTS = $(am_indicator_la_OBJECTS)
 indicator_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(indicator_la_CFLAGS) \
-       $(CFLAGS) $(indicator_la_LDFLAGS) $(LDFLAGS) -o $@
-kbled_la_LIBADD =
-am_kbled_la_OBJECTS = kbled/kbled_la-kbled.lo
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+kbled_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_kbled_la_OBJECTS = kbled/kbled.lo
 kbled_la_OBJECTS = $(am_kbled_la_OBJECTS)
-kbled_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(kbled_la_CFLAGS) \
-       $(CFLAGS) $(kbled_la_LDFLAGS) $(LDFLAGS) -o $@
 monitors_la_LIBADD =
 am_monitors_la_OBJECTS = monitors/monitors.lo
 monitors_la_OBJECTS = $(am_monitors_la_OBJECTS)
-monitors_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(monitors_la_LDFLAGS) $(LDFLAGS) -o $@
-netstat_la_LIBADD =
+netstat_la_DEPENDENCIES =
 am_netstat_la_OBJECTS = netstat/netstat_la-netstat.lo \
        netstat/netstat_la-devproc.lo netstat/netstat_la-statusicon.lo \
        netstat/netstat_la-wireless.lo \
@@ -202,7 +188,7 @@ am_netstat_la_OBJECTS = netstat/netstat_la-netstat.lo \
 netstat_la_OBJECTS = $(am_netstat_la_OBJECTS)
 netstat_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(netstat_la_CFLAGS) \
-       $(CFLAGS) $(netstat_la_LDFLAGS) $(LDFLAGS) -o $@
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 netstatus_la_LIBADD =
 am_netstatus_la_OBJECTS = netstatus/netstatus_la-netstatus.lo \
        netstatus/netstatus_la-netstatus-dialog.lo \
@@ -214,27 +200,21 @@ am_netstatus_la_OBJECTS = netstatus/netstatus_la-netstatus.lo \
 netstatus_la_OBJECTS = $(am_netstatus_la_OBJECTS)
 netstatus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(netstatus_la_CFLAGS) \
-       $(CFLAGS) $(netstatus_la_LDFLAGS) $(LDFLAGS) -o $@
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 thermal_la_LIBADD =
 am_thermal_la_OBJECTS = thermal/thermal.lo
 thermal_la_OBJECTS = $(am_thermal_la_OBJECTS)
-thermal_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-       $(thermal_la_LDFLAGS) $(LDFLAGS) -o $@
 volume_la_LIBADD =
 am_volume_la_OBJECTS = volume/volume_la-volume-impl.lo \
        volume/volume_la-volume.lo
 volume_la_OBJECTS = $(am_volume_la_OBJECTS)
 volume_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(volume_la_CFLAGS) \
-       $(CFLAGS) $(volume_la_LDFLAGS) $(LDFLAGS) -o $@
-volumealsa_la_LIBADD =
-am_volumealsa_la_OBJECTS = volumealsa/volumealsa_la-volumealsa.lo
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+volumealsa_la_DEPENDENCIES =
+am_volumealsa_la_OBJECTS = volumealsa/volumealsa.lo
 volumealsa_la_OBJECTS = $(am_volumealsa_la_OBJECTS)
-volumealsa_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(volumealsa_la_CFLAGS) \
-       $(CFLAGS) $(volumealsa_la_LDFLAGS) $(LDFLAGS) -o $@
-weather_la_LIBADD =
+weather_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_weather_la_OBJECTS = weather/weather_la-logutil.lo \
        weather/weather_la-httputil.lo weather/weather_la-yahooutil.lo \
        weather/weather_la-location.lo weather/weather_la-forecast.lo \
@@ -243,13 +223,13 @@ am_weather_la_OBJECTS = weather/weather_la-logutil.lo \
 weather_la_OBJECTS = $(am_weather_la_OBJECTS)
 weather_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(weather_la_CFLAGS) \
-       $(CFLAGS) $(weather_la_LDFLAGS) $(LDFLAGS) -o $@
-xkb_la_LIBADD =
+       $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+xkb_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_xkb_la_OBJECTS = xkb/xkb_la-xkb-plugin.lo xkb/xkb_la-xkb.lo
 xkb_la_OBJECTS = $(am_xkb_la_OBJECTS)
 xkb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(xkb_la_CFLAGS) $(CFLAGS) \
-       $(xkb_la_LDFLAGS) $(LDFLAGS) -o $@
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -327,7 +307,6 @@ CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkglibdir = $(libdir)/lxpanel/plugins
 ACLOCAL = @ACLOCAL@
-ADDITIONAL_FLAGS = @ADDITIONAL_FLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
 ALL_PLUGINS_LIST = @ALL_PLUGINS_LIST@
 AMTAR = @AMTAR@
@@ -380,6 +359,8 @@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
 INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
 INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
 INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
+KEYBINDER_CFLAGS = @KEYBINDER_CFLAGS@
+KEYBINDER_LIBS = @KEYBINDER_LIBS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
@@ -390,7 +371,6 @@ LIBXML2_LIBS = @LIBXML2_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LXPANEL_MODULE = @LXPANEL_MODULE@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MENU_CACHE_CFLAGS = @MENU_CACHE_CFLAGS@
@@ -431,6 +411,9 @@ SHELL = @SHELL@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
+VERSION_MAJOR = @VERSION_MAJOR@
+VERSION_MICRO = @VERSION_MICRO@
+VERSION_MINOR = @VERSION_MINOR@
 X11_CFLAGS = @X11_CFLAGS@
 X11_LIBS = @X11_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -496,6 +479,9 @@ AM_CPPFLAGS = \
        $(G_CAST_CHECKS)
 
 AM_LDFLAGS = \
+       -module -avoid-version -shared -export-dynamic \
+       -no-undefined -rpath $(libdir)/lxpanel/plugins \
+       $(top_builddir)/src/liblxpanel.la \
        $(PACKAGE_LIBS)
 
 noinst_LIBRARIES = libbuiltin_plugins.a
@@ -549,20 +535,15 @@ batt_la_SOURCES = \
        batt/batt_sys.c
 
 batt_la_CFLAGS = -I$(srcdir)/batt
-batt_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # cpu
 cpu_la_SOURCES = cpu/cpu.c
-cpu_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # cpufreq
 cpufreq_la_SOURCES = cpufreq/cpufreq.c
-cpufreq_la_CFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\"
-cpufreq_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # deskno
 deskno_la_SOURCES = deskno/deskno.c
-deskno_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # indicator
 indicator_la_SOURCES = indicator/indicator.c
@@ -571,16 +552,14 @@ indicator_la_CFLAGS = \
        -DINDICATOR_ICONS_DIR=\""$(INDICATORICONSDIR)"\" \
        $(APPLET_CFLAGS)
 
-indicator_la_LDFLAGS = -module @LXPANEL_MODULE@ $(APPLET_LIBS)
+indicator_la_LIBADD = $(APPLET_LIBS)
 
 # kbled
 kbled_la_SOURCES = kbled/kbled.c
-kbled_la_CFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\"
-kbled_la_LDFLAGS = -module @LXPANEL_MODULE@
+kbled_la_LIBADD = $(X11_LIBS)
 
 # monitors
 monitors_la_SOURCES = monitors/monitors.c
-monitors_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # netstat
 netstat_la_SOURCES = \
@@ -591,11 +570,8 @@ netstat_la_SOURCES = \
        netstat/lxnm_client.c \
        netstat/passwd_gui.c
 
-netstat_la_CFLAGS = \
-       -I$(srcdir)/netstat \
-       -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\"
-
-netstat_la_LDFLAGS = -module @LXPANEL_MODULE@ -liw
+netstat_la_CFLAGS = -I$(srcdir)/netstat
+netstat_la_LIBADD = -liw
 
 # netstatus
 netstatus_la_SOURCES = \
@@ -609,14 +585,11 @@ netstatus_la_SOURCES = \
 
 netstatus_la_CFLAGS = \
        -I$(srcdir)/netstatus \
-       -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\" \
        -DPACKAGE_UI_DIR=\""$(datadir)/lxpanel/ui"\"
 
-netstatus_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # thermal
 thermal_la_SOURCES = thermal/thermal.c
-thermal_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # volume (OSS)
 volume_la_SOURCES = \
@@ -624,12 +597,10 @@ volume_la_SOURCES = \
        volume/volume.c
 
 volume_la_CFLAGS = -I$(srcdir)/volume
-volume_la_LDFLAGS = -module @LXPANEL_MODULE@
 
 # volumealsa
 volumealsa_la_SOURCES = volumealsa/volumealsa.c
-volumealsa_la_CFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)/lxpanel"\"
-volumealsa_la_LDFLAGS = -module @LXPANEL_MODULE@ -lasound
+volumealsa_la_LIBADD = -lasound
 
 # weather
 weather_la_SOURCES = \
@@ -645,7 +616,7 @@ weather_la_CFLAGS = \
        -I$(srcdir)/weather \
        $(LIBXML2_CFLAGS)
 
-weather_la_LDFLAGS = -module @LXPANEL_MODULE@ $(LIBXML2_LIBS)
+weather_la_LIBADD = $(LIBXML2_LIBS)
 
 # xkb
 xkb_la_CFLAGS = \
@@ -658,7 +629,7 @@ xkb_la_SOURCES = \
        xkb/xkb-plugin.c \
        xkb/xkb.c
 
-xkb_la_LDFLAGS = -module @LXPANEL_MODULE@
+xkb_la_LIBADD = $(X11_LIBS)
 xkeyboardconfigdir = $(datadir)/lxpanel/xkeyboardconfig
 xkeyboardconfig_DATA = \
        xkb/xkeyboardconfig/models.cfg \
@@ -923,18 +894,18 @@ cpu/$(DEPDIR)/$(am__dirstamp):
 cpu/cpu.lo: cpu/$(am__dirstamp) cpu/$(DEPDIR)/$(am__dirstamp)
 
 cpu.la: $(cpu_la_OBJECTS) $(cpu_la_DEPENDENCIES) $(EXTRA_cpu_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(cpu_la_LINK)  $(cpu_la_OBJECTS) $(cpu_la_LIBADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK)  $(cpu_la_OBJECTS) $(cpu_la_LIBADD) $(LIBS)
 cpufreq/$(am__dirstamp):
        @$(MKDIR_P) cpufreq
        @: > cpufreq/$(am__dirstamp)
 cpufreq/$(DEPDIR)/$(am__dirstamp):
        @$(MKDIR_P) cpufreq/$(DEPDIR)
        @: > cpufreq/$(DEPDIR)/$(am__dirstamp)
-cpufreq/cpufreq_la-cpufreq.lo: cpufreq/$(am__dirstamp) \
+cpufreq/cpufreq.lo: cpufreq/$(am__dirstamp) \
        cpufreq/$(DEPDIR)/$(am__dirstamp)
 
 cpufreq.la: $(cpufreq_la_OBJECTS) $(cpufreq_la_DEPENDENCIES) $(EXTRA_cpufreq_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(cpufreq_la_LINK)  $(cpufreq_la_OBJECTS) $(cpufreq_la_LIBADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK)  $(cpufreq_la_OBJECTS) $(cpufreq_la_LIBADD) $(LIBS)
 deskno/$(am__dirstamp):
        @$(MKDIR_P) deskno
        @: > deskno/$(am__dirstamp)
@@ -945,7 +916,7 @@ deskno/deskno.lo: deskno/$(am__dirstamp) \
        deskno/$(DEPDIR)/$(am__dirstamp)
 
 deskno.la: $(deskno_la_OBJECTS) $(deskno_la_DEPENDENCIES) $(EXTRA_deskno_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(deskno_la_LINK)  $(deskno_la_OBJECTS) $(deskno_la_LIBADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK)  $(deskno_la_OBJECTS) $(deskno_la_LIBADD) $(LIBS)
 indicator/$(am__dirstamp):
        @$(MKDIR_P) indicator
        @: > indicator/$(am__dirstamp)
@@ -963,11 +934,10 @@ kbled/$(am__dirstamp):
 kbled/$(DEPDIR)/$(am__dirstamp):
        @$(MKDIR_P) kbled/$(DEPDIR)
        @: > kbled/$(DEPDIR)/$(am__dirstamp)
-kbled/kbled_la-kbled.lo: kbled/$(am__dirstamp) \
-       kbled/$(DEPDIR)/$(am__dirstamp)
+kbled/kbled.lo: kbled/$(am__dirstamp) kbled/$(DEPDIR)/$(am__dirstamp)
 
 kbled.la: $(kbled_la_OBJECTS) $(kbled_la_DEPENDENCIES) $(EXTRA_kbled_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(kbled_la_LINK)  $(kbled_la_OBJECTS) $(kbled_la_LIBADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK)  $(kbled_la_OBJECTS) $(kbled_la_LIBADD) $(LIBS)
 monitors/$(am__dirstamp):
        @$(MKDIR_P) monitors
        @: > monitors/$(am__dirstamp)
@@ -978,7 +948,7 @@ monitors/monitors.lo: monitors/$(am__dirstamp) \
        monitors/$(DEPDIR)/$(am__dirstamp)
 
 monitors.la: $(monitors_la_OBJECTS) $(monitors_la_DEPENDENCIES) $(EXTRA_monitors_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(monitors_la_LINK)  $(monitors_la_OBJECTS) $(monitors_la_LIBADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK)  $(monitors_la_OBJECTS) $(monitors_la_LIBADD) $(LIBS)
 netstat/$(am__dirstamp):
        @$(MKDIR_P) netstat
        @: > netstat/$(am__dirstamp)
@@ -1033,7 +1003,7 @@ thermal/thermal.lo: thermal/$(am__dirstamp) \
        thermal/$(DEPDIR)/$(am__dirstamp)
 
 thermal.la: $(thermal_la_OBJECTS) $(thermal_la_DEPENDENCIES) $(EXTRA_thermal_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(thermal_la_LINK)  $(thermal_la_OBJECTS) $(thermal_la_LIBADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK)  $(thermal_la_OBJECTS) $(thermal_la_LIBADD) $(LIBS)
 volume/$(am__dirstamp):
        @$(MKDIR_P) volume
        @: > volume/$(am__dirstamp)
@@ -1053,11 +1023,11 @@ volumealsa/$(am__dirstamp):
 volumealsa/$(DEPDIR)/$(am__dirstamp):
        @$(MKDIR_P) volumealsa/$(DEPDIR)
        @: > volumealsa/$(DEPDIR)/$(am__dirstamp)
-volumealsa/volumealsa_la-volumealsa.lo: volumealsa/$(am__dirstamp) \
+volumealsa/volumealsa.lo: volumealsa/$(am__dirstamp) \
        volumealsa/$(DEPDIR)/$(am__dirstamp)
 
 volumealsa.la: $(volumealsa_la_OBJECTS) $(volumealsa_la_DEPENDENCIES) $(EXTRA_volumealsa_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(volumealsa_la_LINK)  $(volumealsa_la_OBJECTS) $(volumealsa_la_LIBADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK)  $(volumealsa_la_OBJECTS) $(volumealsa_la_LIBADD) $(LIBS)
 weather/$(am__dirstamp):
        @$(MKDIR_P) weather
        @: > weather/$(am__dirstamp)
@@ -1140,10 +1110,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@batt/$(DEPDIR)/batt_la-batt.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@batt/$(DEPDIR)/batt_la-batt_sys.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/cpu.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cpufreq/$(DEPDIR)/cpufreq_la-cpufreq.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cpufreq/$(DEPDIR)/cpufreq.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@deskno/$(DEPDIR)/deskno.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@indicator/$(DEPDIR)/indicator_la-indicator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@kbled/$(DEPDIR)/kbled_la-kbled.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@kbled/$(DEPDIR)/kbled.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@monitors/$(DEPDIR)/monitors.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@netstat/$(DEPDIR)/netstat_la-devproc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@netstat/$(DEPDIR)/netstat_la-lxnm_client.Plo@am__quote@
@@ -1161,7 +1131,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@thermal/$(DEPDIR)/thermal.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@volume/$(DEPDIR)/volume_la-volume-impl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@volume/$(DEPDIR)/volume_la-volume.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@volumealsa/$(DEPDIR)/volumealsa_la-volumealsa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@volumealsa/$(DEPDIR)/volumealsa.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@weather/$(DEPDIR)/weather_la-forecast.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@weather/$(DEPDIR)/weather_la-httputil.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@weather/$(DEPDIR)/weather_la-location.Plo@am__quote@
@@ -1336,13 +1306,6 @@ batt/batt_la-batt_sys.lo: batt/batt_sys.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(batt_la_CFLAGS) $(CFLAGS) -c -o batt/batt_la-batt_sys.lo `test -f 'batt/batt_sys.c' || echo '$(srcdir)/'`batt/batt_sys.c
 
-cpufreq/cpufreq_la-cpufreq.lo: cpufreq/cpufreq.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cpufreq_la_CFLAGS) $(CFLAGS) -MT cpufreq/cpufreq_la-cpufreq.lo -MD -MP -MF cpufreq/$(DEPDIR)/cpufreq_la-cpufreq.Tpo -c -o cpufreq/cpufreq_la-cpufreq.lo `test -f 'cpufreq/cpufreq.c' || echo '$(srcdir)/'`cpufreq/cpufreq.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpufreq/$(DEPDIR)/cpufreq_la-cpufreq.Tpo cpufreq/$(DEPDIR)/cpufreq_la-cpufreq.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cpufreq/cpufreq.c' object='cpufreq/cpufreq_la-cpufreq.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cpufreq_la_CFLAGS) $(CFLAGS) -c -o cpufreq/cpufreq_la-cpufreq.lo `test -f 'cpufreq/cpufreq.c' || echo '$(srcdir)/'`cpufreq/cpufreq.c
-
 indicator/indicator_la-indicator.lo: indicator/indicator.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_la_CFLAGS) $(CFLAGS) -MT indicator/indicator_la-indicator.lo -MD -MP -MF indicator/$(DEPDIR)/indicator_la-indicator.Tpo -c -o indicator/indicator_la-indicator.lo `test -f 'indicator/indicator.c' || echo '$(srcdir)/'`indicator/indicator.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) indicator/$(DEPDIR)/indicator_la-indicator.Tpo indicator/$(DEPDIR)/indicator_la-indicator.Plo
@@ -1350,13 +1313,6 @@ indicator/indicator_la-indicator.lo: indicator/indicator.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(indicator_la_CFLAGS) $(CFLAGS) -c -o indicator/indicator_la-indicator.lo `test -f 'indicator/indicator.c' || echo '$(srcdir)/'`indicator/indicator.c
 
-kbled/kbled_la-kbled.lo: kbled/kbled.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kbled_la_CFLAGS) $(CFLAGS) -MT kbled/kbled_la-kbled.lo -MD -MP -MF kbled/$(DEPDIR)/kbled_la-kbled.Tpo -c -o kbled/kbled_la-kbled.lo `test -f 'kbled/kbled.c' || echo '$(srcdir)/'`kbled/kbled.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) kbled/$(DEPDIR)/kbled_la-kbled.Tpo kbled/$(DEPDIR)/kbled_la-kbled.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kbled/kbled.c' object='kbled/kbled_la-kbled.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kbled_la_CFLAGS) $(CFLAGS) -c -o kbled/kbled_la-kbled.lo `test -f 'kbled/kbled.c' || echo '$(srcdir)/'`kbled/kbled.c
-
 netstat/netstat_la-netstat.lo: netstat/netstat.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netstat_la_CFLAGS) $(CFLAGS) -MT netstat/netstat_la-netstat.lo -MD -MP -MF netstat/$(DEPDIR)/netstat_la-netstat.Tpo -c -o netstat/netstat_la-netstat.lo `test -f 'netstat/netstat.c' || echo '$(srcdir)/'`netstat/netstat.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) netstat/$(DEPDIR)/netstat_la-netstat.Tpo netstat/$(DEPDIR)/netstat_la-netstat.Plo
@@ -1462,13 +1418,6 @@ volume/volume_la-volume.lo: volume/volume.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(volume_la_CFLAGS) $(CFLAGS) -c -o volume/volume_la-volume.lo `test -f 'volume/volume.c' || echo '$(srcdir)/'`volume/volume.c
 
-volumealsa/volumealsa_la-volumealsa.lo: volumealsa/volumealsa.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(volumealsa_la_CFLAGS) $(CFLAGS) -MT volumealsa/volumealsa_la-volumealsa.lo -MD -MP -MF volumealsa/$(DEPDIR)/volumealsa_la-volumealsa.Tpo -c -o volumealsa/volumealsa_la-volumealsa.lo `test -f 'volumealsa/volumealsa.c' || echo '$(srcdir)/'`volumealsa/volumealsa.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) volumealsa/$(DEPDIR)/volumealsa_la-volumealsa.Tpo volumealsa/$(DEPDIR)/volumealsa_la-volumealsa.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='volumealsa/volumealsa.c' object='volumealsa/volumealsa_la-volumealsa.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(volumealsa_la_CFLAGS) $(CFLAGS) -c -o volumealsa/volumealsa_la-volumealsa.lo `test -f 'volumealsa/volumealsa.c' || echo '$(srcdir)/'`volumealsa/volumealsa.c
-
 weather/weather_la-logutil.lo: weather/logutil.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(weather_la_CFLAGS) $(CFLAGS) -MT weather/weather_la-logutil.lo -MD -MP -MF weather/$(DEPDIR)/weather_la-logutil.Tpo -c -o weather/weather_la-logutil.lo `test -f 'weather/logutil.c' || echo '$(srcdir)/'`weather/logutil.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) weather/$(DEPDIR)/weather_la-logutil.Tpo weather/$(DEPDIR)/weather_la-logutil.Plo
@@ -1837,10 +1786,11 @@ uninstall-am: uninstall-flagsDATA uninstall-pkglibLTLIBRARIES \
        uninstall-xkeyboardconfigDATA
 
 
+$(top_builddir)/src/liblxpanel.la:
+       cd $(top_builddir)/src && $(MAKE) liblxpanel.la
+
 install-exec-hook:
        rm -f $(DESTDIR)$(libdir)/lxpanel/plugins/*.la
-       rm -f $(DESTDIR)$(libdir)/lxpanel/plugins/*.a
-       rm -f $(DESTDIR)$(libdir)/lxpanel/plugins/*.
 @BUILD_PLUGIN_LOADER_TRUE@uninstall-hook:
 @BUILD_PLUGIN_LOADER_TRUE@     cd $(DESTDIR)$(libdir)/lxpanel/plugins && rm -f $(DYNAMIC_PLUGINS_INSTALLED) || true
 
index 408de79..42eda69 100644 (file)
@@ -66,6 +66,7 @@ typedef struct {
         discharging1,
         discharging2;
     cairo_surface_t *pixmap;
+    GtkContainer *box;
     GtkWidget *drawingArea;
     GtkOrientation orientation;
     unsigned int alarmTime,
@@ -249,7 +250,8 @@ void update_display(lx_battery *lx_b, gboolean repaint) {
     if ( !isCharging && rate > 0 &&
         ( ( battery_get_remaining( b ) / 60 ) < (int)lx_b->alarmTime ) )
     {
-        /* Shrug this should be done using glibs process functions */
+        /* FIXME: this should be done using glibs process functions */
+        /* FIXME: see bug #463: it should not spawn process all the time */
         /* Alarms should not run concurrently; determine whether an alarm is
            already running */
         int alarmCanRun;
@@ -271,7 +273,7 @@ void update_display(lx_battery *lx_b, gboolean repaint) {
 
     set_tooltip_text(lx_b);
 
-    int chargeLevel = lx_b->b->percentage * (lx_b->length - 2 * lx_b->border) / 100;
+    int chargeLevel = lx_b->b->percentage * lx_b->length / 100;
 
     if (lx_b->orientation == GTK_ORIENTATION_HORIZONTAL) {
 
@@ -279,15 +281,13 @@ void update_display(lx_battery *lx_b, gboolean repaint) {
            color 2 for the right half */
         gdk_cairo_set_source_color(cr,
                 isCharging ? &lx_b->charging1 : &lx_b->discharging1);
-        cairo_rectangle(cr, lx_b->border,
-                lx_b->height - lx_b->border - chargeLevel, lx_b->width / 2
-                - lx_b->border, chargeLevel);
+        cairo_rectangle(cr, 0, lx_b->height - chargeLevel,
+                        lx_b->width / 2, chargeLevel);
         cairo_fill(cr);
         gdk_cairo_set_source_color(cr,
                 isCharging ? &lx_b->charging2 : &lx_b->discharging2);
-        cairo_rectangle(cr, lx_b->width / 2,
-                lx_b->height - lx_b->border - chargeLevel, (lx_b->width + 1) / 2
-                - lx_b->border, chargeLevel);
+        cairo_rectangle(cr, lx_b->width / 2, lx_b->height - chargeLevel,
+                        (lx_b->width + 1) / 2, chargeLevel);
         cairo_fill(cr);
 
     }
@@ -297,13 +297,12 @@ void update_display(lx_battery *lx_b, gboolean repaint) {
            color 2 for the bottom half */
         gdk_cairo_set_source_color(cr,
                 isCharging ? &lx_b->charging1 : &lx_b->discharging1);
-        cairo_rectangle(cr, lx_b->border,
-                lx_b->border, chargeLevel, lx_b->height / 2 - lx_b->border);
+        cairo_rectangle(cr, 0, 0, chargeLevel, lx_b->height / 2);
         cairo_fill(cr);
         gdk_cairo_set_source_color(cr,
                 isCharging ? &lx_b->charging2 : &lx_b->discharging2);
-        cairo_rectangle(cr, lx_b->border, (lx_b->height + 1)
-                / 2, chargeLevel, lx_b->height / 2 - lx_b->border);
+        cairo_rectangle(cr, 0, (lx_b->height + 1) / 2,
+                        chargeLevel, lx_b->height / 2);
         cairo_fill(cr);
 
     }
@@ -353,7 +352,6 @@ static gboolean buttonPressEvent(GtkWidget *p, GdkEventButton *event,
     return FALSE;
 }
 
-
 static gint configureEvent(GtkWidget *widget, GdkEventConfigure *event,
         lx_battery *lx_b)
 {
@@ -376,11 +374,9 @@ static gint configureEvent(GtkWidget *widget, GdkEventConfigure *event,
     lx_b->height = allocation.height;
     if (lx_b->orientation == GTK_ORIENTATION_HORIZONTAL) {
         lx_b->length = lx_b->height;
-        lx_b->thickness = lx_b->width;
     }
     else {
         lx_b->length = lx_b->width;
-        lx_b->thickness = lx_b->height;
     }
 
     lx_b->pixmap = cairo_image_surface_create (CAIRO_FORMAT_RGB24, allocation.width,
@@ -390,6 +386,9 @@ static gint configureEvent(GtkWidget *widget, GdkEventConfigure *event,
     /* Perform an update so the bar will look right in its new orientation */
     update_display(lx_b, FALSE);
 
+    /* we enforce border width here because panel sets it to 0 */
+    gtk_container_set_border_width(lx_b->box, lx_b->border);
+
     RET(TRUE);
 }
 
@@ -413,6 +412,18 @@ static gint exposeEvent(GtkWidget *widget, GdkEventExpose *event, lx_battery *lx
     RET(FALSE);
 }
 
+/* updates length, border, and height/width appropriate to orientation */
+static void updateSizes(lx_battery *b)
+{
+    b->length = panel_get_height(b->panel);
+    b->border = MIN(b->requestedBorder, (MAX(1, b->length) - 1) / 2);
+    b->length -= 2 * b->border;
+    if (b->orientation == GTK_ORIENTATION_HORIZONTAL)
+        b->height = b->length;
+    else
+        b->width = b->length;
+}
+
 
 static GtkWidget * constructor(LXPanel *panel, config_setting_t *settings)
 {
@@ -431,31 +442,17 @@ static GtkWidget * constructor(LXPanel *panel, config_setting_t *settings)
     p = gtk_event_box_new();
     lxpanel_plugin_set_data(p, lx_b, destructor);
     gtk_widget_set_has_window(p, FALSE);
-    gtk_container_set_border_width( GTK_CONTAINER(p), 1 );
 
+    lx_b->box = GTK_CONTAINER(p);
     lx_b->drawingArea = gtk_drawing_area_new();
     gtk_widget_add_events( lx_b->drawingArea, GDK_BUTTON_PRESS_MASK );
 
-    gtk_container_add( (GtkContainer*)p, lx_b->drawingArea );
+    gtk_container_add(lx_b->box, lx_b->drawingArea);
 
     lx_b->orientation = panel_get_orientation(panel);
-    if (lx_b->orientation == GTK_ORIENTATION_HORIZONTAL) {
-        lx_b->height = lx_b->length = 20;
-        lx_b->thickness = lx_b->width = 8;
-    }
-    else {
-        lx_b->height = lx_b->thickness = 8;
-        lx_b->length = lx_b->width = 20;
-    }
-    gtk_widget_set_size_request(lx_b->drawingArea, lx_b->width, lx_b->height);
 
     gtk_widget_show(lx_b->drawingArea);
 
-    g_signal_connect (G_OBJECT (lx_b->drawingArea),"configure-event",
-          G_CALLBACK (configureEvent), (gpointer) lx_b);
-    g_signal_connect (G_OBJECT (lx_b->drawingArea), "expose-event",
-          G_CALLBACK (exposeEvent), (gpointer) lx_b);
-
     sem_init(&(lx_b->alarmProcessLock), 0, 1);
 
     lx_b->alarmCommand = lx_b->backgroundColor = lx_b->chargingColor1 = lx_b->chargingColor2
@@ -464,6 +461,7 @@ static GtkWidget * constructor(LXPanel *panel, config_setting_t *settings)
     /* Set default values for integers */
     lx_b->alarmTime = 5;
     lx_b->requestedBorder = 1;
+    lx_b->thickness = 8;
 
     /* remember instance data */
     lx_b->panel = panel;
@@ -488,26 +486,33 @@ static GtkWidget * constructor(LXPanel *panel, config_setting_t *settings)
     if (config_setting_lookup_int(settings, "AlarmTime", &tmp_int))
         lx_b->alarmTime = MAX(0, tmp_int);
     if (config_setting_lookup_int(settings, "BorderWidth", &tmp_int))
-        lx_b->requestedBorder = MAX(0, tmp_int);
-    if (config_setting_lookup_int(settings, "Size", &tmp_int)) {
+        lx_b->requestedBorder = CLAMP(tmp_int, 0, 6);
+    if (config_setting_lookup_int(settings, "Size", &tmp_int))
         lx_b->thickness = MAX(1, tmp_int);
-        if (lx_b->orientation == GTK_ORIENTATION_HORIZONTAL)
-            lx_b->width = lx_b->thickness;
-        else
-            lx_b->height = lx_b->thickness;
-        gtk_widget_set_size_request(lx_b->drawingArea, lx_b->width,
-                                    lx_b->height);
-    }
     if (config_setting_lookup_int(settings, "ShowExtendedInformation", &tmp_int))
         lx_b->show_extended_information = (tmp_int != 0);
 
     /* Make sure the border value is acceptable */
-    lx_b->border = MIN(lx_b->requestedBorder,
-                       (MAX(1, MIN(lx_b->length, lx_b->thickness)) - 1) / 2);
+    updateSizes(lx_b);
+    if (lx_b->orientation == GTK_ORIENTATION_HORIZONTAL)
+    {
+        lx_b->width = lx_b->thickness;
+        gtk_widget_set_size_request(lx_b->drawingArea, lx_b->width, -1);
+    }
+    else
+    {
+        lx_b->height = lx_b->thickness;
+        gtk_widget_set_size_request(lx_b->drawingArea, -1, lx_b->height);
+    }
+
+    g_signal_connect (G_OBJECT (lx_b->drawingArea),"configure-event",
+          G_CALLBACK (configureEvent), (gpointer) lx_b);
+    g_signal_connect (G_OBJECT (lx_b->drawingArea), "expose-event",
+          G_CALLBACK (exposeEvent), (gpointer) lx_b);
 
     /* Apply more default options */
     if (! lx_b->alarmCommand)
-        lx_b->alarmCommand = g_strdup("xmessage Battery low");
+        lx_b->alarmCommand = g_strconcat("xmessage ", _("Battery low"), NULL);
     if (! lx_b->backgroundColor)
         lx_b->backgroundColor = g_strdup("black");
     if (! lx_b->chargingColor1)
@@ -571,10 +576,17 @@ static void orientation(LXPanel *panel, GtkWidget *p) {
 
     if (b->orientation != panel_get_orientation(panel)) {
         b->orientation = panel_get_orientation(panel);
-        unsigned int swap = b->height;
-        b->height = b->width;
-        b->width = swap;
-        gtk_widget_set_size_request(b->drawingArea, b->width, b->height);
+        updateSizes(b);
+        if (b->orientation == GTK_ORIENTATION_HORIZONTAL)
+        {
+            b->width = b->thickness;
+            gtk_widget_set_size_request(b->drawingArea, b->width, -1);
+        }
+        else
+        {
+            b->height = b->thickness;
+            gtk_widget_set_size_request(b->drawingArea, -1, b->height);
+        }
     }
 
     RET();
@@ -602,23 +614,35 @@ static gboolean applyConfig(gpointer user_data)
             gdk_color_parse(b->dischargingColor2, &b->discharging2))
         config_group_set_string(b->settings, "DischargingColor2", b->dischargingColor2);
 
+    /* Make sure it is at least 1 px */
+    if (b->thickness < 1)
+        b->thickness = 1;
+
     /* Make sure the border value is acceptable */
-    b->border = MIN(b->requestedBorder,
-                    (MAX(1, MIN(b->length, b->thickness)) - 1) / 2);
+    b->requestedBorder = MIN(b->requestedBorder, 6);
+    updateSizes(b);
 
     /* Resize the widget */
-    b->width = b->height = b->length;
+    gtk_container_set_border_width(b->box, b->border);
     if (b->orientation == GTK_ORIENTATION_HORIZONTAL)
+    {
         b->width = b->thickness;
+        gtk_widget_set_size_request(b->drawingArea, b->width, -1);
+    }
     else
+    {
         b->height = b->thickness;
-    gtk_widget_set_size_request(b->drawingArea, b->width, b->height);
+        gtk_widget_set_size_request(b->drawingArea, -1, b->height);
+    }
     /* ensure visibility if requested */
     if (!b->hide_if_no_battery)
         gtk_widget_show(user_data);
     else if (b->b == NULL)
         gtk_widget_hide(user_data);
 
+    if (b->alarmCommand == NULL)
+        b->alarmCommand = g_strconcat("xmessage ", _("Battery low"), NULL);
+
     /* update tooltip */
     set_tooltip_text(b);
 
@@ -647,8 +671,10 @@ static GtkWidget *config(LXPanel *panel, GtkWidget *p) {
             _("Charging color 2"), &b->chargingColor2, CONF_TYPE_STR,
             _("Discharging color 1"), &b->dischargingColor1, CONF_TYPE_STR,
             _("Discharging color 2"), &b->dischargingColor2, CONF_TYPE_STR,
-            _("Border width"), &b->requestedBorder, CONF_TYPE_INT,
-            _("Size"), &b->thickness, CONF_TYPE_INT,
+            "", panel_config_int_button_new(_("Border width"), (int *)&b->requestedBorder,
+                                            0, 6), CONF_TYPE_EXTERNAL,
+            "", panel_config_int_button_new(_("Size"), (int *)&b->thickness,
+                                            1, 50), CONF_TYPE_EXTERNAL,
             _("Show Extended Information"), &b->show_extended_information, CONF_TYPE_BOOL,
             NULL);
 }
index 5dfb5f8..721aa9d 100644 (file)
@@ -238,7 +238,6 @@ static GtkWidget *cpu_constructor(LXPanel *panel, config_setting_t *settings)
     p = gtk_event_box_new();
     gtk_widget_set_has_window(p, FALSE);
     lxpanel_plugin_set_data(p, c, cpu_destructor);
-    gtk_container_set_border_width(GTK_CONTAINER(p), 1);
 
     /* Allocate drawing area as a child of top level widget.  Enable button press events. */
     c->da = gtk_drawing_area_new();
index 8a3b94a..192c7bd 100644 (file)
 #include <string.h>
 
 #include "plugin.h"
+#include "misc.h"
 
 #include "dbg.h"
 
-#define PROC_ICON            PACKAGE_DATA_DIR "/images/cpufreq-icon.png"
+#define PROC_ICON           "cpufreq-icon"
 #define SYSFS_CPU_DIRECTORY "/sys/devices/system/cpu"
 #define SCALING_GOV         "scaling_governor"
 #define SCALING_AGOV        "scaling_available_governors"
@@ -45,7 +46,6 @@
 typedef struct {
     GtkWidget *main;
     config_setting_t *settings;
-    GtkWidget *namew;
     GList *governors;
     GList *cpus;
     int has_cpufreq;
@@ -348,13 +348,8 @@ static GtkWidget *cpufreq_constructor(LXPanel *panel, config_setting_t *settings
     cf->cpus = NULL;
     cf->settings = settings;
 
-    cf->main = gtk_event_box_new();
+    cf->main = lxpanel_button_new_for_icon(panel, PROC_ICON, NULL, NULL);
     lxpanel_plugin_set_data(cf->main, cf, cpufreq_destructor);
-    gtk_widget_set_has_window(cf->main, FALSE);
-    gtk_container_set_border_width(GTK_CONTAINER(cf->main), 2);
-
-    cf->namew = gtk_image_new_from_file(PROC_ICON);
-    gtk_container_add(GTK_CONTAINER(cf->main), cf->namew);
 
     cf->has_cpufreq = 0;
 
@@ -367,8 +362,6 @@ static GtkWidget *cpufreq_constructor(LXPanel *panel, config_setting_t *settings
     _update_tooltip(cf);
     cf->timer = g_timeout_add_seconds(2, update_tooltip, (gpointer)cf);
 
-    gtk_widget_show(cf->namew);
-
     RET(cf->main);
 }
 
index e054a90..1f2cd11 100644 (file)
@@ -17,6 +17,7 @@
  */
 
 #include "plugin.h"
+#include "misc.h"
 
 #include <libfm/fm-gtk.h>
 
@@ -63,17 +64,13 @@ static gboolean dclock_update_display(DClockPlugin * dc);
 static void dclock_destructor(gpointer user_data);
 static gboolean dclock_apply_configuration(gpointer user_data);
 
-/* Handler for "map" signal on popup window. */
-static void dclock_popup_map(GtkWidget * widget, DClockPlugin * dc)
-{
-    lxpanel_plugin_adjust_popup_position(widget, dc->plugin);
-}
-
 /* Display a window containing the standard calendar widget. */
 static GtkWidget * dclock_create_calendar(DClockPlugin * dc)
 {
     /* Create a new window. */
     GtkWidget * win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+    gint x, y;
+
     gtk_window_set_default_size(GTK_WINDOW(win), 180, 180);
     gtk_window_set_decorated(GTK_WINDOW(win), FALSE);
     gtk_window_set_resizable(GTK_WINDOW(win), FALSE);
@@ -93,9 +90,11 @@ static GtkWidget * dclock_create_calendar(DClockPlugin * dc)
         GTK_CALENDAR(calendar),
         GTK_CALENDAR_SHOW_WEEK_NUMBERS | GTK_CALENDAR_SHOW_DAY_NAMES | GTK_CALENDAR_SHOW_HEADING);
     gtk_box_pack_start(GTK_BOX(box), calendar, TRUE, TRUE, 0);
+    gtk_widget_show_all(box);
 
-    /* Connect signals. */
-    g_signal_connect(G_OBJECT(win), "map", G_CALLBACK(dclock_popup_map), dc);
+    /* Preset the widget position right now to not move it across the screen */
+    lxpanel_plugin_popup_set_position_helper(dc->panel, dc->plugin, win, &x, &y);
+    gtk_window_move(GTK_WINDOW(win), x, y);
 
     /* Return the widget. */
     return win;
@@ -316,7 +315,7 @@ static GtkWidget *dclock_constructor(LXPanel *panel, config_setting_t *settings)
     gtk_misc_set_alignment(GTK_MISC(dc->clock_label), 0.5, 0.5);
     gtk_misc_set_padding(GTK_MISC(dc->clock_label), 4, 0);
     gtk_container_add(GTK_CONTAINER(hbox), dc->clock_label);
-    dc->clock_icon = gtk_image_new();
+    dc->clock_icon = lxpanel_image_new_for_icon(panel, "clock", -1, NULL);
     gtk_container_add(GTK_CONTAINER(hbox), dc->clock_icon);
 
     /* Initialize the clock display. */
@@ -366,9 +365,6 @@ static gboolean dclock_apply_configuration(gpointer user_data)
     /* Set up the icon or the label as the displayable widget. */
     if (dc->icon_only)
     {
-        if(lxpanel_image_set_icon_theme(dc->panel, dc->clock_icon, "clock") != FALSE) {
-            lxpanel_image_set_from_file(dc->panel, dc->clock_icon, PACKAGE_DATA_DIR "/images/clock.png");
-        }
         gtk_widget_show(dc->clock_icon);
         gtk_widget_hide(dc->clock_label);
     }
@@ -429,12 +425,6 @@ static GtkWidget *dclock_configure(LXPanel *panel, GtkWidget *p)
         NULL);
 }
 
-/* Callback when panel configuration changes. */
-static void dclock_reconfigure(LXPanel *panel, GtkWidget *p)
-{
-    dclock_apply_configuration(p);
-}
-
 /* Plugin descriptor. */
 LXPanelPluginInit lxpanel_static_plugin_dclock = {
     .name = N_("Digital Clock"),
@@ -442,6 +432,5 @@ LXPanelPluginInit lxpanel_static_plugin_dclock = {
 
     .new_instance = dclock_constructor,
     .config = dclock_configure,
-    .reconfigure = dclock_reconfigure,
     .button_press_event = dclock_button_press_event
 };
index 765d064..e3bd1be 100644 (file)
@@ -125,7 +125,6 @@ static GtkWidget *deskno_constructor(LXPanel *panel, config_setting_t *settings)
     /* Allocate top level widget and set into Plugin widget pointer. */
     p = gtk_event_box_new();
     lxpanel_plugin_set_data(p, dc, deskno_destructor);
-    gtk_container_set_border_width(GTK_CONTAINER (p), 1);
 
     /* Allocate label widget and add to top level. */
     dc->label = gtk_label_new(NULL);
index b07a815..125b5e1 100644 (file)
@@ -279,7 +279,6 @@ static GtkWidget *dirmenu_constructor(LXPanel *panel, config_setting_t *settings
                             ((dm->image != NULL) ? dm->image : "file-manager"),
                             NULL, "Temp");
     lxpanel_plugin_set_data(p, dm, dirmenu_destructor);
-    gtk_container_set_border_width(GTK_CONTAINER(p), 0);
 
     /* Initialize the widget. */
     dirmenu_apply_configuration(p);
@@ -304,20 +303,6 @@ static void dirmenu_destructor(gpointer user_data)
     g_free(dm);
 }
 
-/* Recursively apply a configuration change. */
-static void dirmenu_apply_configuration_to_children(GtkWidget * w, DirMenuPlugin * dm)
-{
-    if (GTK_IS_CONTAINER(w))
-        gtk_container_foreach(GTK_CONTAINER(w), (GtkCallback) dirmenu_apply_configuration_to_children, (gpointer) dm);
-    else if (GTK_IS_LABEL(w))
-    {
-        if (dm->name == NULL)
-            gtk_label_set_text(GTK_LABEL(w), NULL);
-        else
-            lxpanel_draw_label_text(dm->panel, w, dm->name, FALSE, 1, TRUE);
-    }
-}
-
 /* Callback when the configuration dialog has recorded a configuration change. */
 static gboolean dirmenu_apply_configuration(gpointer user_data)
 {
@@ -339,11 +324,10 @@ static gboolean dirmenu_apply_configuration(gpointer user_data)
     config_group_set_string(dm->settings, "name", dm->name);
     config_group_set_string(dm->settings, "image", dm->image);
 
-    lxpanel_button_set_icon(p, ((dm->image != NULL) ? dm->image : "file-manager"),
-                            panel_get_icon_size(dm->panel));
+    lxpanel_button_set_icon(p, ((dm->image != NULL) ? dm->image : "file-manager"), -1);
+    lxpanel_button_set_label(p, dm->name);
 
     gtk_widget_set_tooltip_text(p, dm->path);
-    gtk_container_foreach(GTK_CONTAINER(p), (GtkCallback) dirmenu_apply_configuration_to_children, (gpointer) dm);
     return FALSE;
 }
 
@@ -359,12 +343,6 @@ static GtkWidget *dirmenu_configure(LXPanel *panel, GtkWidget *p)
         NULL);
 }
 
-/* Callback when panel configuration changes. */
-static void dirmenu_panel_configuration_changed(LXPanel *panel, GtkWidget *p)
-{
-    dirmenu_apply_configuration(p);
-}
-
 /* Plugin descriptor. */
 LXPanelPluginInit lxpanel_static_plugin_dirmenu = {
     .name = N_("Directory Menu"),
@@ -372,6 +350,5 @@ LXPanelPluginInit lxpanel_static_plugin_dirmenu = {
 
     .new_instance = dirmenu_constructor,
     .config = dirmenu_configure,
-    .reconfigure = dirmenu_panel_configuration_changed,
     .button_press_event = dirmenu_button_press_event
 };
index 4452828..34165e0 100644 (file)
@@ -21,6 +21,7 @@
 #endif
 
 #include "plugin.h"
+#include "misc.h"
 
 #include <gtk/gtk.h>
 #include <gdk/gdk.h>
@@ -45,24 +46,11 @@ static const char * off_icons_theme[] = {
     "scrllock-off"
 };
 
-static const char * on_icons[] = {
-    "capslock-on.png",
-    "numlock-on.png",
-    "scrllock-on.png"
-};
-
-static const char * off_icons[] = {
-    "capslock-off.png",
-    "numlock-off.png",
-    "scrllock-off.png"
-};
-
 static int xkb_event_base = 0;
 static int xkb_error_base = 0;
 
 /* Private context for keyboard LED plugin. */
 typedef struct {
-    LXPanel * panel;                           /* Back pointer to panel */
     config_setting_t *settings;
     GtkWidget *indicator_image[3];             /* Image for each indicator */
     unsigned int current_state;                        /* Current LED state, bit encoded */
@@ -73,27 +61,12 @@ static void kbled_update_image(KeyboardLEDPlugin * kl, int i, unsigned int state
 static void kbled_update_display(KeyboardLEDPlugin * kl, unsigned int state);
 static void kbled_destructor(gpointer user_data);
 
-static void kbled_theme_changed(GtkWidget * widget, KeyboardLEDPlugin * kl)
-{
-    /* Set orientation into the icon grid. */
-
-    /* Do a full redraw. */
-    int current_state = kl->current_state;
-    kl->current_state = ~ kl->current_state;
-    kbled_update_display(kl, current_state);
-}
-
 /* Update image to correspond to current state. */
 static void kbled_update_image(KeyboardLEDPlugin * kl, int i, unsigned int state)
 {
-    if(lxpanel_image_set_icon_theme(kl->panel, kl->indicator_image[i], (state ? on_icons_theme[i] : off_icons_theme[i])) != TRUE) {
-        char * file = g_build_filename(
-            PACKAGE_DATA_DIR "/images",
-            ((state) ? on_icons[i] : off_icons[i]),
-            NULL);
-        lxpanel_image_set_from_file(kl->panel, kl->indicator_image[i], file);
-        g_free(file);
-    }
+    lxpanel_image_change_icon(kl->indicator_image[i],
+                              (state ? on_icons_theme[i] : off_icons_theme[i]),
+                              NULL);
 }
 
 /* Redraw after Xkb event or initialization. */
@@ -137,7 +110,6 @@ static GtkWidget *kbled_constructor(LXPanel *panel, config_setting_t *settings)
     unsigned int current_state;
     Display *xdisplay = GDK_DISPLAY_XDISPLAY(gdk_display_get_default());
 
-    kl->panel = panel;
     kl->settings = settings;
     kl->visible[0] = FALSE;
     kl->visible[1] = TRUE;
@@ -157,13 +129,11 @@ static GtkWidget *kbled_constructor(LXPanel *panel, config_setting_t *settings)
                             panel_get_icon_size(panel),
                             0, 0, panel_get_height(panel));
     lxpanel_plugin_set_data(p, kl, kbled_destructor);
-    gtk_widget_add_events(p, GDK_BUTTON_PRESS_MASK);
-    g_signal_connect(panel_get_icon_theme(panel), "changed", G_CALLBACK(kbled_theme_changed), kl);
 
     /* Then allocate three images for the three indications, but make them visible only when the configuration requests. */
     for (i = 0; i < 3; i++)
     {
-        kl->indicator_image[i] = gtk_image_new();
+        kl->indicator_image[i] = lxpanel_image_new_for_icon(panel, off_icons_theme[i], -1, NULL);
         gtk_container_add(GTK_CONTAINER(p), kl->indicator_image[i]);
         gtk_widget_set_visible(kl->indicator_image[i], kl->visible[i]);
     }
@@ -202,8 +172,6 @@ static void kbled_destructor(gpointer user_data)
 
     /* Remove GDK event filter. */
     gdk_window_remove_filter(NULL, (GdkFilterFunc) kbled_event_filter, kl);
-    g_signal_handlers_disconnect_by_func(panel_get_icon_theme(kl->panel),
-                                         kbled_theme_changed, kl);
     g_free(kl);
 }
 
index fb0dd2a..ef816e4 100644 (file)
@@ -62,7 +62,7 @@
 #ifndef DISABLE_MENU
 # include "menu-policy.h"
 #endif
-
+#include "gtk-compat.h"
 
 #define PANEL_ICON_SIZE 24 /* see the private.h */
 
@@ -108,7 +108,8 @@ typedef struct _task {
     GtkWidget * image;                      /* Icon for task, child of button */
     Atom image_source;                      /* Atom that is the source of taskbar icon */
     GtkWidget * label;                      /* Label for task, child of button */
-    int desktop;                            /* Desktop that contains task, needed to switch to it on Raise */
+    GtkWidget * menu_item;                  /* Menu item for grouped task after click */
+    gint desktop;                           /* Desktop that contains task, needed to switch to it on Raise */
     gint monitor;                           /* Monitor that the window is on or closest to */
     guint flash_timeout;                    /* Timer for urgency notification */
     unsigned int focused                :1; /* True if window has focus */
@@ -117,19 +118,18 @@ typedef struct _task {
     unsigned int flash_state            :1; /* One-bit counter to flash taskbar */
     unsigned int entered_state          :1; /* True if cursor is inside taskbar button */
     unsigned int present_in_client_list :1; /* State during WM_CLIENT_LIST processing to detect deletions */
-} Task;
+} Task; /* FIXME: convert it into GtkWidget, eliminate button and menu_item */
 
 /* Representative of one launch button.
  * Note that the launch parameters come from the specified desktop file, or from the configuration file.
  * This structure is also used during the "add to launchtaskbar" dialog to hold menu items. */
 typedef struct {
     LaunchTaskBarPlugin * p;            /* Back pointer to plugin */
-    GtkWidget * widget;         /* Pointer to button */
-    GtkWidget * image_widget;   /* Pointer to image */
+    GtkWidget * widget;                 /* Pointer to button */
     FmFileInfo * fi;                    /* Launcher application descriptor */
     config_setting_t * settings;        /* Pointer to settings */
     FmDndDest * dd;                     /* Drag and drop support */
-} LaunchButton;
+} LaunchButton; /* FIXME: convert it into GtkWidget, button itself */
 
 /* Private context for taskbar plugin. */
 struct LaunchTaskBarPlugin {
@@ -137,7 +137,6 @@ struct LaunchTaskBarPlugin {
     GtkWidget *lb_icon_grid;         /* Icon grid managing the container */
     GSList        *buttons;          /* Launchbar buttons */
     LaunchButton  *bootstrap_button; /* Bootstrapping button for empty launchtaskbar */
-    FmIcon * add_icon;                  /* Icon for bootstrap_button */
     GtkWidget     *p_button_add, *p_button_remove, *p_label_menu_app_exec, *p_label_def_app_exec;
     /* TASKBAR */
     Task * p_task_list;            /* List of tasks to be displayed in taskbar */
@@ -163,6 +162,7 @@ struct LaunchTaskBarPlugin {
     gboolean flat_button;          /* User preference: taskbar buttons have visible background */
     gboolean grouped_tasks;        /* User preference: windows from same task are grouped onto a single button */
     gboolean same_monitor_only;    /* User preference: only show windows that are in the same monitor as the taskbar */
+    gboolean disable_taskbar_upscale; /* User preference: don't upscale taskbar icons */
     int task_width_max;            /* Maximum width of a taskbar button in horizontal orientation */
     int spacing;                   /* Spacing between taskbar buttons */
     gboolean use_net_active;       /* NET_WM_ACTIVE_WINDOW is supported by the window manager */
@@ -372,31 +372,21 @@ static void launchbutton_build_bootstrap(LaunchTaskBarPlugin *lb)
 {
     if(lb->bootstrap_button == NULL)
     {
-        GdkPixbuf * icon;
         /* Build a button that has the stock "Add" icon.
          * The "desktop-id" being NULL is the marker that this is the bootstrap button. */
         lb->bootstrap_button = g_new0(LaunchButton, 1);
         lb->bootstrap_button->p = lb;
 
         /* Create an event box. */
-        GtkWidget * event_box = gtk_event_box_new();
-        gtk_container_set_border_width(GTK_CONTAINER(event_box), 0);
-        gtk_widget_set_can_focus            (event_box, FALSE);
-        lb->bootstrap_button->widget = event_box;
-        g_signal_connect(event_box, "button-press-event", G_CALLBACK(launchbutton_press_event), lb->bootstrap_button);
-
-        /* Create an image containing the stock "Add" icon as a child of the event box. */
-        lb->add_icon = fm_icon_from_name(GTK_STOCK_ADD);
-        icon = fm_pixbuf_from_icon(lb->add_icon, lb->icon_size);
-        lb->bootstrap_button->image_widget = gtk_image_new_from_pixbuf(icon);
-        g_object_unref(icon);
-        gtk_misc_set_padding(GTK_MISC(lb->bootstrap_button->image_widget), 0, 0);
-        gtk_misc_set_alignment(GTK_MISC(lb->bootstrap_button->image_widget), 0, 0);
-        gtk_container_add(GTK_CONTAINER(event_box), lb->bootstrap_button->image_widget);
+        lb->bootstrap_button->widget = lxpanel_button_new_for_icon(lb->panel,
+                                                                   GTK_STOCK_ADD,
+                                                                   NULL, NULL);
+        g_signal_connect(lb->bootstrap_button->widget, "button-press-event",
+                         G_CALLBACK(launchbutton_press_event), lb->bootstrap_button);
 
         /* Add the bootstrap button to the icon grid.  By policy it is empty at this point. */
-        gtk_container_add(GTK_CONTAINER(lb->lb_icon_grid), event_box);
-        gtk_widget_show_all(event_box);
+        gtk_container_add(GTK_CONTAINER(lb->lb_icon_grid), lb->bootstrap_button->widget);
+        //plugin_widget_set_background(lb->bootstrap_button->widget, lb->panel);
     }
     else
         gtk_widget_show(lb->bootstrap_button->widget);
@@ -496,7 +486,6 @@ static LaunchButton *launchbutton_for_file_info(LaunchTaskBarPlugin * lb, FmFile
     button = lxpanel_button_new_for_fm_icon(lb->panel, fm_file_info_get_icon(fi),
                                             NULL, NULL);
     btn->widget = button;
-    gtk_widget_set_can_focus(button, FALSE);
 
     gtk_widget_set_tooltip_text(button, fm_file_info_get_disp_name(fi));
 
@@ -518,8 +507,7 @@ static LaunchButton *launchbutton_for_file_info(LaunchTaskBarPlugin * lb, FmFile
     lb->buttons = g_slist_append(lb->buttons, btn);
 
     /* Show the widget and return. */
-    gtk_widget_show(button);
-    plugin_widget_set_background(button, lb->panel);
+    //plugin_widget_set_background(button, lb->panel);
     return btn;
 }
 
@@ -716,6 +704,8 @@ static void launchtaskbar_constructor_task(LaunchTaskBarPlugin *ltbp)
             ltbp->show_all_desks = (tmp_int != 0);
         if (config_setting_lookup_int(s, "SameMonitorOnly", &tmp_int))
             ltbp->same_monitor_only = (tmp_int != 0);
+        if (config_setting_lookup_int(s, "DisableUpscale", &tmp_int))
+            ltbp->disable_taskbar_upscale = (tmp_int != 0);
         config_setting_lookup_int(s, "MaxTaskWidth", &ltbp->task_width_max);
         config_setting_lookup_int(s, "spacing", &ltbp->spacing);
         if (config_setting_lookup_int(s, "UseMouseWheel", &tmp_int))
@@ -734,7 +724,6 @@ static void launchtaskbar_constructor_task(LaunchTaskBarPlugin *ltbp)
                                                  panel_get_height(ltbp->panel));
         panel_icon_grid_set_constrain_width(PANEL_ICON_GRID(ltbp->tb_icon_grid), TRUE);
         gtk_box_pack_start(GTK_BOX(ltbp->plugin), ltbp->tb_icon_grid, TRUE, TRUE, 0);
-        gtk_container_set_border_width(GTK_CONTAINER(ltbp->tb_icon_grid), 0);
         taskbar_update_style(ltbp);
 
         /* Add GDK event filter. */
@@ -817,9 +806,6 @@ static GtkWidget *_launchtaskbar_constructor(LXPanel *panel, config_setting_t *s
                                              3, 0, panel_get_height(panel));
     gtk_box_pack_start(GTK_BOX(p), ltbp->lb_icon_grid, FALSE, TRUE, 0);
 
-    gtk_container_set_border_width(GTK_CONTAINER(p), 0);
-    gtk_container_set_border_width(GTK_CONTAINER(ltbp->lb_icon_grid), 0);
-
     /* Read parameters from the configuration file. */
     config_setting_lookup_int(settings, "LaunchTaskBarMode", &ltbp->mode);
     switch (ltbp->mode) {
@@ -857,9 +843,6 @@ static void launchtaskbar_destructor_launch(LaunchTaskBarPlugin *ltbp)
         launchbutton_free(ltbp->bootstrap_button);
         ltbp->bootstrap_button = NULL;
     }
-
-    if (ltbp->add_icon != NULL)
-        g_object_unref(ltbp->add_icon);
 }
 
 static void launchtaskbar_destructor_task(LaunchTaskBarPlugin *ltbp)
@@ -1207,6 +1190,15 @@ static void on_checkbutton_same_monitor_only_toggled(GtkToggleButton *p_togglebu
     taskbar_apply_configuration(ltbp);
 }
 
+static void on_checkbutton_disable_taskbar_upscale_toggled(GtkToggleButton *p_togglebutton, gpointer p_data)
+{
+    LaunchTaskBarPlugin *ltbp = (LaunchTaskBarPlugin *)p_data;
+    ltbp->disable_taskbar_upscale = gtk_toggle_button_get_active(p_togglebutton);
+    //g_print("\ntb->disable_taskbar_upscale upd\n");
+    config_group_set_int(ltbp->settings, "DisableUpscale", ltbp->disable_taskbar_upscale);
+    taskbar_apply_configuration(ltbp);
+}
+
 static void on_checkbutton_mouse_wheel_toggled(GtkToggleButton *p_togglebutton, gpointer p_data)
 {
     LaunchTaskBarPlugin *ltbp = (LaunchTaskBarPlugin *)p_data;
@@ -1319,6 +1311,8 @@ static void on_menu_view_row_activated(GtkTreeView *tree_view, GtkTreePath *path
     _launchbar_configure_add(tree_view, ltbp);
 }
 
+/* FIXME: add support for global hotkeys for launchers */
+
 /* Callback when the configuration dialog is to be shown. */
 static GtkWidget *launchtaskbar_configure(LXPanel *panel, GtkWidget *p)
 {
@@ -1388,7 +1382,15 @@ static GtkWidget *launchtaskbar_configure(LXPanel *panel, GtkWidget *p)
         SETUP_TOGGLE_BUTTON(checkbutton_mouse_wheel, use_mouse_wheel);
         SETUP_TOGGLE_BUTTON(checkbutton_urgency_hint, use_urgency_hint);
         SETUP_TOGGLE_BUTTON(checkbutton_grouped_tasks, grouped_tasks);
+        //SETUP_TOGGLE_BUTTON(checkbutton_disable_taskbar_upscale, disable_taskbar_upscale);
 #undef SETUP_TOGGLE_BUTTON
+        /* FIXME: for transitional period, turn into SETUP_TOGGLE_BUTTON later */
+        object = gtk_builder_get_object(builder, "checkbutton_disable_taskbar_upscale");
+        if (object)
+        {
+            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(object), ltbp->disable_taskbar_upscale); \
+            g_signal_connect(object, "toggled", G_CALLBACK(on_checkbutton_disable_taskbar_upscale_toggled), ltbp);
+        }
 
 #define SETUP_SPIN_BUTTON(button,member) \
         object = gtk_builder_get_object(builder, #button); \
@@ -1441,25 +1443,10 @@ static void launchtaskbar_panel_configuration_changed(LXPanel *panel, GtkWidget
                                      new_icon_size, new_icon_size, 3, 0,
                                      panel_get_height(panel));
 
-    /* Reset the bootstrap button. */
-    if (ltbp->bootstrap_button != NULL)
-    {
-        GdkPixbuf * icon = fm_pixbuf_from_icon(ltbp->add_icon, new_icon_size);
-        gtk_image_set_from_pixbuf(GTK_IMAGE(ltbp->bootstrap_button->image_widget), icon);
-        g_object_unref(icon);
-    }
-
-    if (ltbp->tb_built)
-    {
-        taskbar_update_style(ltbp);
-        taskbar_make_menu(ltbp);
-    }
-
     /* If the icon size changed, refetch all the icons. */
     if (new_icon_size != ltbp->icon_size)
     {
         Task * tk;
-        GSList * l;
         ltbp->icon_size = new_icon_size;
         for (tk = ltbp->p_task_list; tk != NULL; tk = tk->p_task_flink_xwid)
         {
@@ -1470,18 +1457,15 @@ static void launchtaskbar_panel_configuration_changed(LXPanel *panel, GtkWidget
                 g_object_unref(pixbuf);
             }
         }
-        for (l = ltbp->buttons; l != NULL; l = l->next)
-        {
-            LaunchButton * btn = (LaunchButton *) l->data;
-            lxpanel_button_update_icon(btn->widget, fm_file_info_get_icon(btn->fi),
-                                       new_icon_size);
-        }
-
     }
 
     /* Redraw all the labels.  Icon size or font color may have changed. */
     if (ltbp->tb_built)
+    {
+        taskbar_update_style(ltbp);
+        taskbar_make_menu(ltbp);
         taskbar_redraw(ltbp);
+    }
 }
 
 /* Set an urgency timer on a task. */
@@ -1490,13 +1474,13 @@ static void set_timer_on_task(Task * tk)
     gint interval;
     g_return_if_fail(tk->flash_timeout == 0);
     g_object_get(gtk_widget_get_settings(tk->button), "gtk-cursor-blink-time", &interval, NULL);
-    tk->flash_timeout = g_timeout_add(interval, flash_window_timeout, tk);
+    tk->flash_timeout = g_timeout_add(interval / 2, flash_window_timeout, tk);
 }
 
 /* Determine if a task is visible considering only its desktop placement. */
 static gboolean task_is_visible_on_current_desktop(LaunchTaskBarPlugin * tb, Task * tk)
 {
-    return ((tk->desktop == ALL_WORKSPACES) || (tk->desktop == tb->current_desktop) || (tb->show_all_desks));
+    return ((tk->desktop == ALL_WORKSPACES) || (tk->desktop == tb->current_desktop) || (tb->show_all_desks) || (tk->urgency));
 }
 
 /* Recompute the visible task for a class when the class membership changes.
@@ -1519,7 +1503,7 @@ static void recompute_group_visibility_for_class(LaunchTaskBarPlugin * tb, TaskC
             tc->visible_count += 1;
 
             /* Compute summary bit for urgency anywhere in the class. */
-            if (tk->urgency)
+            if (tk->urgency && !tk->focused)
                 class_has_urgency = TRUE;
 
             /* If there is urgency, record the currently flashing task. */
@@ -1558,6 +1542,10 @@ static void recompute_group_visibility_for_class(LaunchTaskBarPlugin * tb, TaskC
             flashing_task->flash_timeout = 0;
             tc->p_task_visible->flash_state = flashing_task->flash_state;
             flashing_task->flash_state = FALSE;
+            if (tc->p_task_visible->menu_item != NULL)
+                g_object_unref(tc->p_task_visible->menu_item);
+            tc->p_task_visible->menu_item = flashing_task->menu_item;
+            flashing_task->menu_item = NULL;
             set_timer_on_task(tc->p_task_visible);
         }
     }
@@ -1616,7 +1604,8 @@ static gboolean task_is_visible(LaunchTaskBarPlugin * tb, Task * tk)
         return FALSE;
 
     /* Not on same monitor */
-    if (tb->same_monitor_only && panel_get_monitor(tb->panel) != tk->monitor)
+    if (tb->same_monitor_only && panel_get_monitor(tb->panel) != tk->monitor
+        && panel_get_monitor(tb->panel) >= 0)
         return FALSE;
 
     /* Desktop placement. */
@@ -1874,6 +1863,12 @@ static void task_delete(LaunchTaskBarPlugin * tb, Task * tk, gboolean unlink, gb
         tk->flash_timeout = 0;
     }
 
+    if (tk->menu_item)
+    {
+        g_object_unref(tk->menu_item);
+        tk->menu_item = NULL;
+    }
+
     /* Deallocate structures. */
     if (remove)
     {
@@ -1936,20 +1931,12 @@ static GdkPixbuf * _wnck_gdk_pixbuf_get_from_pixmap(Pixmap xpixmap, int width, i
             colormap = NULL;
         else
         {
-#if GTK_CHECK_VERSION(2, 24, 0)
             colormap = gdk_screen_get_system_colormap(gdk_window_get_screen(drawable));
-#else
-            colormap = gdk_screen_get_system_colormap(gdk_drawable_get_screen(drawable));
-#endif
             g_object_ref(G_OBJECT(colormap));
         }
 
         /* Be sure we aren't going to fail due to visual mismatch. */
-#if GTK_CHECK_VERSION(2,22,0)
         if ((colormap != NULL) && (gdk_visual_get_depth(gdk_colormap_get_visual(colormap)) != depth))
-#else
-        if ((colormap != NULL) && (gdk_colormap_get_visual(colormap)->depth != depth))
-#endif
         {
             g_object_unref(G_OBJECT(colormap));
             colormap = NULL;
@@ -1999,7 +1986,9 @@ static GdkPixbuf * apply_mask(GdkPixbuf * pixbuf, GdkPixbuf * mask)
 }
 
 /* Get an icon from the window manager for a task, and scale it to a specified size. */
-static GdkPixbuf * get_wm_icon(Window task_win, guint required_width, guint required_height, Atom source, Atom * current_source)
+static GdkPixbuf * get_wm_icon(Window task_win, guint required_width,
+                               guint required_height, Atom source,
+                               Atom * current_source, LaunchTaskBarPlugin * tb)
 {
     /* The result. */
     GdkPixbuf * pixmap = NULL;
@@ -2239,9 +2228,21 @@ static GdkPixbuf * get_wm_icon(Window task_win, guint required_width, guint requ
         return NULL;
     else
     {
-        GdkPixbuf * ret = gdk_pixbuf_scale_simple(pixmap, required_width, required_height, GDK_INTERP_TILES);
-        g_object_unref(pixmap);
+        GdkPixbuf * ret;
+
         *current_source = possible_source;
+        if (tb->disable_taskbar_upscale)
+        {
+            guint w = gdk_pixbuf_get_width (pixmap);
+            guint h = gdk_pixbuf_get_height (pixmap);
+            if (w <= required_width || h <= required_height)
+            {
+                return pixmap;
+            }
+        }
+        ret = gdk_pixbuf_scale_simple(pixmap, required_width, required_height,
+                                      GDK_INTERP_BILINEAR);
+        g_object_unref(pixmap);
         return ret;
     }
 }
@@ -2252,7 +2253,7 @@ static GdkPixbuf * task_update_icon(LaunchTaskBarPlugin * tb, Task * tk, Atom so
     /* Get the icon from the window's hints. */
     GdkPixbuf * pixbuf = get_wm_icon(tk->win, MAX(0, tb->icon_size - ICON_BUTTON_TRIM),
                                      MAX(0, tb->icon_size - ICON_BUTTON_TRIM),
-                                     source, &tk->image_source);
+                                     source, &tk->image_source, tb);
 
     /* If that fails, and we have no other icon yet, return the fallback icon. */
     if ((pixbuf == NULL)
@@ -2276,6 +2277,9 @@ static void flash_window_update(Task * tk)
     if ( ! tk->tb->flat_button)
         gtk_widget_set_state(tk->button, tk->flash_state ? GTK_STATE_SELECTED : GTK_STATE_NORMAL);
     task_draw_label(tk);
+    if (tk->menu_item != NULL && gtk_widget_get_mapped(tk->menu_item))
+        /* if submenu exists and mapped then set state too */
+        gtk_widget_set_state(tk->menu_item, tk->flash_state ? GTK_STATE_SELECTED : GTK_STATE_NORMAL);
 
     /* Complement the flashing context. */
     tk->flash_state = ! tk->flash_state;
@@ -2323,6 +2327,11 @@ static void task_clear_urgency(Task * tk)
             g_source_remove(tk->flash_timeout);
             tk->flash_timeout = 0;
         }
+        if (tk->menu_item)
+        {
+            g_object_unref(tk->menu_item);
+            tk->menu_item = NULL;
+        }
 
         /* Clear the flashing context and unflash the window immediately. */
         tk->flash_state = FALSE;
@@ -2434,6 +2443,7 @@ static gboolean taskbar_task_control_event(GtkWidget * widget, GdkEventButton *
             menu = gtk_menu_new();
             /* Bring up a popup menu listing all the class members. */
             Task * tk_cursor;
+            GtkWidget * flashing_menu = NULL;
             for (tk_cursor = tc->p_task_head; tk_cursor != NULL;
                     tk_cursor = tk_cursor->p_task_flink_same_class)
             {
@@ -2449,8 +2459,18 @@ static gboolean taskbar_task_control_event(GtkWidget * widget, GdkEventButton *
                     g_signal_connect(mi, "button-press-event",
                             G_CALLBACK(taskbar_popup_activate_event), (gpointer) tk_cursor);
                     gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
+                    /* set mi as if it's urgent with reference */
+                    if (tk_cursor->menu_item != NULL)
+                        g_object_unref(tk_cursor->menu_item);
+                    tk_cursor->menu_item = NULL;
+                    if (tk_cursor->urgency && !tk_cursor->focused && flashing_menu == NULL)
+                        flashing_menu = g_object_ref_sink(mi);
                 }
             }
+            /* since tc->visible_count > 1, tc->p_task_visible cannot be NULL */
+            g_assert(tc->p_task_visible != NULL);
+            g_assert(tc->p_task_visible->menu_item == NULL);
+            tc->p_task_visible->menu_item = flashing_menu;
         }
         else if(event->button == 3) /* Right click */
         {
@@ -2686,19 +2706,11 @@ static gboolean taskbar_button_scroll_event(GtkWidget * widget, GdkEventScroll *
 /* Handler for "size-allocate" event from taskbar button. */
 static void taskbar_button_size_allocate(GtkWidget * btn, GtkAllocation * alloc, Task * tk)
 {
-#if GTK_CHECK_VERSION(2, 20, 0)
     if (gtk_widget_get_realized(btn))
-#else
-    if (GTK_WIDGET_REALIZED(btn))
-#endif
     {
         /* Get the coordinates of the button. */
         int x, y;
-#if GTK_CHECK_VERSION(2,22,0)
         gdk_window_get_origin(gtk_button_get_event_window(GTK_BUTTON(btn)), &x, &y);
-#else
-        gdk_window_get_origin(GTK_BUTTON(btn)->event_window, &x, &y);
-#endif
 
 
         /* Send a NET_WM_ICON_GEOMETRY property change on the window. */
@@ -2823,7 +2835,7 @@ static void task_build_gui(LaunchTaskBarPlugin * tb, Task * tk)
     task_update_style(tk, tb);
 
     /* Flash button for window with urgency hint. */
-    if (tk->urgency)
+    if (tk->urgency && !tk->focused)
         task_set_urgency(tk);
 }
 
@@ -3023,6 +3035,8 @@ static void taskbar_net_active_window(GtkWidget * widget, LaunchTaskBarPlugin *
     if ((ctk != NULL) && (drop_old))
     {
         ctk->focused = FALSE;
+        if (ctk->urgency)
+            task_set_urgency(ctk);
         tb->focused = NULL;
         if(!tb->flat_button) /* relieve the button if flat buttons is not used. */
             gtk_toggle_button_set_active((GtkToggleButton*)ctk->button, FALSE);
@@ -3036,6 +3050,8 @@ static void taskbar_net_active_window(GtkWidget * widget, LaunchTaskBarPlugin *
         if(!tb->flat_button) /* depress the button if flat buttons is not used. */
             gtk_toggle_button_set_active((GtkToggleButton*)ntk->button, TRUE);
         ntk->focused = TRUE;
+        if (ntk->urgency)
+            task_clear_urgency(ntk);
         tb->focused = ntk;
         task_button_redraw(ntk, tb);
     }
@@ -3120,7 +3136,7 @@ static void taskbar_property_notify_event(LaunchTaskBarPlugin *tb, XEvent *ev)
                     if (tb->use_urgency_hint)
                     {
                         tk->urgency = task_has_urgency(tk);
-                        if (tk->urgency)
+                        if (tk->urgency && !tk->focused)
                             task_set_urgency(tk);
                         else
                             task_clear_urgency(tk);
@@ -3346,6 +3362,8 @@ static void taskbar_make_menu(LaunchTaskBarPlugin * tb)
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
     g_signal_connect(G_OBJECT(mi), "activate", (GCallback) menu_iconify_window, tb);
 
+    /* FIXME: if WM is Openbox then add "Window special parameters" submenu */
+
     /* If multiple desktops are supported, add menu items to select them. */
     if (tb->number_of_desktops > 1)
     {
@@ -3387,6 +3405,8 @@ static void taskbar_make_menu(LaunchTaskBarPlugin * tb)
         g_signal_connect(mi, "activate", G_CALLBACK(menu_move_to_workspace), tb);
         gtk_menu_shell_append(GTK_MENU_SHELL(workspace_menu), mi);
 
+        /* FIXME: add "Current workspace" item, active if not on a current */
+
         /* Add Move to Workspace menu item as a submenu. */
         mi = gtk_menu_item_new_with_mnemonic(_("_Move to Workspace"));
         gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
index 75163cd..dd738f8 100644 (file)
@@ -40,6 +40,7 @@
 #include "menu-policy.h"
 
 #include "dbg.h"
+#include "gtk-compat.h"
 
 /* support for libmenu-cache 0.4.x */
 #ifndef MENU_CACHE_CHECK_VERSION
@@ -63,7 +64,6 @@
 typedef struct {
     GtkWidget *menu, *box, *img, *label;
     char *fname, *caption;
-    gulong handler_id;
     int iconsize;
     gboolean has_system_menu;
     guint show_system_menu_idle;
@@ -80,9 +80,6 @@ static guint idle_loader = 0;
 
 GQuark SYS_MENU_ITEM_ID = 0;
 
-/* FIXME: this is defined in misc.c and should be replaced later */
-GtkWidget *_gtk_image_new_from_file_scaled(const gchar *file, gint width,
-                                           gint height, gboolean keep_ratio);
 /* FIXME: those are defined on panel main code */
 void restart(void);
 void gtk_run(void);
@@ -110,7 +107,6 @@ menu_destructor(gpointer user_data)
     if (m->show_system_menu_idle)
         g_source_remove(m->show_system_menu_idle);
 
-    /* g_signal_handler_disconnect(G_OBJECT(m->img), m->handler_id); */
     g_signal_handlers_disconnect_matched(m->ds, G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
                                          on_data_get, NULL);
     g_object_unref(G_OBJECT(m->ds));
@@ -150,44 +146,9 @@ run_command(GtkWidget *widget, void (*cmd)(void))
 static void
 menu_pos(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, GtkWidget *widget)
 {
-    int ox, oy, w, h;
-    menup *m;
-    GtkAllocation allocation;
-
-    gtk_widget_get_allocation(GTK_WIDGET(widget), &allocation);
-    ENTER;
-    m = g_object_get_data(G_OBJECT(widget), "plugin");
-    gdk_window_get_origin(gtk_widget_get_window(widget), &ox, &oy);
-#if GTK_CHECK_VERSION(2,20,0)
-    GtkRequisition requisition;
-    gtk_widget_get_requisition(GTK_WIDGET(menu), &requisition);
-    w = requisition.width;
-    h = requisition.height;
-
-#else
-    w = GTK_WIDGET(menu)->requisition.width;
-    h = GTK_WIDGET(menu)->requisition.height;
-#endif
-    if (panel_get_orientation(m->panel) == GTK_ORIENTATION_HORIZONTAL) {
-        *x = ox;
-        if (*x + w > gdk_screen_width())
-            *x = ox + allocation.width - w;
-        *y = oy - h;
-        if (*y < 0)
-            *y = oy + allocation.height;
-    } else {
-        *x = ox + allocation.width;
-        if (*x > gdk_screen_width())
-            *x = ox - w;
-        *y = oy;
-        if (*y + h >  gdk_screen_height())
-            *y = oy + allocation.height - h;
-    }
-    DBG("widget: x,y=%d,%d  w,h=%d,%d\n", ox, oy,
-          allocation.width, allocation.height );
-    DBG("w-h %d %d\n", w, h);
+    menup *m = lxpanel_plugin_get_data(widget);
+    lxpanel_plugin_popup_set_position_helper(m->panel, widget, GTK_WIDGET(menu), x, y);
     *push_in = TRUE;
-    RET();
 }
 
 static void on_menu_item( GtkMenuItem* mi, menup* m )
@@ -325,11 +286,7 @@ static void restore_grabs(GtkWidget *w, gpointer data)
 
         while (tmp)
         {
-#if GTK_CHECK_VERSION(2, 24, 0)
             if (!gtk_widget_get_mapped(tmp))
-#else
-            if (!GTK_WIDGET_MAPPED (tmp))
-#endif
             {
                 viewable = FALSE;
                 break;
@@ -562,11 +519,7 @@ static void _unload_old_icons(GtkMenu* menu, GtkIconTheme* theme, menup* m)
             {
                img = GTK_IMAGE(gtk_image_menu_item_get_image(GTK_IMAGE_MENU_ITEM(item)));
                 gtk_image_clear(img);
-#if GTK_CHECK_VERSION(2, 24, 0)
                 if (gtk_widget_get_mapped(GTK_WIDGET(img)))
-#else
-                if( GTK_WIDGET_MAPPED(img) )
-#endif
                    on_menu_item_map(GTK_WIDGET(item), m);
             }
         }
@@ -669,16 +622,13 @@ static void show_menu( GtkWidget* widget, menup* m, int btn, guint32 time )
 }
 
 static gboolean
-my_button_pressed(GtkWidget *widget, GdkEventButton *event, menup *m)
+menu_button_press_event(GtkWidget * widget, GdkEventButton * event, LXPanel * panel)
 {
     ENTER;
-    GtkAllocation allocation;
-    gtk_widget_get_allocation(GTK_WIDGET(widget), &allocation);
 
-    if ((event->type == GDK_BUTTON_PRESS) && event->button == 1
-          && (event->x >=0 && event->x < allocation.width)
-          && (event->y >=0 && event->y < allocation.height)) {
-        show_menu( widget, m, event->button, event->time );
+    if (event->button == 1)
+    {
+        show_menu( widget, lxpanel_plugin_get_data(widget), event->button, event->time );
         RET(TRUE);
     }
     RET(FALSE);
@@ -689,7 +639,7 @@ static gboolean show_system_menu_idle(gpointer user_data)
     menup* m = (menup*)user_data;
     if (g_source_is_destroyed(g_main_current_source()))
         return FALSE;
-    show_menu( m->img, m, 0, GDK_CURRENT_TIME );
+    show_menu( m->box, m, 0, GDK_CURRENT_TIME );
     m->show_system_menu_idle = 0;
     return FALSE;
 }
@@ -736,12 +686,7 @@ make_button(menup *m, const gchar *fname, const gchar *name, GdkColor* tint, Gtk
         m->img = lxpanel_button_new_for_icon(m->panel, fname, tint, NULL);
     }
 
-    gtk_widget_show(m->img);
-    gtk_box_pack_start(GTK_BOX(m->box), m->img, TRUE, FALSE, 0);
-
-    m->handler_id = g_signal_connect (G_OBJECT (m->img), "button-press-event",
-          G_CALLBACK (my_button_pressed), m);
-    g_object_set_data(G_OBJECT(m->img), "plugin", m);
+    gtk_container_add(GTK_CONTAINER(m->box), m->img);
 
     m->ds = fm_dnd_src_new(NULL);
 
@@ -807,9 +752,8 @@ read_item(menup *m, config_setting_t *s)
     if (fname) {
         GtkWidget *img;
 
-        /* FIXME: use FmIcon cache and fm_pixbuf_from_icon() API */
         tmp = expand_tilda(fname);
-        img = _gtk_image_new_from_file_scaled(tmp, m->iconsize, m->iconsize, TRUE);
+        img = lxpanel_image_new_for_icon(m->panel, tmp, m->iconsize, NULL);
         gtk_widget_show(img);
         gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
         g_free(tmp);
@@ -945,8 +889,7 @@ read_submenu(menup *m, config_setting_t *s, gboolean as_item)
         if (fname) {
             GtkWidget *img;
             char *expanded = expand_tilda(fname);
-            /* FIXME: use FmIcon cache and fm_pixbuf_from_icon() API */
-            img = _gtk_image_new_from_file_scaled(expanded, m->iconsize, m->iconsize, TRUE);
+            img = lxpanel_image_new_for_icon(m->panel, expanded, m->iconsize, NULL);
             gtk_widget_show(img);
             gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
             g_free(expanded);
@@ -979,9 +922,9 @@ menu_constructor(LXPanel *panel, config_setting_t *settings)
     gtk_icon_size_lookup( GTK_ICON_SIZE_MENU, &iw, &ih );
     m->iconsize = MAX(iw, ih);
 
-    m->box = gtk_vbox_new(TRUE, 0);
+    m->box = gtk_event_box_new();
+    gtk_widget_set_has_window(m->box, FALSE);
     lxpanel_plugin_set_data(m->box, m, menu_destructor);
-    gtk_container_set_border_width(GTK_CONTAINER(m->box), 0);
 
     /* Save construction pointers */
     m->panel = panel;
@@ -1009,6 +952,7 @@ menu_constructor(LXPanel *panel, config_setting_t *settings)
         return NULL;
     }
 
+    /* FIXME: allow bind a global key to toggle menu using libkeybinder */
     return m->box;
 }
 
@@ -1018,9 +962,10 @@ static gboolean apply_config(gpointer user_data)
     menup* m = lxpanel_plugin_get_data(p);
 
     if( m->fname ) {
-        lxpanel_button_set_icon(m->img, m->fname, panel_get_icon_size(m->panel));
+        lxpanel_button_set_icon(m->img, m->fname, -1);
     }
     config_group_set_string(m->settings, "image", m->fname);
+    /* config_group_set_int(m->settings, "panelSize", m->match_panel); */
     config_group_set_string(m->settings, "name", m->caption);
     return FALSE;
 }
@@ -1030,23 +975,18 @@ static GtkWidget *menu_config(LXPanel *panel, GtkWidget *p)
     menup* menu = lxpanel_plugin_get_data(p);
     return lxpanel_generic_config_dlg(_("Menu"), panel, apply_config, p,
                                       _("Icon"), &menu->fname, CONF_TYPE_FILE_ENTRY,
+                                      /* _("Use panel size as icon size"), &menu->match_panel, CONF_TYPE_INT, */
                                       /* _("Caption"), &menu->caption, CONF_TYPE_STR, */
                                       NULL);
 }
 
-/* Callback when panel configuration changes. */
-static void menu_panel_configuration_changed(LXPanel *panel, GtkWidget *p)
-{
-    apply_config(p);
-}
-
 LXPanelPluginInit lxpanel_static_plugin_menu = {
     .name = N_("Menu"),
     .description = N_("Application Menu"),
 
     .new_instance = menu_constructor,
     .config = menu_config,
-    .reconfigure = menu_panel_configuration_changed,
+    .button_press_event = menu_button_press_event,
     .show_system_menu = show_system_menu
 };
 
index ccf8395..f491bf3 100644 (file)
@@ -619,7 +619,6 @@ monitors_constructor(LXPanel *panel, config_setting_t *settings)
 
     p = gtk_hbox_new(TRUE, 2);
     lxpanel_plugin_set_data(p, mp, monitors_destructor);
-    gtk_container_set_border_width(GTK_CONTAINER(p), 1);
 
     /* First time we use this plugin : only display CPU usage */
     mp->displayed_monitors[CPU_POSITION] = 1;
index f1fb809..c712e87 100644 (file)
@@ -35,6 +35,7 @@
 #include "devproc.h"
 #include "wireless.h"
 #include "plugin.h"
+#include "misc.h"
 #include "dbg.h"
 
 /* 1 second */
@@ -169,7 +170,7 @@ wireless_menu(netdev_info *ni)
 
             /* Encryption */
             if (aps->apinfo->haskey) {
-                lockicon = gtk_image_new_from_file(ICONS_WL_LOCK);
+                lockicon = lxpanel_image_new_for_icon(NULL, ICONS_WL_LOCK, 18, NULL);
                 gtk_box_pack_start(GTK_BOX(item_box), lockicon, FALSE, FALSE, 0);
             }
 
@@ -226,15 +227,17 @@ static gint menupopup(GtkWidget *widget, GdkEvent *event, netdev_info *ni)
 
     g_return_val_if_fail (event != NULL, FALSE);
 
-    if (event->type == GDK_BUTTON_PRESS) {
+//    if (event->type == GDK_BUTTON_PRESS) {
         event_button = (GdkEventButton *) event;
-        if (event_button->button == 1) {
+    if (event->type == GDK_BUTTON_PRESS && event_button->button == 1) {
+//        if (event_button->button == 1) {
             /* wireless device */
             if (ni->netdev_list->info.wireless) {
                 gtk_menu_popup(GTK_MENU(wireless_menu(ni)), NULL, NULL, NULL, NULL, event_button->button, event_button->time);
-            }
+//            }
             return TRUE;
-        } else if (event_button->button == 3) {
+        } else {
+//        } else if (event_button->button == 3) {
             GtkWidget *menu;
             GtkWidget *menu_item;
 
@@ -323,6 +326,7 @@ static void refresh_systray(netstat *ns, NETDEVLIST_PTR netdev_list)
 {
     NETDEVLIST_PTR ptr;
     char *tooltip;
+    const char *icon, *theme_icon;
 
     if (netdev_list==NULL) {
         return;
@@ -375,6 +379,11 @@ static void refresh_systray(netstat *ns, NETDEVLIST_PTR netdev_list)
                                                                 ptr->info.trans_bytes, ptr->info.recv_bytes, _("bytes"),
                                                                 ptr->info.trans_packets, ptr->info.recv_packets, _("packets"));
 
+            icon = select_icon(ptr->info.plug, ptr->info.connected, ptr->info.status);
+            if (ns->use_theme)
+                theme_icon = select_icon_theme(ptr->info.plug, ptr->info.connected, ptr->info.status);
+            else
+                theme_icon = icon;
             /* status icon doesn't exist  */
             if (ptr->info.status_icon==NULL) {
                 netdev_info *ni;
@@ -382,12 +391,12 @@ static void refresh_systray(netstat *ns, NETDEVLIST_PTR netdev_list)
                 ni->ns = ns;
                 ni->netdev_list = ptr;
 
-                ptr->info.status_icon = create_statusicon(ns->mainw, select_icon(ptr->info.plug, ptr->info.connected, ptr->info.status), tooltip, select_icon_theme(ptr->info.plug, ptr->info.connected, ptr->info.status));
+                ptr->info.status_icon = create_statusicon(ns->panel, ns->mainw, icon, tooltip, theme_icon);
                 g_signal_connect(ptr->info.status_icon->main, "button-press-event", G_CALLBACK(menupopup), ni);
                 g_object_weak_ref(G_OBJECT(ptr->info.status_icon->main), g_free_weaknotify, ni);
             } else {
                 set_statusicon_tooltips(ptr->info.status_icon, tooltip);
-                set_statusicon_image_from_file(ptr->info.status_icon, select_icon(ptr->info.plug, ptr->info.connected, ptr->info.status));
+                update_statusicon(ptr->info.status_icon, icon, theme_icon);
                 set_statusicon_visible(ptr->info.status_icon, TRUE);
             }
             g_free(tooltip);
@@ -433,14 +442,18 @@ static GtkWidget *netstat_constructor(LXPanel *panel, config_setting_t *settings
 {
     netstat *ns;
     const char *tmp;
+    int tmp_int;
     GtkWidget *p;
 
     ENTER;
     ns = g_new0(netstat, 1);
     g_return_val_if_fail(ns != NULL, NULL);
+    ns->panel = panel;
     /* apply config */
     if (config_setting_lookup_string(settings, "FixCommand", &tmp))
         ns->fixcmd = g_strdup(tmp);
+    if (config_setting_lookup_int(settings, "UseTheme", &tmp_int))
+        ns->use_theme = !!tmp_int;
 
     /* initializing */
     ns->fnetd = malloc(sizeof(FNETD));
index 78f07c8..cc001c1 100644 (file)
@@ -5,6 +5,7 @@
 #include <netinet/in.h>
 #include <gtk/gtk.h>
 #include "wireless.h"
+#include "plugin.h"
 
 #define NETDEV_STAT_NORMAL     0
 #define NETDEV_STAT_PROBLEM    1
@@ -70,9 +71,11 @@ typedef struct {
 
 typedef struct {
     GtkWidget *mainw;
+    LXPanel *panel;
     FNETD *fnetd;
     char *fixcmd;
     gint ttag;
+    gboolean use_theme;
 } netstat;
 
 typedef struct {
index 4c9b13f..53af548 100644 (file)
@@ -1,18 +1,18 @@
 #ifndef HAVE_NSCONFIG_H
 #define HAVE_NSCONFIG_H
 
-#define RESOURCE_DIR PACKAGE_DATA_DIR "/images"
-#define ICONS_CONNECTED                RESOURCE_DIR "/ns-connected.png"
-#define ICONS_DISCONNECT       RESOURCE_DIR "/ns-disconnect.png"
-#define ICONS_PROBLEM          RESOURCE_DIR "/ns-problem.png"
-#define ICONS_RENEW            RESOURCE_DIR "/ns-renew.png"
-#define ICONS_BOTHRS           RESOURCE_DIR "/ns-bothrs.png"
-#define ICONS_SENDDATA         RESOURCE_DIR "/ns-senddata.png"
-#define ICONS_RECVDATA         RESOURCE_DIR "/ns-recvdata.png"
-#define ICONS_WL_CONNECTED     RESOURCE_DIR "/ns-wlconnected.png"
-#define ICONS_WL_DISCONNECT    RESOURCE_DIR "/ns-wldisconnect.png"
-#define ICONS_WL_RENEW         RESOURCE_DIR "/ns-wlrenew.png"
-#define ICONS_WL_LOCK          RESOURCE_DIR "/ns-lock.png"
+/* Icon names in fallback theme path */
+#define ICONS_CONNECTED                "ns-connected"
+#define ICONS_DISCONNECT       "ns-disconnect"
+#define ICONS_PROBLEM          "ns-problem"
+#define ICONS_RENEW            "ns-renew"
+#define ICONS_BOTHRS           "ns-bothrs"
+#define ICONS_SENDDATA         "ns-senddata"
+#define ICONS_RECVDATA         "ns-recvdata"
+#define ICONS_WL_CONNECTED     "ns-wlconnected"
+#define ICONS_WL_DISCONNECT    "ns-wldisconnect"
+#define ICONS_WL_RENEW         "ns-wlrenew"
+#define ICONS_WL_LOCK          "ns-lock"
 
 /*Themed icon names*/
 #define ICONS_CONNECTED_THEME          "network-idle"
index ad9b87b..ba73150 100644 (file)
@@ -27,6 +27,7 @@
 #include "lxnm_client.h"
 #include "wireless.h"
 #include "passwd_gui.h"
+#include "gtk-compat.h"
 
 struct passwd_resp {
     ap_setting *aps;
index d3e0f14..0b4fa31 100644 (file)
 #include <glib/gi18n.h>
 #include "netstat.h"
 #include "statusicon.h"
+#include "misc.h"
 
-struct statusicon *create_statusicon(GtkWidget *box, const char *filename,
-        const char *tooltips, const char* icon_name)
+struct statusicon *create_statusicon(LXPanel *panel, GtkWidget *box,
+        const char *filename, const char *tooltips, const char* icon_name)
 {
     struct statusicon *newicon;
     newicon = malloc(sizeof(struct statusicon));
@@ -33,25 +34,12 @@ struct statusicon *create_statusicon(GtkWidget *box, const char *filename,
     newicon->main = gtk_event_box_new();
 
     gtk_widget_set_has_window(newicon->main, FALSE);
-    gtk_widget_add_events(newicon->main, GDK_BUTTON_PRESS_MASK);
-    gtk_widget_set_size_request(newicon->main, 24, 24);
+    //gtk_widget_set_size_request(newicon->main, 24, 24);
     gtk_box_pack_start(GTK_BOX(box), newicon->main, TRUE, TRUE, 0);
 
     /* icon */
+    newicon->icon = lxpanel_image_new_for_icon(panel, icon_name, -1, filename);
 
-    /*icon theme*/
-    GtkIconTheme* icon_theme = gtk_icon_theme_get_default();
-
-    /*if we've got a theme*/
-    if(gtk_icon_theme_has_icon(icon_theme, icon_name)) {
-        GdkPixbuf* temp_pixbuf = gtk_icon_theme_load_icon(icon_theme, icon_name, 24, 0, NULL);
-        newicon->icon = gtk_image_new_from_pixbuf(temp_pixbuf);
-    }
-
-    /* oh well...*/
-    else {
-        newicon->icon = gtk_image_new_from_file(filename);
-    }
     gtk_container_add(GTK_CONTAINER(newicon->main), newicon->icon);
     gtk_widget_show_all(newicon->main);
 
@@ -72,9 +60,10 @@ void statusicon_destroy(struct statusicon *icon)
 }
 
 
-void set_statusicon_image_from_file(struct statusicon *widget, const char *filename)
+//void set_statusicon_image_from_file(struct statusicon *widget, const char *filename)
+void update_statusicon(struct statusicon *widget, const char *filename, const char *icon_name)
 {
-    gtk_image_set_from_file(GTK_IMAGE(widget->icon), filename);
+    lxpanel_image_change_icon(widget->icon, icon_name, filename);
 }
 
 void set_statusicon_tooltips(struct statusicon *widget, const char *tooltips)
index 7ead050..a508096 100644 (file)
@@ -9,10 +9,12 @@ struct statusicon {
         GtkWidget *icon;
 };
 
-struct statusicon *create_statusicon(GtkWidget *box, const char *filename,
-               const char *tooltips, const char* icon_name);
+struct statusicon *create_statusicon(LXPanel *panel, GtkWidget *box,
+               const char *filename, const char *tooltips, const char* icon_name);
 void statusicon_destroy(struct statusicon *icon);
-void set_statusicon_image_from_file(struct statusicon *widget, const char *filename);
+void update_statusicon(struct statusicon *widget, const char *filename,
+               const char *icon_name);
+//void set_statusicon_image_from_file(struct statusicon *widget, const char *filename);
 void set_statusicon_tooltips(struct statusicon *widget, const char *tooltips);
 void set_statusicon_visible(struct statusicon *widget, gboolean b);
 
index b6f3c9f..979d6a8 100644 (file)
@@ -592,6 +592,30 @@ netstatus_dialog_setup_configure_button (NetstatusDialogData *data)
                            !netstatus_iface_get_is_loopback (data->iface));
 }
 
+#if !GTK_CHECK_VERSION(2, 24, 0)
+static void _combo_box_entry_active_changed (GtkComboBox *combo_box,
+                                             gpointer     user_data)
+{
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  gchar *str = NULL;
+
+  if (gtk_combo_box_get_active_iter (combo_box, &iter))
+    {
+      GtkEntry *entry = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_box)));
+
+      if (entry)
+        {
+          model = gtk_combo_box_get_model (combo_box);
+
+          gtk_tree_model_get (model, &iter, 0, &str, -1);
+          gtk_entry_set_text (entry, str);
+          g_free (str);
+        }
+    }
+}
+#endif
+
 static void
 netstatus_dialog_setup_connection (NetstatusDialogData *data)
 {
@@ -616,7 +640,18 @@ netstatus_dialog_setup_connection (NetstatusDialogData *data)
 #if GTK_CHECK_VERSION(2, 24, 0)
   gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(data->name), 0);
 #else
-  gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(data->name), 0);
+  /* emulate 2.24/GtkComboBoxEntry behavior */
+  GtkCellRenderer *text_renderer = gtk_cell_renderer_text_new ();
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (data->name),
+                              text_renderer, TRUE);
+
+  gtk_combo_box_set_active (GTK_COMBO_BOX (data->name), -1);
+
+  g_signal_connect (data->name, "changed",
+                    G_CALLBACK (_combo_box_entry_active_changed), NULL);
+
+  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (data->name),
+                                  text_renderer, "text", 0, NULL);
 #endif
   g_object_unref(model);
 
index 7746779..5e64689 100644 (file)
@@ -31,6 +31,8 @@
 #include "netstatus-enums.h"
 #include "netstatus-fallback-pixbuf.h"
 
+#include "gtk-compat.h"
+
 typedef enum
 {
   NETSTATUS_SIGNAL_0_24 = 0,
@@ -617,11 +619,7 @@ netstatus_icon_size_allocate (GtkWidget     *widget,
       netstatus_icon_scale_icons (icon, size);
     }
 
-#if GTK_CHECK_VERSION(2, 20, 0)
   if (gtk_widget_get_realized(widget))
-#else
-  if (GTK_WIDGET_REALIZED (widget))
-#endif
     {
       gdk_window_move_resize (window,
                               allocation->x + border_width,
index c5e9ed3..7d309dc 100644 (file)
 
 #include "plugin.h"
 
+typedef struct
+{
+    WnckPager *pager;
+    gint border;
+} PagerData;
+
 /* command to configure desktop, it will be set by .config callback */
 static const char *configure_command = NULL;
 
 static void on_realize(GtkWidget *p, LXPanel *panel)
 {
-    WnckPager *pager = WNCK_PAGER(gtk_bin_get_child(GTK_BIN(p)));
-    int rows, r, h = panel_get_height(panel);
+    PagerData *d = lxpanel_plugin_get_data(p);
+    int rows, r, h = panel_get_height(panel) - 2 * d->border;
 
     /* set geometry */
-    wnck_pager_set_orientation(pager, panel_get_orientation(panel));
+    wnck_pager_set_orientation(d->pager, panel_get_orientation(panel));
     if (panel_get_orientation(panel) == GTK_ORIENTATION_VERTICAL)
         h *= ((gfloat) gdk_screen_height() / (gfloat) gdk_screen_width());
     rows = h / (panel_get_icon_size(panel) * 2) + 1; /* min */
-    r = (h - 4) / panel_get_icon_size(panel); /* max */
+    r = (h - 2) / panel_get_icon_size(panel); /* max */
     /* g_debug("pager for height %d and icon size %d: %d to %d",panel_get_height(panel),panel_get_icon_size(panel),r,rows); */
     rows = MAX(rows, r);
-    wnck_pager_set_n_rows(pager, rows);
+    wnck_pager_set_n_rows(d->pager, rows);
 }
 
 static void on_size_allocate(GtkWidget *p, GdkRectangle *allocation, LXPanel *panel)
@@ -61,21 +67,36 @@ static void on_size_allocate(GtkWidget *p, GdkRectangle *allocation, LXPanel *pa
 static GtkWidget *pager_constructor(LXPanel *panel, config_setting_t *settings)
 {
     GtkWidget *p, *w;
+    PagerData *d;
     int border = 1; /* NOTE: old 'pager' used 2, WnckPager has 1, need 1 more */
 
     /* FIXME: use some global setting for border */
+#if GTK_CHECK_VERSION(3, 0, 0)
+    w = wnck_pager_new();
+#else
     w = wnck_pager_new(NULL);
-    g_return_val_if_fail(w != NULL, 0);
-    p = gtk_alignment_new(0, 0, 1.0, 1.0);
+#endif
+    g_return_val_if_fail(w != NULL, NULL);
+    d = g_new(PagerData, 1);
+    d->pager = WNCK_PAGER(w);
+    d->border = border;
+    p = gtk_event_box_new();
+    gtk_widget_set_has_window(p, FALSE);
+    lxpanel_plugin_set_data(p, d, g_free);
 
     /* we cannot configure pager until it added into widgets hierarchy */
     g_signal_connect(p, "realize", G_CALLBACK(on_realize), panel);
     g_signal_connect(p, "size-allocate", G_CALLBACK(on_size_allocate), panel);
-    wnck_pager_set_display_mode(WNCK_PAGER(w), WNCK_PAGER_DISPLAY_CONTENT);
+    wnck_pager_set_display_mode(d->pager, WNCK_PAGER_DISPLAY_CONTENT);
 
     gtk_widget_show(w);
 
-    gtk_alignment_set_padding(GTK_ALIGNMENT(p), border, border, border, border);
+    /* add an additional container to setup a border */
+    w = gtk_event_box_new();
+    gtk_widget_set_has_window(w, FALSE);
+    gtk_container_set_border_width(GTK_CONTAINER(w), border);
+    gtk_container_add(GTK_CONTAINER(w), (GtkWidget*)d->pager);
+    gtk_widget_show(w);
     gtk_container_add(GTK_CONTAINER(p), w);
 
     return p;
index b6ce9b3..0a7b792 100644 (file)
@@ -28,8 +28,6 @@ static GtkWidget *separator_constructor(LXPanel *panel, config_setting_t *settin
     /* Allocate top level widget and set into Plugin widget pointer. */
     instance = gtk_event_box_new();
     gtk_widget_set_has_window(instance, FALSE);
-    gtk_widget_add_events(instance, GDK_BUTTON_PRESS_MASK);
-    gtk_container_set_border_width(GTK_CONTAINER(instance), 1);
 
     /* Allocate separator as a child of top level. */
     sep = panel_separator_new(panel);
index 9433ae8..0202759 100644 (file)
@@ -53,8 +53,6 @@ static GtkWidget *space_constructor(LXPanel *panel, config_setting_t *settings)
     p = gtk_event_box_new();
     lxpanel_plugin_set_data(p, sp, g_free);
     gtk_widget_set_has_window(p,FALSE);
-    gtk_widget_add_events(p, GDK_BUTTON_PRESS_MASK);
-    gtk_container_set_border_width(GTK_CONTAINER(p), 0);
 
     /* Apply the configuration and show the widget. */
     space_apply_configuration(p);
index 905ea9f..839bf04 100644 (file)
@@ -220,13 +220,15 @@ static gint get_temperature(thermal *th, gint *warn)
     for(i = 0; i < th->numsensors; i++){
         cur = th->get_temperature[i](th->sensor_array[i]);
         if (w == 2) ; /* already warning2 */
-        else if (th->critical[i] > 0 && cur >= th->critical[i] - 5)
+        else if (th->not_custom_levels &&
+                 th->critical[i] > 0 && cur >= th->critical[i] - 5)
             w = 2;
         else if ((!th->not_custom_levels || th->critical[i] < 0) &&
                  cur >= th->warning2)
             w = 2;
         else if (w == 1) ; /* already warning1 */
-        else if (th->critical[i] > 0 && cur >= th->critical[i] - 10)
+        else if (th->not_custom_levels &&
+                 th->critical[i] > 0 && cur >= th->critical[i] - 10)
             w = 1;
         else if ((!th->not_custom_levels || th->critical[i] < 0) &&
                  cur >= th->warning1)
@@ -357,7 +359,6 @@ static gboolean try_hwmon_sensors(thermal* th, const char *path)
 
     if (!(sensorsDirectory = g_dir_open(path, 0, NULL)))
         return FALSE;
-    /* FIXME: do scanning hwmonX other than 0 */
 
     while ((sensor_name = g_dir_read_name(sensorsDirectory)))
     {
@@ -443,6 +444,7 @@ static gboolean applyConfig(gpointer p)
     if (th->str_cl_warning2) gdk_color_parse(th->str_cl_warning2, &th->cl_warning2);
 
     remove_all_sensors(th);
+    /* FIXME: support wildcards in th->sensor */
     if(th->sensor == NULL) th->auto_sensor = TRUE;
     if(th->auto_sensor) check_sensors(th);
     else if (strncmp(th->sensor, "/sys/", 5) != 0)
@@ -504,7 +506,6 @@ thermal_constructor(LXPanel *panel, config_setting_t *settings)
     p = gtk_event_box_new();
     lxpanel_plugin_set_data(p, th, thermal_destructor);
     gtk_widget_set_has_window(p, FALSE);
-    gtk_container_set_border_width( GTK_CONTAINER(p), 2 );
 
     th->namew = gtk_label_new("ww");
     gtk_container_add(GTK_CONTAINER(p), th->namew);
index ace9713..0b5a83b 100644 (file)
 #include "misc.h"
 #include "icon-grid.h"
 
+#if GTK_CHECK_VERSION(3, 0, 0)
+#include <gtk/gtkx.h>
+#endif
+
 /* Standards reference:  http://standards.freedesktop.org/systemtray-spec/ */
 
 /* Protocol constants. */
@@ -591,7 +595,7 @@ static GtkWidget *tray_constructor(LXPanel *panel, config_setting_t *settings)
         xev.format = 32;
         xev.data.l[0] = timestamp;
         xev.data.l[1] = selection_atom;
-        xev.data.l[2] = GDK_WINDOW_XWINDOW(gtk_widget_get_window(invisible));
+        xev.data.l[2] = GDK_WINDOW_XID(gtk_widget_get_window(invisible));
         xev.data.l[3] = 0;    /* manager specific data */
         xev.data.l[4] = 0;    /* manager specific data */
         XSendEvent(GDK_DISPLAY_XDISPLAY(display), RootWindowOfScreen(xscreen), False, StructureNotifyMask, (XEvent *) &xev);
@@ -601,7 +605,7 @@ static GtkWidget *tray_constructor(LXPanel *panel, config_setting_t *settings)
         gulong data = SYSTEM_TRAY_ORIENTATION_HORZ;
         XChangeProperty(
             GDK_DISPLAY_XDISPLAY(display),
-            GDK_WINDOW_XWINDOW(gtk_widget_get_window(invisible)),
+            GDK_WINDOW_XID(gtk_widget_get_window(invisible)),
             a_NET_SYSTEM_TRAY_ORIENTATION,
             XA_CARDINAL, 32,
             PropModeReplace,
@@ -622,7 +626,7 @@ static GtkWidget *tray_constructor(LXPanel *panel, config_setting_t *settings)
     gdk_window_add_filter(NULL, (GdkFilterFunc) tray_event_filter, tr);
     /* Reference the window since it is never added to a container. */
     tr->invisible = g_object_ref_sink(G_OBJECT(invisible));
-    tr->invisible_window = GDK_WINDOW_XWINDOW(gtk_widget_get_window(invisible));
+    tr->invisible_window = GDK_WINDOW_XID(gtk_widget_get_window(invisible));
 
     /* Allocate top level widget and set into Plugin widget pointer. */
     tr->plugin = p = panel_icon_grid_new(panel_get_orientation(panel),
@@ -631,7 +635,7 @@ static GtkWidget *tray_constructor(LXPanel *panel, config_setting_t *settings)
                                          3, 0, panel_get_height(panel));
     lxpanel_plugin_set_data(p, tr, tray_destructor);
     gtk_widget_set_name(p, "tray");
-    gtk_container_set_border_width(GTK_CONTAINER(p), 1);
+    panel_icon_grid_set_aspect_width(PANEL_ICON_GRID(p), TRUE);
 
     return p;
 }
index b45e60c..9a2f51e 100644 (file)
@@ -266,7 +266,6 @@ _error:
     lxpanel_plugin_set_data(p, vol, volume_destructor);
     vol->panel = panel;
 
-    gtk_widget_add_events(p, GDK_BUTTON_PRESS_MASK);
     g_signal_connect(p, "scroll-event", G_CALLBACK(on_mouse_scroll), vol);
     gtk_widget_set_size_request(p, panel_get_icon_size(panel), panel_get_icon_size(panel));
 
index 6a7b841..8bbce30 100644 (file)
@@ -16,6 +16,9 @@
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#define _ISOC99_SOURCE /* lrint() */
+#define _GNU_SOURCE /* exp10() */
+
 #include <gtk/gtk.h>
 #include <stdlib.h>
 #include <fcntl.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <alsa/asoundlib.h>
 #include <poll.h>
+#include <math.h>
 #include <libfm/fm-gtk.h>
 #include "plugin.h"
+#include "misc.h"
+
+#define ICONS_VOLUME_HIGH   "volume-high"
+#define ICONS_VOLUME_MEDIUM "volume-medium"
+#define ICONS_VOLUME_LOW    "volume-low"
+#define ICONS_MUTE          "mute"
+
+#ifdef __UCLIBC__
+/* 10^x = 10^(log e^x) = (e^x)^log10 = e^(x * log 10) */
+# define M_LN10                2.30258509299404568402  /* log_e 10 */
+#define exp10(x) (exp((x) * log(10)))
+#endif /* __UCLIBC__ */
 
-#define ICONS_VOLUME_HIGH   PACKAGE_DATA_DIR "/images/volume-high.png"
-#define ICONS_VOLUME_MEDIUM PACKAGE_DATA_DIR "/images/volume-medium.png"
-#define ICONS_VOLUME_LOW    PACKAGE_DATA_DIR "/images/volume-low.png"
-#define ICONS_MUTE          PACKAGE_DATA_DIR "/images/mute.png"
+#define MAX_LINEAR_DB_SCALE 24
 
 typedef struct {
 
@@ -53,6 +66,7 @@ typedef struct {
     snd_mixer_elem_t * master_element;         /* The Master element */
     guint mixer_evt_idle;                      /* Timer to handle restarting poll */
     guint restart_idle;
+    gint alsamixer_mapping;
 
     /* unloading and error handling */
     GIOChannel **channels;                      /* Channels that we listen to */
@@ -60,7 +74,6 @@ typedef struct {
     guint num_channels;                         /* Number of channels */
 
     /* Icons */
-    const char* icon;
     const char* icon_panel;
     const char* icon_fallback;
 
@@ -196,7 +209,8 @@ static gboolean asound_initialize(VolumeALSAPlugin * vol)
                     return FALSE;
 
     /* Set the playback volume range as we wish it. */
-    snd_mixer_selem_set_playback_volume_range(vol->master_element, 0, 100);
+    if ( ! vol->alsamixer_mapping)
+        snd_mixer_selem_set_playback_volume_range(vol->master_element, 0, 100);
 
     /* Listen to events from ALSA. */
     int n_fds = snd_mixer_poll_descriptors_count(vol->mixer);
@@ -260,111 +274,203 @@ static gboolean asound_is_muted(VolumeALSAPlugin * vol)
     return (value == 0);
 }
 
+static long lrint_dir(double x, int dir)
+{
+    if (dir > 0)
+        return lrint(ceil(x));
+    else if (dir < 0)
+        return lrint(floor(x));
+    else
+        return lrint(x);
+}
+
+static inline gboolean use_linear_dB_scale(long dBmin, long dBmax)
+{
+    return dBmax - dBmin <= MAX_LINEAR_DB_SCALE * 100;
+}
+
+static long get_normalized_volume(snd_mixer_elem_t *elem,
+                                    snd_mixer_selem_channel_id_t channel)
+{
+    long min, max, value;
+    double normalized, min_norm;
+    int err;
+
+    err = snd_mixer_selem_get_playback_dB_range(elem, &min, &max);
+    if (err < 0 || min >= max) {
+        err = snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
+        if (err < 0 || min == max)
+            return 0;
+
+        err = snd_mixer_selem_get_playback_volume(elem, channel, &value);
+        if (err < 0)
+            return 0;
+
+        return lrint(100.0 * (value - min) / (double)(max - min));
+    }
+
+    err = snd_mixer_selem_get_playback_dB(elem, channel, &value);
+    if (err < 0)
+        return 0;
+
+    if (use_linear_dB_scale(min, max))
+        return lrint(100.0 * (value - min) / (double)(max - min));
+
+    normalized = exp10((value - max) / 6000.0);
+    if (min != SND_CTL_TLV_DB_GAIN_MUTE) {
+        min_norm = exp10((min - max) / 6000.0);
+        normalized = (normalized - min_norm) / (1 - min_norm);
+    }
+
+    return lrint(100.0 * normalized);
+}
+
 /* Get the volume from the sound system.
  * This implementation returns the average of the Front Left and Front Right channels. */
 static int asound_get_volume(VolumeALSAPlugin * vol)
 {
     long aleft = 0;
     long aright = 0;
+
     if (vol->master_element != NULL)
     {
-        snd_mixer_selem_get_playback_volume(vol->master_element, SND_MIXER_SCHN_FRONT_LEFT, &aleft);
-        snd_mixer_selem_get_playback_volume(vol->master_element, SND_MIXER_SCHN_FRONT_RIGHT, &aright);
+        if ( ! vol->alsamixer_mapping)
+        {
+            snd_mixer_selem_get_playback_volume(vol->master_element, SND_MIXER_SCHN_FRONT_LEFT, &aleft);
+            snd_mixer_selem_get_playback_volume(vol->master_element, SND_MIXER_SCHN_FRONT_RIGHT, &aright);
+        }
+        else
+        {
+            aleft = get_normalized_volume(vol->master_element, SND_MIXER_SCHN_FRONT_LEFT);
+            aright = get_normalized_volume(vol->master_element, SND_MIXER_SCHN_FRONT_RIGHT);
+        }
     }
     return (aleft + aright) >> 1;
 }
 
+static int set_normalized_volume(snd_mixer_elem_t *elem,
+                                 snd_mixer_selem_channel_id_t channel,
+                                 int vol,
+                                 int dir)
+{
+    long min, max, value;
+    double min_norm, volume;
+    int err;
+
+    volume = vol / 100.0;
+
+    err = snd_mixer_selem_get_playback_dB_range(elem, &min, &max);
+    if (err < 0 || min >= max) {
+        err = snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
+        if (err < 0)
+            return err;
+
+        value = lrint_dir(volume * (max - min), dir) + min;
+        return snd_mixer_selem_set_playback_volume(elem, channel, value);
+    }
+
+    if (use_linear_dB_scale(min, max)) {
+        value = lrint_dir(volume * (max - min), dir) + min;
+        return snd_mixer_selem_set_playback_dB(elem, channel, value, dir);
+    }
+
+    if (min != SND_CTL_TLV_DB_GAIN_MUTE) {
+        min_norm = exp10((min - max) / 6000.0);
+        volume = volume * (1 - min_norm) + min_norm;
+    }
+    value = lrint_dir(6000.0 * log10(volume), dir) + max;
+
+    return snd_mixer_selem_set_playback_dB(elem, channel, value, dir);
+}
+
 /* Set the volume to the sound system.
  * This implementation sets the Front Left and Front Right channels to the specified value. */
 static void asound_set_volume(VolumeALSAPlugin * vol, int volume)
 {
+    int dir = volume - asound_get_volume(vol);
+
+    /* Volume is set to the correct value already */
+    if (dir == 0)
+        return;
+
     if (vol->master_element != NULL)
     {
-        snd_mixer_selem_set_playback_volume(vol->master_element, SND_MIXER_SCHN_FRONT_LEFT, volume);
-        snd_mixer_selem_set_playback_volume(vol->master_element, SND_MIXER_SCHN_FRONT_RIGHT, volume);
+        if ( ! vol->alsamixer_mapping)
+        {
+            snd_mixer_selem_set_playback_volume(vol->master_element, SND_MIXER_SCHN_FRONT_LEFT, volume);
+            snd_mixer_selem_set_playback_volume(vol->master_element, SND_MIXER_SCHN_FRONT_RIGHT, volume);
+        }
+        else
+        {
+            set_normalized_volume(vol->master_element, SND_MIXER_SCHN_FRONT_LEFT, volume, dir);
+            set_normalized_volume(vol->master_element, SND_MIXER_SCHN_FRONT_RIGHT, volume, dir);
+        }
     }
 }
 
 /*** Graphics ***/
 
-static void volumealsa_update_current_icon(VolumeALSAPlugin * vol)
+static void volumealsa_lookup_current_icon(VolumeALSAPlugin * vol, gboolean mute, int level)
 {
-    /* Mute status. */
-    gboolean mute = asound_is_muted(vol);
-    int level = asound_get_volume(vol);
-
     /* Change icon according to mute / volume */
-    const char* icon="audio-volume-muted";
     const char* icon_panel="audio-volume-muted-panel";
     const char* icon_fallback=ICONS_MUTE;
     if (mute)
     {
          icon_panel = "audio-volume-muted-panel";
-         icon="audio-volume-muted";
          icon_fallback=ICONS_MUTE;
     }
-    else if (level >= 75)
+    else if (level >= 66)
     {
          icon_panel = "audio-volume-high-panel";
-         icon="audio-volume-high";
          icon_fallback=ICONS_VOLUME_HIGH;
     }
-    else if (level >= 50)
+    else if (level >= 33)
     {
          icon_panel = "audio-volume-medium-panel";
-         icon="audio-volume-medium";
          icon_fallback=ICONS_VOLUME_MEDIUM;
     }
     else if (level > 0)
     {
          icon_panel = "audio-volume-low-panel";
-         icon="audio-volume-low";
          icon_fallback=ICONS_VOLUME_LOW;
     }
 
     vol->icon_panel = icon_panel;
-    vol->icon = icon;
-    vol->icon_fallback= icon_fallback;
+    vol->icon_fallback = icon_fallback;
 }
 
-/* Do a full redraw of the display. */
-static void volumealsa_update_display(VolumeALSAPlugin * vol)
+static void volumealsa_update_current_icon(VolumeALSAPlugin * vol, gboolean mute, int level)
 {
-    /* Mute status. */
-    gboolean mute = asound_is_muted(vol);
-    int level = asound_get_volume(vol);
-
-    volumealsa_update_current_icon(vol);
+    /* Find suitable icon */
+    volumealsa_lookup_current_icon(vol, mute, level);
 
     /* Change icon, fallback to default icon if theme doesn't exsit */
-    if ( ! lxpanel_image_set_icon_theme(vol->panel, vol->tray_icon, vol->icon_panel))
-    {
-        if ( ! lxpanel_image_set_icon_theme(vol->panel, vol->tray_icon, vol->icon))
-        {
-            lxpanel_image_set_from_file(vol->panel, vol->tray_icon, vol->icon_fallback);
-        }
-    }
+    lxpanel_image_change_icon(vol->tray_icon, vol->icon_panel, vol->icon_fallback);
 
-    g_signal_handler_block(vol->mute_check, vol->mute_check_handler);
-    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vol->mute_check), mute);
-    gtk_widget_set_sensitive(vol->mute_check, asound_has_mute(vol));
-    g_signal_handler_unblock(vol->mute_check, vol->mute_check_handler);
+    /* Display current level in tooltip. */
+    char * tooltip = g_strdup_printf("%s %d", _("Volume control"), level);
+    gtk_widget_set_tooltip_text(vol->plugin, tooltip);
+    g_free(tooltip);
+}
+
+/*
+ * Here we just update volume's vertical scale and mute check button.
+ * The rest will be updated by signal handelrs.
+ */
+static void volumealsa_update_display(VolumeALSAPlugin * vol)
+{
+    /* Mute. */
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vol->mute_check), asound_is_muted(vol));
+    gtk_widget_set_sensitive(vol->mute_check, (asound_has_mute(vol)));
 
     /* Volume. */
     if (vol->volume_scale != NULL)
     {
-        g_signal_handler_block(vol->volume_scale, vol->volume_scale_handler);
         gtk_range_set_value(GTK_RANGE(vol->volume_scale), asound_get_volume(vol));
-        g_signal_handler_unblock(vol->volume_scale, vol->volume_scale_handler);
     }
-
-    /* Display current level in tooltip. */
-    char * tooltip = g_strdup_printf("%s %d", _("Volume control"), level);
-    gtk_widget_set_tooltip_text(vol->plugin, tooltip);
-    g_free(tooltip);
 }
 
-
 /* Handler for "button-press-event" signal on main widget. */
 static gboolean volumealsa_button_press_event(GtkWidget * widget, GdkEventButton * event, LXPanel * panel)
 {
@@ -408,25 +514,21 @@ static void volumealsa_popup_map(GtkWidget * widget, VolumeALSAPlugin * vol)
     lxpanel_plugin_adjust_popup_position(widget, vol->plugin);
 }
 
-static void volumealsa_theme_change(GtkWidget * widget, VolumeALSAPlugin * vol)
-{
-    if ( ! lxpanel_image_set_icon_theme(vol->panel, vol->tray_icon, vol->icon_panel))
-    {
-        if ( ! lxpanel_image_set_icon_theme(vol->panel, vol->tray_icon, vol->icon))
-        {
-            lxpanel_image_set_from_file(vol->panel, vol->tray_icon, vol->icon_fallback);
-        }
-    }
-}
-
 /* Handler for "value_changed" signal on popup window vertical scale. */
 static void volumealsa_popup_scale_changed(GtkRange * range, VolumeALSAPlugin * vol)
 {
-    /* Reflect the value of the control to the sound system. */
-    asound_set_volume(vol, gtk_range_get_value(range));
+    int level = gtk_range_get_value(GTK_RANGE(vol->volume_scale));
+    gboolean mute = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vol->mute_check));
 
-    /* Redraw the controls. */
-    volumealsa_update_display(vol);
+    /* Reflect the value of the control to the sound system. */
+    asound_set_volume(vol, level);
+
+    /*
+     * Redraw the controls.
+     * Scale and check button do not need to be updated, as these are always
+     * in sync with user's actions.
+     */
+    volumealsa_update_current_icon(vol, mute, level);
 }
 
 /* Handler for "scroll-event" signal on popup window vertical scale. */
@@ -448,19 +550,23 @@ static void volumealsa_popup_scale_scrolled(GtkScale * scale, GdkEventScroll * e
 /* Handler for "toggled" signal on popup window mute checkbox. */
 static void volumealsa_popup_mute_toggled(GtkWidget * widget, VolumeALSAPlugin * vol)
 {
-    /* Get the state of the mute toggle. */
-    gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+    int level = gtk_range_get_value(GTK_RANGE(vol->volume_scale));
+    gboolean mute = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vol->mute_check));
 
     /* Reflect the mute toggle to the sound system. */
     if (vol->master_element != NULL)
     {
         int chn;
         for (chn = 0; chn <= SND_MIXER_SCHN_LAST; chn++)
-            snd_mixer_selem_set_playback_switch(vol->master_element, chn, ((active) ? 0 : 1));
+            snd_mixer_selem_set_playback_switch(vol->master_element, chn, ((mute) ? 0 : 1));
     }
 
-    /* Redraw the controls. */
-    volumealsa_update_display(vol);
+    /*
+     * Redraw the controls.
+     * Scale and check button do not need to be updated, as these are always
+     * in sync with user's actions.
+     */
+    volumealsa_update_current_icon(vol, mute, level);
 }
 
 /* Build the window that appears when the top level widget is clicked. */
@@ -531,6 +637,9 @@ static GtkWidget *volumealsa_constructor(LXPanel *panel, config_setting_t *setti
     VolumeALSAPlugin * vol = g_new0(VolumeALSAPlugin, 1);
     GtkWidget *p;
 
+    /* Read config necessary for proper initialization of ALSA. */
+    config_setting_lookup_int(settings, "UseAlsamixerVolumeMapping", &vol->alsamixer_mapping);
+
     /* Initialize ALSA.  If that fails, present nothing. */
     if ( ! asound_initialize(vol))
     {
@@ -543,11 +652,11 @@ static GtkWidget *volumealsa_constructor(LXPanel *panel, config_setting_t *setti
     vol->plugin = p = gtk_event_box_new();
     vol->settings = settings;
     lxpanel_plugin_set_data(p, vol, volumealsa_destructor);
-    gtk_widget_add_events(p, GDK_BUTTON_PRESS_MASK);
     gtk_widget_set_tooltip_text(p, _("Volume control"));
 
     /* Allocate icon as a child of top level. */
-    vol->tray_icon = gtk_image_new();
+    vol->tray_icon = lxpanel_image_new_for_icon(panel, "audio-volume-muted-panel",
+                                                -1, ICONS_MUTE);
     gtk_container_add(GTK_CONTAINER(p), vol->tray_icon);
 
     /* Initialize window to appear when icon clicked. */
@@ -555,7 +664,6 @@ static GtkWidget *volumealsa_constructor(LXPanel *panel, config_setting_t *setti
 
     /* Connect signals. */
     g_signal_connect(G_OBJECT(p), "scroll-event", G_CALLBACK(volumealsa_popup_scale_scrolled), vol );
-    g_signal_connect(panel_get_icon_theme(panel), "changed", G_CALLBACK(volumealsa_theme_change), vol );
 
     /* Update the display, show the widget, and return. */
     volumealsa_update_display(vol);
@@ -577,10 +685,6 @@ static void volumealsa_destructor(gpointer user_data)
     if (vol->restart_idle)
         g_source_remove(vol->restart_idle);
 
-    if (vol->panel) /* SF bug #683: crash if constructor failed */
-        g_signal_handlers_disconnect_by_func(panel_get_icon_theme(vol->panel),
-                                             volumealsa_theme_change, vol);
-
     /* Deallocate all memory. */
     g_free(vol);
 }
@@ -600,6 +704,7 @@ static GtkWidget *volumealsa_configure(LXPanel *panel, GtkWidget *p)
     /* FIXME: support "needs terminal" for MixerCommand */
     /* FIXME: selection for master channel! */
     /* FIXME: configure buttons for each action (toggle volume/mixer/mute)! */
+    /* FIXME: allow bind multimedia keys to volume using libkeybinder */
 
     /* if command isn't set in settings then let guess it */
     if (command_line == NULL && (path = g_find_program_in_path("pulseaudio")))
index 3306552..0f87d7c 100644 (file)
@@ -18,6 +18,8 @@
  * See the COPYRIGHT file for more information.
  */
 
+#ifndef USE_STANDALONE
+
 #include "location.h"
 #include "weatherwidget.h"
 #include "yahooutil.h"
@@ -38,6 +40,7 @@ typedef struct
   gint iMyId_;
   GtkWidget *pWeather_;
   config_setting_t *pConfig_;
+  LXPanel *pPanel_;
 } WeatherPluginPrivate;
 
 
@@ -79,6 +82,7 @@ weather_constructor(LXPanel *pPanel, config_setting_t *pConfig)
   WeatherPluginPrivate * pPriv = g_new0(WeatherPluginPrivate, 1);
 
   pPriv->pConfig_ = pConfig;
+  pPriv->pPanel_ = pPanel;
 
   /* There is one more now... */
   ++g_iCount;
@@ -96,7 +100,7 @@ weather_constructor(LXPanel *pPanel, config_setting_t *pConfig)
 
   LXW_LOG(LXW_DEBUG, "weather_constructor()");
   
-  GtkWidget * pWidg = gtk_weather_new(FALSE);
+  GtkWidget * pWidg = gtk_weather_new();
 
   pPriv->pWeather_ = pWidg;
 
@@ -257,6 +261,24 @@ void weather_save_configuration(GtkWidget * pWeather, LocationInfo * pLocation)
 
 }
 
+void weather_set_label_text(GtkWidget * pWeather, GtkWidget * label, const gchar * text)
+{
+  GtkWidget * pWidget = gtk_widget_get_parent(pWeather);
+  WeatherPluginPrivate * pPriv = NULL;
+
+  if (pWidget)
+    {
+      pPriv = (WeatherPluginPrivate *) lxpanel_plugin_get_data(pWidget);
+    }
+  if (pPriv == NULL)
+    {
+      LXW_LOG(LXW_ERROR, "Weather: weather_set_label_text() for invalid widget");
+      return;
+    }
+
+  lxpanel_draw_label_text(pPriv->pPanel_, label, text, TRUE, 1, TRUE);
+}
+
 /**
  * Weather Plugin configuration change callback.
  *
@@ -315,3 +337,4 @@ LXPanelPluginInit fm_module_init_lxpanel_gtk =
     .config = weather_configure,
     .reconfigure = weather_configuration_changed
   };
+#endif /* USE_STANDALONE */
index 44328a9..3205bdd 100644 (file)
@@ -34,6 +34,8 @@
 #include <errno.h>
 #include <string.h>
 
+#include "gtk-compat.h"
+
 /* Private structure, property and signal definitions. */
 #define GTK_WEATHER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
                                       GTK_WEATHER_TYPE, GtkWeatherPrivate))
@@ -63,6 +65,7 @@ enum
   MAX_COLUMNS
 };
 
+#ifdef USE_STANDALONE
 struct _PopupMenuData
 {
   GtkWidget * menu;
@@ -70,6 +73,7 @@ struct _PopupMenuData
   GtkWidget * preferences_item;
   GtkWidget * quit_item;
 };
+#endif
 
 struct _PreferencesDialogData
 {
@@ -100,16 +104,15 @@ struct _ForecastThreadData
 
 struct _GtkWeatherPrivate
 {
-  /* Whether or not this widget is being used by itself */
-  gboolean standalone;
-
   /* Main Widget Box layout */
   GtkWidget * hbox;
   GtkWidget * image;
   GtkWidget * label;
 
   /* Menus and dialogs */
+#ifdef USE_STANDALONE
   PopupMenuData menu_data;
+#endif
   PreferencesDialogData preferences_data;
   GtkWidget * conditions_dialog;
 
@@ -161,7 +164,9 @@ static gboolean gtk_weather_change_location (GtkWidget * widget, GdkEventButton
 
 static void gtk_weather_auto_update_toggled (GtkWidget * widget);
 
+#ifdef USE_STANDALONE
 static void gtk_weather_create_popup_menu            (GtkWeather * weather);
+#endif
 static void gtk_weather_set_window_icon              (GtkWindow * window, gchar * icon_id);
 static void gtk_weather_show_location_progress_bar   (GtkWeather * weather);
 static void gtk_weather_show_location_list           (GtkWeather * weather, GList * list);
@@ -235,14 +240,10 @@ gtk_weather_get_type(void)
  * @return A new instance of this widget type.
  */
 GtkWidget *
-gtk_weather_new(gboolean standalone)
+gtk_weather_new(void)
 {
   GObject * object = g_object_new(gtk_weather_get_type(), NULL);
 
-  GtkWeatherPrivate * priv = GTK_WEATHER_GET_PRIVATE(GTK_WEATHER(object));
-
-  priv->standalone = standalone;
-
   return GTK_WIDGET(object);
 }
 
@@ -340,7 +341,9 @@ gtk_weather_init(GtkWeather * weather)
   gtk_container_set_border_width(GTK_CONTAINER(weather), 2);
 
   /* Popup menu */
+#ifdef USE_STANDALONE
   gtk_weather_create_popup_menu(weather);
+#endif
 
   priv->forecast_data.timerid = 0;
 
@@ -375,10 +378,12 @@ gtk_weather_destroy(GObject * object)
   freeLocation(priv->location);
   freeForecast(priv->forecast);
 
+#ifdef USE_STANDALONE
   if (priv->menu_data.menu && GTK_IS_WIDGET(priv->menu_data.menu))
     {
       gtk_widget_destroy(priv->menu_data.menu);
     }
+#endif
 
   if (priv->hbox && GTK_IS_WIDGET(priv->hbox))
     {
@@ -430,11 +435,7 @@ gtk_weather_size_allocate(GtkWidget * widget, GtkAllocation * allocation)
 
   gboolean weather_has_window = gtk_widget_get_has_window(widget);
 
-#if GTK_CHECK_VERSION(2, 20, 0)
   if (gtk_widget_get_realized(widget) && weather_has_window)
-#else
-  if (GTK_WIDGET_REALIZED(widget) && weather_has_window)
-#endif
     {
       gdk_window_move_resize(gtk_widget_get_window(widget),
                              allocation->x, 
@@ -511,7 +512,7 @@ gtk_weather_render(GtkWeather * weather)
                                             forecast->iTemperature_,
                                             forecast->units_.pcTemperature_);
 
-      gtk_label_set_text(GTK_LABEL(priv->label), temperature);
+      weather_set_label_text(GTK_WIDGET(weather), priv->label, temperature);
 
       //gtk_widget_show_all(priv->hbox);
 
@@ -532,9 +533,9 @@ gtk_weather_render(GtkWeather * weather)
                                    GTK_STOCK_DIALOG_ERROR, 
                                    GTK_ICON_SIZE_BUTTON);
         }
-      
-      gtk_label_set_text(GTK_LABEL(priv->label), 
-                         GTK_WEATHER_NOT_AVAILABLE_LABEL);
+
+      weather_set_label_text(GTK_WIDGET(weather), priv->label,
+                             GTK_WEATHER_NOT_AVAILABLE_LABEL);
     }
 
   /* update tooltip with proper data... */
@@ -719,21 +720,16 @@ gtk_weather_button_pressed(GtkWidget * widget, GdkEventButton * event)
 
   GtkWeatherPrivate * priv = GTK_WEATHER_GET_PRIVATE(GTK_WEATHER(widget));
 
+#ifdef USE_STANDALONE
   /* If right-clicked, show popup */
   if (event->button == 3 && (event->type == GDK_BUTTON_PRESS))
     {
-      if (priv->standalone)
-        {
-          gtk_weather_run_popup_menu(widget);
+      gtk_weather_run_popup_menu(widget);
 
-          return TRUE;
-        }
-      else
-        {
-          return FALSE;
-        }
+      return TRUE;
     }
-  else if (event->button == 1 && (event->type == GDK_BUTTON_PRESS))
+#endif
+  if (event->button == 1 && (event->type == GDK_BUTTON_PRESS))
     {
       if (priv->conditions_dialog)
         gtk_dialog_response(GTK_DIALOG(priv->conditions_dialog), GTK_RESPONSE_ACCEPT);
@@ -1046,6 +1042,7 @@ gtk_weather_run_error_dialog(GtkWindow * parent, gchar * error_msg)
     }
 }
 
+#ifdef USE_STANDALONE
 /**
  * Creates a pop-up menu.
  *
@@ -1108,6 +1105,7 @@ gtk_weather_create_popup_menu(GtkWeather * weather)
 
   gtk_widget_show_all(priv->menu_data.menu);
 }
+#endif
 
 /**
  * Callback for the preferences menu response.