Use PtkUIXml and glade file to build a better config dialog.
authorHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Thu, 17 Apr 2008 14:00:35 +0000 (14:00 +0000)
committerHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Thu, 17 Apr 2008 14:00:35 +0000 (14:00 +0000)
Enable open panel preference via popup menus of plugins.

git-svn-id: https://lxde.svn.sourceforge.net/svnroot/lxde/branches/lxpanel-multiple-panels@537 3baf7735-d320-0410-8b56-b11ef3703fae

21 files changed:
Makefile.am
configure.ac
data/default/panels/panel.in
data/two_panels/panels/top
data/ui/panel-pref.glade [new file with mode: 0644]
po/POTFILES.in
po/fr.po
po/hu.po
po/ko.po
po/pl.po
po/sk.po
po/zh_TW.po
src/Makefile.am
src/configurator.c
src/misc.c
src/panel.c
src/panel.h
src/ptk-ui-xml/ptk-ui-xml.c [new file with mode: 0644]
src/ptk-ui-xml/ptk-ui-xml.h [new file with mode: 0644]
src/ptk-ui-xml/ptk-xml-tree.c [new file with mode: 0644]
src/ptk-ui-xml/ptk-xml-tree.h [new file with mode: 0644]

index 4a924d8..1fc52ef 100644 (file)
@@ -16,6 +16,10 @@ EXTRA_DIST = \
 ## icondir = $(datadir)/pixmaps
 ## icon_DATA = data/pcmanfm.png
 
+uidir=$(datadir)/lxpanel/ui
+ui_DATA= \
+       data/ui/panel-pref.glade
+
 install-data-local:
        @$(NORMAL_INSTALL)
        if test -d $(srcdir)/pixmaps; then \
index dc23ec4..12c0e33 100644 (file)
@@ -1,5 +1,5 @@
 AC_PREREQ(2.53)
-AC_INIT(lxpanel, 0.3.1, http://lxde.sourceforge.net/)
+AC_INIT(lxpanel, 0.3.5, http://lxde.sourceforge.net/)
 AM_INIT_AUTOMAKE
 AC_CONFIG_SRCDIR([src/bg.c])
 AC_CONFIG_HEADER([config.h])
index 5fb3b18..b834e67 100644 (file)
-########################################
-## lxpanel configuration file         ##
-########################################
-
-# DESCRIPTION
-# Configuration file consists of mandatory 'Global' block that MUST come first,
-# and optionally one or more 'Plugin' block.
-# Lines having '#' as first non-blank char or blank lines are ignored
-# Value of variable is a text from first non-blank char after '=' 
-# till the last non-blank char. '#' is NOT treated as coment in this context
-
-# 'Global' block describes gloabal parameters like position, size and 
-# some NETWM settings
-
-# GLobal {
-
-#     # screen edge  
-#     # legal values are: left, right, top, bottom
-#     edge = bottom
-
-#     # allignment of a panel
-#     # legal values are: left, right, center
-#     allign = left
-
-#     # length of margin (in pixels) 
-#     # legal values are numbers
-#     margin = 0
-
-#     # widthtype specifies how panel width is calculated
-#     # legal values are: request, pixel, percent
-#     #   request - follow widgets' size requests. can shrink or grow dynamically
-#     #   pixel   - ocupy fixed number of pixels, then 'width' variable holds a number
-#     #   percent - be 'width' precent of an edge.
-#     widthtype = percent
-
-#     # numerical value of width (not applicable for 'request' widthtype)
-#     # legal values are numbers
-#     width = 80
-
-#     # heighttype specifies how panel height is calculated
-#     # legal values are: pixel
-#     #   pixel   - ocupy fixed number of pixels, then 'height' variable holds a number
-#     heighttype = pixel
-
-#     # numerical value of height (if applicable)
-#     # legal values are numbers
-#     height = 28
-
-
-#     # Identify panel window type as dock 
-#     # legal values are boolean
-#     SetDockType = true
-
-#     # Reserve panel's space so that it will not be covered by maximazied windows
-#     # legal values are boolean
-#     # SetPartialStrut = true
-
-#     # Transparency stuff: 
-#     # TintColor is a color to composite on root background given as #RRGGBB or as name
-#     # Alpha is transparency of the tint color.
-#     # Transparent = true
-#     # TintColor = #FFFFFF
-#         or
-#     # TintColor = white
-#     # Alpha = 127
-
-#     # Font color: 
-#     # useFontColor = true
-#     # FontColor = #FFFFFF
-
-#     # Background stuff: 
-#     # Background = true
-#     # BackgroundFile = /usr/share/lxpanel/images/background.png
-# }
-
-# 'Plugin' block specifies a plugin to load. It has same syntax for both
-# builtin and external plugins.
-
-# First parameter is 'type'. It's mandatory and must come first
-# Legal values are plugin names. Names of builtin plugins are:
-# separator   - visual separator
-# wincmd      - 'show desktop' button
-# taskbar     - lists all opened windows (tasks)
-# launchbar   - bar with launch button
-# image       - just shows an image
-# dclock      - digital clock
-# space       - just seize space
-# pager       - thumbnailed view of the desktop
-# tray        - tray for XEMBED icons (aka docklets)
-# volume      - volume control
-# cpu         - cpu usage monitor
-# netstatus   - net status (ported from gnome-panel)
-
-# expand - specifies if plugin can accomodate extra space or not [optional]
-# padding - extra paddin around plugin  [optional]
-# config {} - block of plugin's private configuration. 
-#             This part is plugin  dependant
+# lxpanel <profile> config file. Manually editing is not recommended.
+# Use preference dialog in lxpanel to adjust config when you can.
 
 Global {
-    edge = bottom
-    allign = left
-    margin = 0
-    widthtype = percent
-    width = 100
-    heighttype = pixel
-    height = 26
-    useFontColor = false
-    FontColor = #FFFFFF
-    Background = false
-    BackgroundFile = @prefix@/share/lxpanel/images/background.png
+    edge=bottom
+    allign=left
+    margin=0
+    widthtype=percent
+    width=100
+    heighttype=pixel
+    height=26
+    useFontColor=0
+    FontColor=#FFFFFF
+    Background=0
+    BackgroundFile=@prefix@/share/lxpanel/images/background.png
 }
 
 Plugin {
-    type = space
+    type=space
     config {
-            size = 2
+            size=2
     }
 }
 
 Plugin {
-    type = menu
+    type=menu
     config {
-        image = @prefix@/share/lxpanel/images/my-computer.svg
+        image=@prefix@/share/lxpanel/images/my-computer.svg
         system {
         }
         separator {
         }
         item {
-            command = run
-        }
-        item {
-            image = @prefix@/share/lxpanel/images/gnome-setting.svg
-            command = configure
+            command=run
         }
         separator {
         }
         item {
-            image = gnome-logout
-            command = logout
+            image=gnome-logout
+            command=logout
         }
     }
 }
 
 Plugin {
-    type = launchbar
+    type=launchbar
     config {
         button {
-            id = pcmanfm.desktop
+            id=pcmanfm.desktop
         }
         button {
-            id = gnome-terminal.desktop
+            id=gnome-terminal.desktop
         }
         button {
-            id = firefox.desktop
+            id=firefox.desktop
         }
     }
 }
 
 Plugin {
-    type = space
+    type=space
     config {
-            size = 4
+            size=4
     }
 }
 
 Plugin {
-    type = wincmd
+    type=wincmd
 }
 
 Plugin {
-    type = space
+    type=space
     config {
-            size = 4
+            size=4
     }
 }
 
 Plugin {
-    type = pager
+    type=pager
 }
 
 Plugin {
-    type = space
+    type=space
     config {
-        size = 4
+        size=4
     }
 }
 
 Plugin {
-    type = taskbar
-    expand = true
+    type=taskbar
+    expand=1
     config {
-        ShowIconified = true
-        ShowMapped    = true
-        ShowAllDesks  = false
-        tooltips = true
-        IconsOnly = false
-        MaxTaskWidth = 150
+        ShowIconified=0
+        ShowMapped   =0
+        ShowAllDesks =0
+        tooltips=0
+        IconsOnly=0
+        MaxTaskWidth=150
     }
 }
 
 # Volume control
 #
 # Plugin {
-#     type = volume
+#     type=volume
 # }
 
 # Net status plug-in
 # %i in configtool is only a place holder, and will be replace by the value of iface.
 
 #Plugin {
-#    type = netstatus
+#    type=netstatus
 #    config {
-#        iface = eth0
-#        configtool = network-admin --configure %i
+#        iface=eth0
+#        configtool=network-admin --configure %i
 #    }
 #}
 
 # Net Status (Linux Only)
 #
 Plugin {
-    type = netstat
+    type=netstat
     config {
-        FixCommand = /sbin/netctl %s renew
+        FixCommand=/sbin/netctl %s renew
     }
 }
 
 # CPU monitor
 Plugin {
-    type = cpu
+    type=cpu
 }
 
 Plugin {
-    type = tray
+    type=tray
 }
 
 # Digital Clock
 Plugin {
-    type = dclock
+    type=dclock
     config {
-        ClockFmt = %R
-        TooltipFmt = %A %x
-#        Action = xmessage Please define some command &
-        BoldFont = false
+        ClockFmt=%R
+        TooltipFmt=%A %x
+        BoldFont=0
     }
 }
index a06c3da..214145d 100644 (file)
@@ -35,10 +35,6 @@ Plugin {
         item {
             command = run
         }
-        item {
-            image = /usr/share/lxpanel/images/gnome-setting.svg
-            command = configure
-        }
         separator {
         }
         item {
diff --git a/data/ui/panel-pref.glade b/data/ui/panel-pref.glade
new file mode 100644 (file)
index 0000000..8184d9c
--- /dev/null
@@ -0,0 +1,1383 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="panel_pref">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">Panel Preferences</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="default_height">420</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+  <property name="urgency_hint">False</property>
+  <property name="has_separator">True</property>
+
+  <child internal-child="vbox">
+    <widget class="GtkVBox" id="dialog-vbox1">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child internal-child="action_area">
+       <widget class="GtkHButtonBox" id="dialog-action_area1">
+         <property name="visible">True</property>
+         <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+         <child>
+           <widget class="GtkButton" id="close_btn">
+             <property name="visible">True</property>
+             <property name="can_default">True</property>
+             <property name="can_focus">True</property>
+             <property name="label">gtk-close</property>
+             <property name="use_stock">True</property>
+             <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="focus_on_click">True</property>
+             <property name="response_id">-7</property>
+           </widget>
+         </child>
+       </widget>
+       <packing>
+         <property name="padding">0</property>
+         <property name="expand">False</property>
+         <property name="fill">True</property>
+         <property name="pack_type">GTK_PACK_END</property>
+       </packing>
+      </child>
+
+      <child>
+       <widget class="GtkNotebook" id="notebook">
+         <property name="visible">True</property>
+         <property name="can_focus">True</property>
+         <property name="show_tabs">True</property>
+         <property name="show_border">True</property>
+         <property name="tab_pos">GTK_POS_TOP</property>
+         <property name="scrollable">False</property>
+         <property name="enable_popup">False</property>
+
+         <child>
+           <widget class="GtkVBox" id="vbox1">
+             <property name="border_width">6</property>
+             <property name="visible">True</property>
+             <property name="homogeneous">False</property>
+             <property name="spacing">4</property>
+
+             <child>
+               <widget class="GtkHBox" id="hbox6">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">0</property>
+
+                 <child>
+                   <widget class="GtkFrame" id="frame1">
+                     <property name="visible">True</property>
+                     <property name="label_xalign">0</property>
+                     <property name="label_yalign">0.5</property>
+                     <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+                     <child>
+                       <widget class="GtkAlignment" id="alignment1">
+                         <property name="visible">True</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xscale">1</property>
+                         <property name="yscale">1</property>
+                         <property name="top_padding">0</property>
+                         <property name="bottom_padding">0</property>
+                         <property name="left_padding">8</property>
+                         <property name="right_padding">0</property>
+
+                         <child>
+                           <widget class="GtkTable" id="table1">
+                             <property name="visible">True</property>
+                             <property name="n_rows">3</property>
+                             <property name="n_columns">2</property>
+                             <property name="homogeneous">False</property>
+                             <property name="row_spacing">2</property>
+                             <property name="column_spacing">0</property>
+
+                             <child>
+                               <widget class="GtkLabel" id="label7">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Edge:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkLabel" id="label8">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Alignment:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">1</property>
+                                 <property name="bottom_attach">2</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkLabel" id="label9">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Margin:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">2</property>
+                                 <property name="bottom_attach">3</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkComboBox" id="align">
+                                 <property name="visible">True</property>
+                                 <property name="items" translatable="yes">Left
+Center
+Right</property>
+                                 <property name="add_tearoffs">False</property>
+                                 <property name="focus_on_click">True</property>
+                               </widget>
+                               <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">fill</property>
+                                 <property name="y_options">fill</property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkComboBox" id="edge">
+                                 <property name="visible">True</property>
+                                 <property name="items" translatable="yes">Left
+Right
+Top
+Bottom</property>
+                                 <property name="add_tearoffs">False</property>
+                                 <property name="focus_on_click">True</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">1</property>
+                                 <property name="right_attach">2</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options">fill</property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkSpinButton" id="margin">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="climb_rate">1</property>
+                                 <property name="digits">0</property>
+                                 <property name="numeric">False</property>
+                                 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                                 <property name="snap_to_ticks">False</property>
+                                 <property name="wrap">False</property>
+                                 <property name="adjustment">0 0 32767 1 10 10</property>
+                               </widget>
+                               <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">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+                           </widget>
+                         </child>
+                       </widget>
+                     </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="label5">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">&lt;b&gt;Position&lt;/b&gt;</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">True</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="type">label_item</property>
+                       </packing>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkFrame" id="frame2">
+                     <property name="visible">True</property>
+                     <property name="label_xalign">0</property>
+                     <property name="label_yalign">0.5</property>
+                     <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+                     <child>
+                       <widget class="GtkAlignment" id="alignment2">
+                         <property name="visible">True</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xscale">1</property>
+                         <property name="yscale">1</property>
+                         <property name="top_padding">0</property>
+                         <property name="bottom_padding">0</property>
+                         <property name="left_padding">8</property>
+                         <property name="right_padding">0</property>
+
+                         <child>
+                           <widget class="GtkTable" id="table2">
+                             <property name="visible">True</property>
+                             <property name="n_rows">2</property>
+                             <property name="n_columns">3</property>
+                             <property name="homogeneous">False</property>
+                             <property name="row_spacing">2</property>
+                             <property name="column_spacing">0</property>
+
+                             <child>
+                               <widget class="GtkLabel" id="label10">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Width:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkLabel" id="label11">
+                                 <property name="visible">True</property>
+                                 <property name="label" translatable="yes">Height:</property>
+                                 <property name="use_underline">False</property>
+                                 <property name="use_markup">False</property>
+                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                 <property name="wrap">False</property>
+                                 <property name="selectable">False</property>
+                                 <property name="xalign">0</property>
+                                 <property name="yalign">0.5</property>
+                                 <property name="xpad">0</property>
+                                 <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">0</property>
+                                 <property name="right_attach">1</property>
+                                 <property name="top_attach">1</property>
+                                 <property name="bottom_attach">2</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkComboBox" id="height_unit">
+                                 <property name="visible">True</property>
+                                 <property name="items" translatable="yes">Pixels</property>
+                                 <property name="add_tearoffs">False</property>
+                                 <property name="focus_on_click">True</property>
+                               </widget>
+                               <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">fill</property>
+                                 <property name="y_options">fill</property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkSpinButton" id="width">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="climb_rate">1</property>
+                                 <property name="digits">0</property>
+                                 <property name="numeric">False</property>
+                                 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                                 <property name="snap_to_ticks">False</property>
+                                 <property name="wrap">False</property>
+                                 <property name="adjustment">0 0 100 1 10 10</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">1</property>
+                                 <property name="right_attach">2</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkSpinButton" id="height">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="climb_rate">1</property>
+                                 <property name="digits">0</property>
+                                 <property name="numeric">False</property>
+                                 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+                                 <property name="snap_to_ticks">False</property>
+                                 <property name="wrap">False</property>
+                                 <property name="adjustment">0 0 100 1 10 10</property>
+                               </widget>
+                               <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">fill</property>
+                                 <property name="y_options"></property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkComboBox" id="width_unit">
+                                 <property name="visible">True</property>
+                                 <property name="items" translatable="yes">Dynamic
+Pixels
+% Percent</property>
+                                 <property name="add_tearoffs">False</property>
+                                 <property name="focus_on_click">True</property>
+                               </widget>
+                               <packing>
+                                 <property name="left_attach">2</property>
+                                 <property name="right_attach">3</property>
+                                 <property name="top_attach">0</property>
+                                 <property name="bottom_attach">1</property>
+                                 <property name="x_options">fill</property>
+                                 <property name="y_options">fill</property>
+                               </packing>
+                             </child>
+                           </widget>
+                         </child>
+                       </widget>
+                     </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="label6">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">&lt;b&gt;Size&lt;/b&gt;</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">True</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="type">label_item</property>
+                       </packing>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkFrame" id="frame4">
+                 <property name="visible">True</property>
+                 <property name="label_xalign">0</property>
+                 <property name="label_yalign">0.5</property>
+                 <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+                 <child>
+                   <widget class="GtkAlignment" id="alignment4">
+                     <property name="visible">True</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xscale">1</property>
+                     <property name="yscale">1</property>
+                     <property name="top_padding">0</property>
+                     <property name="bottom_padding">0</property>
+                     <property name="left_padding">8</property>
+                     <property name="right_padding">0</property>
+
+                     <child>
+                       <widget class="GtkVBox" id="vbox4">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">2</property>
+
+                         <child>
+                           <widget class="GtkRadioButton" id="bg_none">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes">None (Use system theme)</property>
+                             <property name="use_underline">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="focus_on_click">True</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+                             <property name="draw_indicator">True</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkHBox" id="hbox2">
+                             <property name="visible">True</property>
+                             <property name="homogeneous">False</property>
+                             <property name="spacing">12</property>
+
+                             <child>
+                               <widget class="GtkRadioButton" id="bg_transparency">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="label" translatable="yes">Enable Transparency</property>
+                                 <property name="use_underline">True</property>
+                                 <property name="relief">GTK_RELIEF_NORMAL</property>
+                                 <property name="focus_on_click">True</property>
+                                 <property name="active">False</property>
+                                 <property name="inconsistent">False</property>
+                                 <property name="draw_indicator">True</property>
+                                 <property name="group">bg_none</property>
+                               </widget>
+                               <packing>
+                                 <property name="padding">0</property>
+                                 <property name="expand">False</property>
+                                 <property name="fill">False</property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkHBox" id="hbox3">
+                                 <property name="visible">True</property>
+                                 <property name="homogeneous">False</property>
+                                 <property name="spacing">2</property>
+
+                                 <child>
+                                   <widget class="GtkLabel" id="label20">
+                                     <property name="visible">True</property>
+                                     <property name="label" translatable="yes">Tint color:</property>
+                                     <property name="use_underline">False</property>
+                                     <property name="use_markup">False</property>
+                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                     <property name="wrap">False</property>
+                                     <property name="selectable">False</property>
+                                     <property name="xalign">0.5</property>
+                                     <property name="yalign">0.5</property>
+                                     <property name="xpad">0</property>
+                                     <property name="ypad">0</property>
+                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                     <property name="width_chars">-1</property>
+                                     <property name="single_line_mode">False</property>
+                                     <property name="angle">0</property>
+                                   </widget>
+                                   <packing>
+                                     <property name="padding">0</property>
+                                     <property name="expand">False</property>
+                                     <property name="fill">False</property>
+                                   </packing>
+                                 </child>
+
+                                 <child>
+                                   <widget class="GtkColorButton" id="tint_clr">
+                                     <property name="visible">True</property>
+                                     <property name="can_focus">True</property>
+                                     <property name="use_alpha">True</property>
+                                     <property name="focus_on_click">True</property>
+                                   </widget>
+                                   <packing>
+                                     <property name="padding">0</property>
+                                     <property name="expand">False</property>
+                                     <property name="fill">False</property>
+                                   </packing>
+                                 </child>
+                               </widget>
+                               <packing>
+                                 <property name="padding">0</property>
+                                 <property name="expand">False</property>
+                                 <property name="fill">True</property>
+                               </packing>
+                             </child>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkHBox" id="hbox4">
+                             <property name="visible">True</property>
+                             <property name="homogeneous">False</property>
+                             <property name="spacing">0</property>
+
+                             <child>
+                               <widget class="GtkRadioButton" id="bg_image">
+                                 <property name="visible">True</property>
+                                 <property name="can_focus">True</property>
+                                 <property name="label" translatable="yes">Enable Image:</property>
+                                 <property name="use_underline">True</property>
+                                 <property name="relief">GTK_RELIEF_NORMAL</property>
+                                 <property name="focus_on_click">True</property>
+                                 <property name="active">False</property>
+                                 <property name="inconsistent">False</property>
+                                 <property name="draw_indicator">True</property>
+                                 <property name="group">bg_none</property>
+                               </widget>
+                               <packing>
+                                 <property name="padding">0</property>
+                                 <property name="expand">False</property>
+                                 <property name="fill">False</property>
+                               </packing>
+                             </child>
+
+                             <child>
+                               <widget class="GtkFileChooserButton" id="img_file">
+                                 <property name="visible">True</property>
+                                 <property name="title" translatable="yes">Select an image file</property>
+                                 <property name="action">GTK_FILE_CHOOSER_ACTION_OPEN</property>
+                                 <property name="local_only">True</property>
+                                 <property name="show_hidden">False</property>
+                                 <property name="do_overwrite_confirmation">False</property>
+                                 <property name="width_chars">-1</property>
+                               </widget>
+                               <packing>
+                                 <property name="padding">0</property>
+                                 <property name="expand">True</property>
+                                 <property name="fill">True</property>
+                               </packing>
+                             </child>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+                       </widget>
+                     </child>
+                   </widget>
+                 </child>
+
+                 <child>
+                   <widget class="GtkLabel" id="label18">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Background&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</property>
+                     <property name="justify">GTK_JUSTIFY_LEFT</property>
+                     <property name="wrap">False</property>
+                     <property name="selectable">False</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xpad">0</property>
+                     <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
+                   </widget>
+                   <packing>
+                     <property name="type">label_item</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">True</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkFrame" id="frame5">
+                 <property name="visible">True</property>
+                 <property name="label_xalign">0</property>
+                 <property name="label_yalign">0.5</property>
+                 <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+                 <child>
+                   <widget class="GtkAlignment" id="alignment5">
+                     <property name="visible">True</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xscale">1</property>
+                     <property name="yscale">1</property>
+                     <property name="top_padding">0</property>
+                     <property name="bottom_padding">0</property>
+                     <property name="left_padding">8</property>
+                     <property name="right_padding">0</property>
+
+                     <child>
+                       <widget class="GtkHBox" id="hbox1">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">2</property>
+
+                         <child>
+                           <widget class="GtkCheckButton" id="use_font_clr">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes">Custom Color</property>
+                             <property name="use_underline">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="focus_on_click">True</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+                             <property name="draw_indicator">True</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkColorButton" id="font_clr">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="use_alpha">False</property>
+                             <property name="focus_on_click">True</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+                       </widget>
+                     </child>
+                   </widget>
+                 </child>
+
+                 <child>
+                   <widget class="GtkLabel" id="label19">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Font&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</property>
+                     <property name="justify">GTK_JUSTIFY_LEFT</property>
+                     <property name="wrap">False</property>
+                     <property name="selectable">False</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xpad">0</property>
+                     <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
+                   </widget>
+                   <packing>
+                     <property name="type">label_item</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">True</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkFrame" id="frame3">
+                 <property name="visible">True</property>
+                 <property name="label_xalign">0</property>
+                 <property name="label_yalign">0.5</property>
+                 <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+                 <child>
+                   <widget class="GtkAlignment" id="alignment3">
+                     <property name="visible">True</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xscale">1</property>
+                     <property name="yscale">1</property>
+                     <property name="top_padding">0</property>
+                     <property name="bottom_padding">0</property>
+                     <property name="left_padding">8</property>
+                     <property name="right_padding">0</property>
+
+                     <child>
+                       <widget class="GtkVBox" id="vbox2">
+                         <property name="visible">True</property>
+                         <property name="homogeneous">False</property>
+                         <property name="spacing">0</property>
+
+                         <child>
+                           <widget class="GtkCheckButton" id="as_dock">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes">Make window managers treat the panel as dock</property>
+                             <property name="use_underline">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="focus_on_click">True</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+                             <property name="draw_indicator">True</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+
+                         <child>
+                           <widget class="GtkCheckButton" id="reserve_space">
+                             <property name="visible">True</property>
+                             <property name="can_focus">True</property>
+                             <property name="label" translatable="yes">Reserve space, and not covered by maximized windows</property>
+                             <property name="use_underline">True</property>
+                             <property name="relief">GTK_RELIEF_NORMAL</property>
+                             <property name="focus_on_click">True</property>
+                             <property name="active">False</property>
+                             <property name="inconsistent">False</property>
+                             <property name="draw_indicator">True</property>
+                           </widget>
+                           <packing>
+                             <property name="padding">0</property>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
+                           </packing>
+                         </child>
+                       </widget>
+                     </child>
+                   </widget>
+                 </child>
+
+                 <child>
+                   <widget class="GtkLabel" id="label15">
+                     <property name="visible">True</property>
+                     <property name="label" translatable="yes">&lt;b&gt;Properties&lt;/b&gt;</property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">True</property>
+                     <property name="justify">GTK_JUSTIFY_LEFT</property>
+                     <property name="wrap">False</property>
+                     <property name="selectable">False</property>
+                     <property name="xalign">0.5</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xpad">0</property>
+                     <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
+                   </widget>
+                   <packing>
+                     <property name="type">label_item</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label1">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">General</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkHBox" id="hbox5">
+             <property name="visible">True</property>
+             <property name="homogeneous">False</property>
+             <property name="spacing">2</property>
+
+             <child>
+               <widget class="GtkVBox" id="vbox5">
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">0</property>
+
+                 <child>
+                   <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                     <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                     <property name="shadow_type">GTK_SHADOW_IN</property>
+                     <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+                     <child>
+                       <widget class="GtkTreeView" id="plugin_list">
+                         <property name="visible">True</property>
+                         <property name="can_focus">True</property>
+                         <property name="headers_visible">True</property>
+                         <property name="rules_hint">True</property>
+                         <property name="reorderable">False</property>
+                         <property name="enable_search">True</property>
+                         <property name="fixed_height_mode">False</property>
+                         <property name="hover_selection">False</property>
+                         <property name="hover_expand">False</property>
+                       </widget>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">True</property>
+                     <property name="fill">True</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkLabel" id="plugin_desc">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label"></property>
+                     <property name="use_underline">False</property>
+                     <property name="use_markup">False</property>
+                     <property name="justify">GTK_JUSTIFY_LEFT</property>
+                     <property name="wrap">True</property>
+                     <property name="selectable">True</property>
+                     <property name="xalign">0</property>
+                     <property name="yalign">0.5</property>
+                     <property name="xpad">0</property>
+                     <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_END</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">True</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkVBox" id="vbox6">
+                 <property name="border_width">2</property>
+                 <property name="visible">True</property>
+                 <property name="homogeneous">False</property>
+                 <property name="spacing">2</property>
+
+                 <child>
+                   <widget class="GtkButton" id="add_btn">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label">gtk-add</property>
+                     <property name="use_stock">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkButton" id="remove_btn">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label">gtk-remove</property>
+                     <property name="use_stock">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkButton" id="edit_btn">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="label">gtk-edit</property>
+                     <property name="use_stock">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkButton" id="moveup_btn">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+
+                     <child>
+                       <widget class="GtkImage" id="image1">
+                         <property name="visible">True</property>
+                         <property name="stock">gtk-go-up</property>
+                         <property name="icon_size">4</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                       </widget>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+
+                 <child>
+                   <widget class="GtkButton" id="movedown_btn">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="relief">GTK_RELIEF_NORMAL</property>
+                     <property name="focus_on_click">True</property>
+
+                     <child>
+                       <widget class="GtkImage" id="image2">
+                         <property name="visible">True</property>
+                         <property name="stock">gtk-go-down</property>
+                         <property name="icon_size">4</property>
+                         <property name="xalign">0.5</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                       </widget>
+                     </child>
+                   </widget>
+                   <packing>
+                     <property name="padding">0</property>
+                     <property name="expand">False</property>
+                     <property name="fill">False</property>
+                   </packing>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">False</property>
+                 <property name="fill">True</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label3">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Panel Applets</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkFrame" id="frame6">
+             <property name="border_width">6</property>
+             <property name="visible">True</property>
+             <property name="label_xalign">0</property>
+             <property name="label_yalign">0.5</property>
+             <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+             <child>
+               <widget class="GtkAlignment" id="alignment6">
+                 <property name="visible">True</property>
+                 <property name="xalign">0.5</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xscale">1</property>
+                 <property name="yscale">1</property>
+                 <property name="top_padding">0</property>
+                 <property name="bottom_padding">0</property>
+                 <property name="left_padding">8</property>
+                 <property name="right_padding">0</property>
+
+                 <child>
+                   <widget class="GtkTable" id="table3">
+                     <property name="border_width">2</property>
+                     <property name="visible">True</property>
+                     <property name="n_rows">3</property>
+                     <property name="n_columns">2</property>
+                     <property name="homogeneous">False</property>
+                     <property name="row_spacing">2</property>
+                     <property name="column_spacing">0</property>
+
+                     <child>
+                       <widget class="GtkLabel" id="label23">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">File Manager:</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">False</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">1</property>
+                         <property name="top_attach">0</property>
+                         <property name="bottom_attach">1</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options"></property>
+                       </packing>
+                     </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="label24">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">Terminal Emulator:</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">False</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">1</property>
+                         <property name="top_attach">1</property>
+                         <property name="bottom_attach">2</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options"></property>
+                       </packing>
+                     </child>
+
+                     <child>
+                       <widget class="GtkLabel" id="logout_label">
+                         <property name="visible">True</property>
+                         <property name="label" translatable="yes">Logout Command:</property>
+                         <property name="use_underline">False</property>
+                         <property name="use_markup">False</property>
+                         <property name="justify">GTK_JUSTIFY_LEFT</property>
+                         <property name="wrap">False</property>
+                         <property name="selectable">False</property>
+                         <property name="xalign">0</property>
+                         <property name="yalign">0.5</property>
+                         <property name="xpad">0</property>
+                         <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
+                       </widget>
+                       <packing>
+                         <property name="left_attach">0</property>
+                         <property name="right_attach">1</property>
+                         <property name="top_attach">2</property>
+                         <property name="bottom_attach">3</property>
+                         <property name="x_options">fill</property>
+                         <property name="y_options"></property>
+                       </packing>
+                     </child>
+
+                     <child>
+                       <widget class="GtkEntry" id="file_manager">
+                         <property name="visible">True</property>
+                         <property name="can_focus">True</property>
+                         <property name="editable">True</property>
+                         <property name="visibility">True</property>
+                         <property name="max_length">0</property>
+                         <property name="text"></property>
+                         <property name="has_frame">True</property>
+                         <property name="invisible_char">●</property>
+                         <property name="activates_default">False</property>
+                       </widget>
+                       <packing>
+                         <property name="left_attach">1</property>
+                         <property name="right_attach">2</property>
+                         <property name="top_attach">0</property>
+                         <property name="bottom_attach">1</property>
+                         <property name="y_options"></property>
+                       </packing>
+                     </child>
+
+                     <child>
+                       <widget class="GtkEntry" id="term">
+                         <property name="visible">True</property>
+                         <property name="can_focus">True</property>
+                         <property name="editable">True</property>
+                         <property name="visibility">True</property>
+                         <property name="max_length">0</property>
+                         <property name="text"></property>
+                         <property name="has_frame">True</property>
+                         <property name="invisible_char">●</property>
+                         <property name="activates_default">False</property>
+                       </widget>
+                       <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>
+                       <widget class="GtkEntry" id="logout">
+                         <property name="visible">True</property>
+                         <property name="can_focus">True</property>
+                         <property name="editable">True</property>
+                         <property name="visibility">True</property>
+                         <property name="max_length">0</property>
+                         <property name="text"></property>
+                         <property name="has_frame">True</property>
+                         <property name="invisible_char">●</property>
+                         <property name="activates_default">False</property>
+                       </widget>
+                       <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>
+                   </widget>
+                 </child>
+               </widget>
+             </child>
+
+             <child>
+               <widget class="GtkLabel" id="label22">
+                 <property name="visible">True</property>
+                 <property name="label" translatable="yes">&lt;b&gt;Set Preferred Applications&lt;/b&gt;</property>
+                 <property name="use_underline">False</property>
+                 <property name="use_markup">True</property>
+                 <property name="justify">GTK_JUSTIFY_LEFT</property>
+                 <property name="wrap">False</property>
+                 <property name="selectable">False</property>
+                 <property name="xalign">0.5</property>
+                 <property name="yalign">0.5</property>
+                 <property name="xpad">0</property>
+                 <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
+               </widget>
+               <packing>
+                 <property name="type">label_item</property>
+               </packing>
+             </child>
+           </widget>
+           <packing>
+             <property name="tab_expand">False</property>
+             <property name="tab_fill">True</property>
+           </packing>
+         </child>
+
+         <child>
+           <widget class="GtkLabel" id="label4">
+             <property name="visible">True</property>
+             <property name="label" translatable="yes">Advanced</property>
+             <property name="use_underline">False</property>
+             <property name="use_markup">False</property>
+             <property name="justify">GTK_JUSTIFY_LEFT</property>
+             <property name="wrap">False</property>
+             <property name="selectable">False</property>
+             <property name="xalign">0.5</property>
+             <property name="yalign">0.5</property>
+             <property name="xpad">0</property>
+             <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
+           </widget>
+           <packing>
+             <property name="type">tab</property>
+           </packing>
+         </child>
+       </widget>
+       <packing>
+         <property name="padding">0</property>
+         <property name="expand">True</property>
+         <property name="fill">True</property>
+       </packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>
index bf1976a..43cf201 100644 (file)
@@ -1,3 +1,5 @@
+data/ui/panel-pref.glade
+
 src/bg.c
 src/configurator.c
 src/dbg.c
index 810a40b..cb69769 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxpanel-0.2.6\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-14 21:09+0800\n"
+"POT-Creation-Date: 2008-04-17 01:29+0800\n"
 "PO-Revision-Date: 2008-05-01 00:00+0100\n"
 "Last-Translator: Frank Endres <frank_endres@yahoo.fr>\n"
 "Language-Team: French\n"
@@ -18,276 +18,273 @@ msgstr ""
 "X-Poedit-Bookmarks: 19,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
 "X-Poedit-Country: Poland\n"
 
-#. { "configure", N_("Preferences"), configure },
-#: ../src/configurator.c:44 ../src/gtk-run.c:112
-msgid "Run"
-msgstr "Exécuter"
-
-#: ../src/configurator.c:45
-msgid "Restart"
-msgstr "Redémarrer"
+#: ../data/ui/panel-pref.glade.h:1
+msgid "<b>Background</b>"
+msgstr "<b>Fond du panneau</b>"
 
-#: ../src/configurator.c:46
-msgid "Logout"
-msgstr "Déconnexion"
+#: ../data/ui/panel-pref.glade.h:2
+#, fuzzy
+msgid "<b>Font</b>"
+msgstr "<b>Connexion</b>"
 
-#: ../src/configurator.c:224
+#: ../data/ui/panel-pref.glade.h:3
 msgid "<b>Position</b>"
 msgstr "<b>Position</b>"
 
-#. Edge
-#: ../src/configurator.c:241
-msgid "Edge:"
-msgstr "Emplacement:"
-
-#: ../src/configurator.c:248 ../src/configurator.c:272
-msgid "Left"
-msgstr "Gauche"
+#: ../data/ui/panel-pref.glade.h:4
+msgid "<b>Properties</b>"
+msgstr "<b>Propriétés</b>"
 
-#: ../src/configurator.c:249 ../src/configurator.c:274
-msgid "Right"
-msgstr "Droite"
+#: ../data/ui/panel-pref.glade.h:5
+msgid "<b>Set Preferred Applications</b>"
+msgstr "<b>Applications préférées</b>"
 
-#: ../src/configurator.c:250
-msgid "Top"
-msgstr "Haut"
+#: ../data/ui/panel-pref.glade.h:6
+msgid "<b>Size</b>"
+msgstr "<b>Taille</b>"
 
-#: ../src/configurator.c:251
-msgid "Bottom"
-msgstr "Bas"
+#: ../data/ui/panel-pref.glade.h:7
+msgid "Advanced"
+msgstr ""
 
-#. Alignment
-#: ../src/configurator.c:264
+#: ../data/ui/panel-pref.glade.h:8
 msgid "Alignment:"
 msgstr "Alignement:"
 
-#: ../src/configurator.c:273
-msgid "Center"
-msgstr "Centré"
+#: ../data/ui/panel-pref.glade.h:9
+msgid "Custom Color"
+msgstr ""
 
-#. Margin
-#: ../src/configurator.c:286
-msgid "Margin:"
-msgstr "Marge:"
+#: ../data/ui/panel-pref.glade.h:11
+#, no-c-format
+msgid ""
+"Dynamic\n"
+"Pixels\n"
+"% Percent"
+msgstr ""
 
-#: ../src/configurator.c:357
-msgid "<b>Size</b>"
-msgstr "<b>Taille</b>"
+#: ../data/ui/panel-pref.glade.h:14
+msgid "Edge:"
+msgstr "Emplacement:"
 
-#. width
-#: ../src/configurator.c:374
-msgid "Width:"
-msgstr "Largeur:"
+#: ../data/ui/panel-pref.glade.h:15
+msgid "Enable Image:"
+msgstr "Image:"
 
-#: ../src/configurator.c:388
-msgid "dynamic"
-msgstr "dynamique"
+#: ../data/ui/panel-pref.glade.h:16
+msgid "Enable Transparency"
+msgstr "Transparent"
 
-#: ../src/configurator.c:389 ../src/configurator.c:417
-msgid "pixels"
-msgstr "pixels"
+#: ../data/ui/panel-pref.glade.h:17
+msgid "File Manager:"
+msgstr "Gestionnaire de fichiers:"
 
-#: ../src/configurator.c:390
-#, fuzzy, c-format
-msgid "% of edge"
-msgstr "pourcentage"
+#: ../data/ui/panel-pref.glade.h:18
+#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
+msgid "General"
+msgstr "Général"
 
-#. height
-#: ../src/configurator.c:403
+#: ../data/ui/panel-pref.glade.h:19
 msgid "Height:"
 msgstr "Hauteur:"
 
-#: ../src/configurator.c:458
-msgid "Enable Transparency"
-msgstr "Transparent"
+#: ../data/ui/panel-pref.glade.h:20
+msgid ""
+"Left\n"
+"Center\n"
+"Right"
+msgstr ""
 
-#: ../src/configurator.c:462
-msgid "Tint color:"
-msgstr "Teinte:"
+#: ../data/ui/panel-pref.glade.h:23
+msgid ""
+"Left\n"
+"Right\n"
+"Top\n"
+"Bottom"
+msgstr ""
 
-#: ../src/configurator.c:521
-msgid "Enable Image:"
-msgstr "Image:"
+#: ../data/ui/panel-pref.glade.h:27
+msgid "Logout Command:"
+msgstr "Commande de déconnexion:"
 
-#: ../src/configurator.c:524
-msgid "Select a background image file"
-msgstr "Sélectionner une image de fond pour le panneau"
+#: ../data/ui/panel-pref.glade.h:28
+msgid "Make window managers treat the panel as dock"
+msgstr "Ancrer le panneau"
 
-#: ../src/configurator.c:594
-msgid "<b>Background</b>"
-msgstr "<b>Fond du panneau</b>"
+#: ../data/ui/panel-pref.glade.h:29
+msgid "Margin:"
+msgstr "Marge:"
 
-#. Disable Background option
-#: ../src/configurator.c:609
+#: ../data/ui/panel-pref.glade.h:30
 msgid "None (Use system theme)"
 msgstr "Normal (utiliser le thème du système)"
 
-#: ../src/configurator.c:640
+#: ../data/ui/panel-pref.glade.h:31
 #, fuzzy
-msgid "<b>Font</b>"
-msgstr "<b>Connexion</b>"
-
-#. fnt = gtk_font_button_new();
-#. gtk_box_pack_start( (GtkBox*)hbox, fnt, TRUE, TRUE, 4 );
-#: ../src/configurator.c:650
-msgid "Custom Color"
-msgstr ""
+msgid "Panel Applets"
+msgstr "Configuration"
 
-#: ../src/configurator.c:700
-msgid "<b>Properties</b>"
-msgstr "<b>Propriétés</b>"
+#: ../data/ui/panel-pref.glade.h:32
+#, fuzzy
+msgid "Panel Preferences"
+msgstr "Préférences"
 
-#: ../src/configurator.c:722
-msgid "Make window managers treat the panel as dock"
-msgstr "Ancrer le panneau"
+#: ../data/ui/panel-pref.glade.h:33
+#, fuzzy
+msgid "Pixels"
+msgstr "pixels"
 
-#: ../src/configurator.c:738
+#: ../data/ui/panel-pref.glade.h:34
 msgid "Reserve space, and not covered by maximized windows"
 msgstr "Empêcher les fenêtres de recouvrir le panneau"
 
-#: ../src/configurator.c:794
+#: ../data/ui/panel-pref.glade.h:35
+#, fuzzy
+msgid "Select an image file"
+msgstr "Sélectionner une image de fond pour le panneau"
+
+#: ../data/ui/panel-pref.glade.h:36
+msgid "Terminal Emulator:"
+msgstr "Émulateur de terminal:"
+
+#: ../data/ui/panel-pref.glade.h:37
+msgid "Tint color:"
+msgstr "Teinte:"
+
+#: ../data/ui/panel-pref.glade.h:38
+msgid "Width:"
+msgstr "Largeur:"
+
+#. { "configure", N_("Preferences"), configure },
+#: ../src/configurator.c:46 ../src/gtk-run.c:112
+msgid "Run"
+msgstr "Exécuter"
+
+#: ../src/configurator.c:47
+msgid "Restart"
+msgstr "Redémarrer"
+
+#: ../src/configurator.c:48
+msgid "Logout"
+msgstr "Déconnexion"
+
+#: ../src/configurator.c:389
 msgid "Currently loaded plugins"
 msgstr "Plugins actifs"
 
-#: ../src/configurator.c:890
+#: ../src/configurator.c:485 ../src/panel.c:497
 msgid "Add plugin to panel"
 msgstr "Ajouter un plugin au panneau"
 
-#: ../src/configurator.c:917
+#: ../src/configurator.c:512 ../src/panel.c:520
 msgid "Available plugins"
 msgstr "Plugins disponibles"
 
-#: ../src/configurator.c:1207
-msgid "<b>Set Preferred Applications</b>"
-msgstr "<b>Applications préférées</b>"
-
-#: ../src/configurator.c:1217
-msgid "File Manager:"
-msgstr "Gestionnaire de fichiers:"
-
-#: ../src/configurator.c:1230
-msgid "Terminal Emulator:"
-msgstr "Émulateur de terminal:"
-
-#: ../src/configurator.c:1245
-msgid "Logout Command:"
-msgstr "Commande de déconnexion:"
-
-#: ../src/configurator.c:1265
-msgid "lxpanel configurator"
-msgstr "Configuration du panneau LXPanel"
-
-#: ../src/configurator.c:1291
-#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
-msgid "General"
-msgstr "Général"
+#: ../src/configurator.c:1054
+msgid "Logout command is not set"
+msgstr "La commande de déconnexion n'est pas définie"
 
-#: ../src/configurator.c:1296
-msgid "Appearance"
+#: ../src/panel.c:573 ../src/panel.c:665
+msgid "Create New Panel"
 msgstr ""
 
-#: ../src/configurator.c:1301
-msgid "Plugins"
-msgstr "Plugins"
-
-#: ../src/configurator.c:1306
-msgid "Applications"
+#: ../src/panel.c:589
+msgid ""
+"Really delete this panel?\n"
+"<b>Warning: This can not be recovered.</b>"
 msgstr ""
 
-#: ../src/configurator.c:1467
-msgid "Logout command is not set"
-msgstr "La commande de déconnexion n'est pas définie"
+#: ../src/panel.c:590
+#, fuzzy
+msgid "Confirm"
+msgstr "Con_figuration"
 
-#: ../src/panel.c:441
+#: ../src/panel.c:617
 #, fuzzy, c-format
 msgid "\"%s\" Settings"
 msgstr "Configuration"
 
-#: ../src/panel.c:451
+#: ../src/panel.c:639
 #, fuzzy
-msgid "Add Item To Panel"
+msgid "Add / Remove Panel Items"
 msgstr "Ajouter un plugin au panneau"
 
-#: ../src/panel.c:456
+#: ../src/panel.c:647
 #, c-format
 msgid "Remove \"%s\" From Panel"
 msgstr ""
 
-#: ../src/panel.c:468
-msgid "Create New Panel"
-msgstr ""
-
-#: ../src/panel.c:473
-msgid "Delete This Panel"
-msgstr ""
-
-#: ../src/panel.c:481
+#: ../src/panel.c:659
 #, fuzzy
 msgid "Panel Settings"
 msgstr "Configuration"
 
-#: ../src/panel.c:490
+#: ../src/panel.c:671
+msgid "Delete This Panel"
+msgstr ""
+
+#: ../src/panel.c:683
 msgid "Panel"
 msgstr ""
 
-#: ../src/panel.c:947
+#: ../src/panel.c:1137
 #, c-format
 msgid "lxpanel %s - lightweight GTK2+ panel for UNIX desktops\n"
 msgstr "lxpanel %s - panneau léger GTK2+ pour environnement de bureau UNIX\n"
 
-#: ../src/panel.c:948
+#: ../src/panel.c:1138
 #, c-format
 msgid "Command line options:\n"
 msgstr "Options de la ligne de commande:\n"
 
-#: ../src/panel.c:949
+#: ../src/panel.c:1139
 #, c-format
 msgid " --help      -- print this help and exit\n"
 msgstr " --help      -- affiche ce message d'aide et quitte\n"
 
-#: ../src/panel.c:950
+#: ../src/panel.c:1140
 #, c-format
 msgid " --version   -- print version and exit\n"
 msgstr " --version   -- affiche le numéro de version et quitte\n"
 
-#: ../src/panel.c:951
+#: ../src/panel.c:1141
 #, c-format
 msgid " --log <number> -- set log level 0-5. 0 - none 5 - chatty\n"
 msgstr ""
 " --log <nombre> -- défini la quantité d'informations de débogage 0-5. 0 - "
 "aucun 5 -  maximum\n"
 
-#: ../src/panel.c:952
+#: ../src/panel.c:1142
 #, c-format
 msgid " --configure -- launch configuration utility\n"
 msgstr " --configure -- lance l'utilitaire de configuration\n"
 
-#: ../src/panel.c:953
+#: ../src/panel.c:1143
 #, c-format
 msgid " --profile name -- use specified profile\n"
 msgstr " --profile nom -- utilise le profile spécifié\n"
 
-#: ../src/panel.c:955
+#: ../src/panel.c:1145
 #, c-format
 msgid " -h  -- same as --help\n"
 msgstr " -h  -- équivalent à --help\n"
 
-#: ../src/panel.c:956
+#: ../src/panel.c:1146
 #, c-format
 msgid " -p  -- same as --profile\n"
 msgstr " -p  -- équivalent à --profile\n"
 
-#: ../src/panel.c:957
+#: ../src/panel.c:1147
 #, c-format
 msgid " -v  -- same as --version\n"
 msgstr " -v  -- équivalent à --version\n"
 
-#: ../src/panel.c:958
+#: ../src/panel.c:1148
 #, c-format
 msgid " -C  -- same as --configure\n"
 msgstr " -C  -- équivalent à --configure\n"
 
-#: ../src/panel.c:959
+#: ../src/panel.c:1149
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -311,11 +308,11 @@ msgstr "Zone de notification"
 msgid "Old KDE/GNOME Tray"
 msgstr "Zone de notification système"
 
-#: ../src/plugins/cpu/cpu.c:208
+#: ../src/plugins/cpu/cpu.c:222
 msgid "CPU Usage Monitor"
 msgstr "Moniteur du processeur"
 
-#: ../src/plugins/cpu/cpu.c:210
+#: ../src/plugins/cpu/cpu.c:224
 msgid "Display CPU usage"
 msgstr "Affiche le taux d'utilisation du processeur"
 
@@ -425,90 +422,90 @@ msgstr "Déplacer vers l'espace de travail"
 msgid "Close Window"
 msgstr "Fermer la fenêtre"
 
-#: ../src/plugins/taskbar.c:1517
+#: ../src/plugins/taskbar.c:1516
 msgid "Show tooltips"
 msgstr "Montrer les bulles d'aide"
 
-#: ../src/plugins/taskbar.c:1518
+#: ../src/plugins/taskbar.c:1517
 msgid "Icons only"
 msgstr "Icônes uniquement"
 
-#: ../src/plugins/taskbar.c:1519
+#: ../src/plugins/taskbar.c:1518
 #, fuzzy
 msgid "Flat Buttons"
 msgstr "Boutons"
 
-#: ../src/plugins/taskbar.c:1520
+#: ../src/plugins/taskbar.c:1519
 msgid "Accept SkipPager"
 msgstr "Inclure le gestionnaire de bureau virtuels"
 
-#: ../src/plugins/taskbar.c:1521
+#: ../src/plugins/taskbar.c:1520
 msgid "Show Iconified windows"
 msgstr "Montrer les fenêtres minimisées"
 
-#: ../src/plugins/taskbar.c:1522
+#: ../src/plugins/taskbar.c:1521
 msgid "Show mapped windows"
 msgstr "Montrer les fenêtres visibles"
 
-#: ../src/plugins/taskbar.c:1523
+#: ../src/plugins/taskbar.c:1522
 msgid "Show windows from all desktops"
 msgstr "Montrer les fenêtres de tous les espaces de travail"
 
-#: ../src/plugins/taskbar.c:1524
+#: ../src/plugins/taskbar.c:1523
 msgid "Use mouse wheel"
 msgstr "Utiliser la molette de la souris"
 
-#: ../src/plugins/taskbar.c:1525
+#: ../src/plugins/taskbar.c:1524
 msgid "Flash when there is any window requiring attention"
 msgstr "Clignoter lorsque une fenêtre requiert de l'attention"
 
-#: ../src/plugins/taskbar.c:1526
+#: ../src/plugins/taskbar.c:1525
 msgid "Max width of task button"
 msgstr "Largeur maximale d'un bouton de tâche"
 
-#: ../src/plugins/taskbar.c:1527
+#: ../src/plugins/taskbar.c:1526
 msgid "Spacing"
 msgstr "Espacement entre les boutons"
 
-#: ../src/plugins/taskbar.c:1605
+#: ../src/plugins/taskbar.c:1604
 msgid "Task Bar (Window List)"
 msgstr "Barre des tâches"
 
-#: ../src/plugins/taskbar.c:1607
+#: ../src/plugins/taskbar.c:1606
 msgid ""
 "Taskbar shows all opened windows and allow to iconify them, shade or get "
 "focus"
 msgstr "Montre la liste des fenêtres"
 
-#: ../src/plugins/dclock.c:278
+#: ../src/plugins/dclock.c:286
 msgid "Clock Format"
 msgstr "Format de l'heure"
 
-#: ../src/plugins/dclock.c:279
+#: ../src/plugins/dclock.c:287
 msgid "Tooltip Format"
 msgstr "Format des bulles d'aide"
 
-#: ../src/plugins/dclock.c:280
+#: ../src/plugins/dclock.c:288
 msgid "Action"
 msgstr ""
 
-#: ../src/plugins/dclock.c:281
+#: ../src/plugins/dclock.c:289
 msgid "Bold font"
 msgstr "Police grasse"
 
-#: ../src/plugins/dclock.c:316
+#: ../src/plugins/dclock.c:324
 msgid "Digital Clock"
 msgstr "Montre digitale"
 
-#: ../src/plugins/dclock.c:318
+#: ../src/plugins/dclock.c:326
 msgid "Display Digital clock and Tooltip"
 msgstr "Affiche l'heure et la date"
 
-#: ../src/plugins/menu.c:587
+#: ../src/plugins/menu.c:595
 msgid "Menu"
 msgstr "Menu d'applications"
 
-#: ../src/plugins/menu.c:589
+#: ../src/plugins/menu.c:597
 msgid "Provide Menu"
 msgstr "Accès aux applications"
 
@@ -524,15 +521,15 @@ msgstr "Ajouter un séparateur sur le panneau"
 msgid "Dispaly Image and Tooltip"
 msgstr "Afficher les images et les bulles d'aide"
 
-#: ../src/plugins/pager.c:704
+#: ../src/plugins/pager.c:709
 msgid "Desktop Pager"
 msgstr "Bureaux virtuels"
 
-#: ../src/plugins/pager.c:706
+#: ../src/plugins/pager.c:711
 msgid "Simple pager plugin"
 msgstr "Affiche les bureaux virtuels"
 
-#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:818
+#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:824
 msgid "Size"
 msgstr "Taille"
 
@@ -544,17 +541,17 @@ msgstr "<Espace>"
 msgid "Allocate space"
 msgstr "Espacement"
 
-#: ../src/plugins/wincmd.c:252
+#: ../src/plugins/wincmd.c:255
 msgid "Left click to iconify all windows. Middle click to shade them"
 msgstr ""
 "Clic gauche pour masquer toutes les fenêtres. Bouton du milieu pour les "
 "enrouler"
 
-#: ../src/plugins/wincmd.c:281
+#: ../src/plugins/wincmd.c:284
 msgid "Minimize All Windows"
 msgstr "Masquer le bureau"
 
-#: ../src/plugins/wincmd.c:283
+#: ../src/plugins/wincmd.c:286
 msgid ""
 "Sends commands to all desktop windows.\n"
 "Supported commnds are 1)toggle iconify and 2) toggle shade"
@@ -564,21 +561,21 @@ msgstr "Minimise les fenêtres de l'espace de travail."
 msgid "Open in _Terminal"
 msgstr "Ouvrir avec un _Terminal"
 
-#: ../src/plugins/dirmenu.c:372
+#: ../src/plugins/dirmenu.c:371
 msgid "Directory Menu"
 msgstr "Menu des Répertoires"
 
-#: ../src/plugins/dirmenu.c:374
+#: ../src/plugins/dirmenu.c:373
 msgid "Browse directory tree via menu (Author: PCMan)"
 msgstr "Parcours de l'arborescence via un menu"
 
 #. FIXME: display current level in tooltip. ex: "Volume Control: 80%"
-#: ../src/plugins/volume/volume.c:146
+#: ../src/plugins/volume/volume.c:153
 #: ../src/plugins/volumealsa/volumealsa.c:290
 msgid "Volume control"
 msgstr "Contrôle du volume"
 
-#: ../src/plugins/volume/volume.c:158
+#: ../src/plugins/volume/volume.c:165
 #: ../src/plugins/volumealsa/volumealsa.c:304
 msgid "Volume Control"
 msgstr "Contrôle du volume"
@@ -911,53 +908,87 @@ msgstr ""
 msgid "No batteries found"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:808
+#: ../src/plugins/batt/batt.c:814
 msgid "Hide if there is no battery"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:810
+#: ../src/plugins/batt/batt.c:816
 msgid "Alarm command"
 msgstr "Commande d'alarme"
 
-#: ../src/plugins/batt/batt.c:811
+#: ../src/plugins/batt/batt.c:817
 msgid "Alarm time (minutes left)"
 msgstr "Moment de l'alarme (minutes restantes)"
 
-#: ../src/plugins/batt/batt.c:812
+#: ../src/plugins/batt/batt.c:818
 msgid "Background color"
 msgstr "Couleur de fond"
 
-#: ../src/plugins/batt/batt.c:813
+#: ../src/plugins/batt/batt.c:819
 msgid "Charging color 1"
 msgstr "Couleur de chargement n°1"
 
-#: ../src/plugins/batt/batt.c:814
+#: ../src/plugins/batt/batt.c:820
 msgid "Charging color 2"
 msgstr "Couleur de chargement n°2"
 
-#: ../src/plugins/batt/batt.c:815
+#: ../src/plugins/batt/batt.c:821
 msgid "Discharging color 1"
 msgstr "Couleur de déchargement n°1"
 
-#: ../src/plugins/batt/batt.c:816
+#: ../src/plugins/batt/batt.c:822
 msgid "Discharging color 2"
 msgstr "Couleur de déchargement n°2"
 
-#: ../src/plugins/batt/batt.c:817
+#: ../src/plugins/batt/batt.c:823
 msgid "Border width"
 msgstr "Épaisseur de la bordure"
 
-#: ../src/plugins/batt/batt.c:852
+#: ../src/plugins/batt/batt.c:858
 msgid "Battery Monitor"
 msgstr "Moniteur des batteries"
 
-#: ../src/plugins/batt/batt.c:854
+#: ../src/plugins/batt/batt.c:860
 msgid "Display battery status using ACPI"
 msgstr "Afficher l'état de charge des batteries"
 
+#~ msgid "dynamic"
+#~ msgstr "dynamique"
+
+#~ msgid "pixels"
+#~ msgstr "pixels"
+
 #, fuzzy
-#~ msgid "Panel Preference"
-#~ msgstr "Préférences"
+#~ msgid "% of edge"
+#~ msgstr "pourcentage"
+
+#~ msgid "Select a background image file"
+#~ msgstr "Sélectionner une image de fond pour le panneau"
+
+#~ msgid "Plugins"
+#~ msgstr "Plugins"
+
+#~ msgid "Left"
+#~ msgstr "Gauche"
+
+#~ msgid "Right"
+#~ msgstr "Droite"
+
+#~ msgid "Top"
+#~ msgstr "Haut"
+
+#~ msgid "Bottom"
+#~ msgstr "Bas"
+
+#~ msgid "Center"
+#~ msgstr "Centré"
+
+#, fuzzy
+#~ msgid "Logout Command"
+#~ msgstr "Commande de déconnexion:"
+
+#~ msgid "lxpanel configurator"
+#~ msgstr "Configuration du panneau LXPanel"
 
 #, fuzzy
 #~ msgid "Background"
index b04e6fc..bae5c42 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxpanel-0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-14 21:09+0800\n"
+"POT-Creation-Date: 2008-04-17 01:29+0800\n"
 "PO-Revision-Date: 2008-03-30 16:49+0100\n"
 "Last-Translator: SZERVÁC Attila <sas@321.hu>\n"
 "Language-Team: Hungarian <debian-l10n-hungarian@lists.debian.org>\n"
@@ -18,276 +18,273 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=n>1;\n"
 "X-Poedit-Language: Hungarian\n"
 
-#. { "configure", N_("Preferences"), configure },
-#: ../src/configurator.c:44 ../src/gtk-run.c:112
-msgid "Run"
-msgstr "Futtat"
-
-#: ../src/configurator.c:45
-msgid "Restart"
-msgstr "Újraindít"
+#: ../data/ui/panel-pref.glade.h:1
+msgid "<b>Background</b>"
+msgstr "<b>Háttér</b>"
 
-#: ../src/configurator.c:46
-msgid "Logout"
-msgstr "Kijelentkezés"
+#: ../data/ui/panel-pref.glade.h:2
+#, fuzzy
+msgid "<b>Font</b>"
+msgstr "<b>Kapcsolat</b>"
 
-#: ../src/configurator.c:224
+#: ../data/ui/panel-pref.glade.h:3
 msgid "<b>Position</b>"
 msgstr "<b>Helyzet</b>"
 
-#. Edge
-#: ../src/configurator.c:241
-msgid "Edge:"
-msgstr "Szél:"
-
-#: ../src/configurator.c:248 ../src/configurator.c:272
-msgid "Left"
-msgstr "Balra"
+#: ../data/ui/panel-pref.glade.h:4
+msgid "<b>Properties</b>"
+msgstr "<b>Tulajdonságok</b>"
 
-#: ../src/configurator.c:249 ../src/configurator.c:274
-msgid "Right"
-msgstr "Jobbra"
+#: ../data/ui/panel-pref.glade.h:5
+msgid "<b>Set Preferred Applications</b>"
+msgstr "<b>Kedvenc alkalmazások beállítása</b>"
 
-#: ../src/configurator.c:250
-msgid "Top"
-msgstr "Fel"
+#: ../data/ui/panel-pref.glade.h:6
+msgid "<b>Size</b>"
+msgstr "<b>Méret</b>"
 
-#: ../src/configurator.c:251
-msgid "Bottom"
-msgstr "Le"
+#: ../data/ui/panel-pref.glade.h:7
+msgid "Advanced"
+msgstr ""
 
-#. Alignment
-#: ../src/configurator.c:264
+#: ../data/ui/panel-pref.glade.h:8
 msgid "Alignment:"
 msgstr "Igazítás"
 
-#: ../src/configurator.c:273
-msgid "Center"
-msgstr "Közép"
+#: ../data/ui/panel-pref.glade.h:9
+msgid "Custom Color"
+msgstr ""
 
-#. Margin
-#: ../src/configurator.c:286
-msgid "Margin:"
-msgstr "Margó"
+#: ../data/ui/panel-pref.glade.h:11
+#, no-c-format
+msgid ""
+"Dynamic\n"
+"Pixels\n"
+"% Percent"
+msgstr ""
 
-#: ../src/configurator.c:357
-msgid "<b>Size</b>"
-msgstr "<b>Méret</b>"
+#: ../data/ui/panel-pref.glade.h:14
+msgid "Edge:"
+msgstr "Szél:"
 
-#. width
-#: ../src/configurator.c:374
-msgid "Width:"
-msgstr "Szélesség:"
+#: ../data/ui/panel-pref.glade.h:15
+msgid "Enable Image:"
+msgstr "Kép bekapcsolása:"
 
-#: ../src/configurator.c:388
-msgid "dynamic"
-msgstr "dinamikus"
+#: ../data/ui/panel-pref.glade.h:16
+msgid "Enable Transparency"
+msgstr "Átlátszóság bekapcsolva"
 
-#: ../src/configurator.c:389 ../src/configurator.c:417
-msgid "pixels"
-msgstr "képpontok"
+#: ../data/ui/panel-pref.glade.h:17
+msgid "File Manager:"
+msgstr "Fájlkezelő:"
 
-#: ../src/configurator.c:390
-#, c-format
-msgid "% of edge"
-msgstr "% a széléből"
+#: ../data/ui/panel-pref.glade.h:18
+#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
+msgid "General"
+msgstr "Általános"
 
-#. height
-#: ../src/configurator.c:403
+#: ../data/ui/panel-pref.glade.h:19
 msgid "Height:"
 msgstr "Magasság:"
 
-#: ../src/configurator.c:458
-msgid "Enable Transparency"
-msgstr "Átlátszóság bekapcsolva"
+#: ../data/ui/panel-pref.glade.h:20
+msgid ""
+"Left\n"
+"Center\n"
+"Right"
+msgstr ""
 
-#: ../src/configurator.c:462
-msgid "Tint color:"
-msgstr "Színárnyalat:"
+#: ../data/ui/panel-pref.glade.h:23
+msgid ""
+"Left\n"
+"Right\n"
+"Top\n"
+"Bottom"
+msgstr ""
 
-#: ../src/configurator.c:521
-msgid "Enable Image:"
-msgstr "Kép bekapcsolása:"
+#: ../data/ui/panel-pref.glade.h:27
+msgid "Logout Command:"
+msgstr "Kijelentkező parancs:"
 
-#: ../src/configurator.c:524
-msgid "Select a background image file"
-msgstr "Válassz egy háttér-kép fájlt"
+#: ../data/ui/panel-pref.glade.h:28
+msgid "Make window managers treat the panel as dock"
+msgstr "Az ablakkezelők a panelt dokként kezeljék"
 
-#: ../src/configurator.c:594
-msgid "<b>Background</b>"
-msgstr "<b>Háttér</b>"
+#: ../data/ui/panel-pref.glade.h:29
+msgid "Margin:"
+msgstr "Margó"
 
-#. Disable Background option
-#: ../src/configurator.c:609
+#: ../data/ui/panel-pref.glade.h:30
 msgid "None (Use system theme)"
 msgstr "Nincs (Rendszertéma használata)"
 
-#: ../src/configurator.c:640
+#: ../data/ui/panel-pref.glade.h:31
 #, fuzzy
-msgid "<b>Font</b>"
-msgstr "<b>Kapcsolat</b>"
-
-#. fnt = gtk_font_button_new();
-#. gtk_box_pack_start( (GtkBox*)hbox, fnt, TRUE, TRUE, 4 );
-#: ../src/configurator.c:650
-msgid "Custom Color"
-msgstr ""
+msgid "Panel Applets"
+msgstr "Beállítások"
 
-#: ../src/configurator.c:700
-msgid "<b>Properties</b>"
-msgstr "<b>Tulajdonságok</b>"
+#: ../data/ui/panel-pref.glade.h:32
+#, fuzzy
+msgid "Panel Preferences"
+msgstr "Jellemzők"
 
-#: ../src/configurator.c:722
-msgid "Make window managers treat the panel as dock"
-msgstr "Az ablakkezelők a panelt dokként kezeljék"
+#: ../data/ui/panel-pref.glade.h:33
+#, fuzzy
+msgid "Pixels"
+msgstr "képpontok"
 
-#: ../src/configurator.c:738
+#: ../data/ui/panel-pref.glade.h:34
 msgid "Reserve space, and not covered by maximized windows"
 msgstr "Hely fenntartása, melyet nem fednek le a maximált ablakok"
 
-#: ../src/configurator.c:794
-msgid "Currently loaded plugins"
-msgstr "A most betöltött beillesztések"
-
-#: ../src/configurator.c:890
-msgid "Add plugin to panel"
-msgstr "Beillesztések hozzáadása a panelhoz"
-
-#: ../src/configurator.c:917
-msgid "Available plugins"
-msgstr "Elérhető beillesztések"
-
-#: ../src/configurator.c:1207
-msgid "<b>Set Preferred Applications</b>"
-msgstr "<b>Kedvenc alkalmazások beállítása</b>"
-
-#: ../src/configurator.c:1217
-msgid "File Manager:"
-msgstr "Fájlkezelő:"
+#: ../data/ui/panel-pref.glade.h:35
+#, fuzzy
+msgid "Select an image file"
+msgstr "Válassz egy háttér-kép fájlt"
 
-#: ../src/configurator.c:1230
+#: ../data/ui/panel-pref.glade.h:36
 msgid "Terminal Emulator:"
 msgstr "Terminál emulátor:"
 
-#: ../src/configurator.c:1245
-msgid "Logout Command:"
-msgstr "Kijelentkező parancs:"
+#: ../data/ui/panel-pref.glade.h:37
+msgid "Tint color:"
+msgstr "Színárnyalat:"
+
+#: ../data/ui/panel-pref.glade.h:38
+msgid "Width:"
+msgstr "Szélesség:"
 
-#: ../src/configurator.c:1265
-msgid "lxpanel configurator"
-msgstr "lxpanel beállító"
+#. { "configure", N_("Preferences"), configure },
+#: ../src/configurator.c:46 ../src/gtk-run.c:112
+msgid "Run"
+msgstr "Futtat"
 
-#: ../src/configurator.c:1291
-#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
-msgid "General"
-msgstr "Általános"
+#: ../src/configurator.c:47
+msgid "Restart"
+msgstr "Újraindít"
+
+#: ../src/configurator.c:48
+msgid "Logout"
+msgstr "Kijelentkezés"
 
-#: ../src/configurator.c:1296
-msgid "Appearance"
-msgstr "Megjelenés"
+#: ../src/configurator.c:389
+msgid "Currently loaded plugins"
+msgstr "A most betöltött beillesztések"
 
-#: ../src/configurator.c:1301
-msgid "Plugins"
-msgstr "Beillesztések"
+#: ../src/configurator.c:485 ../src/panel.c:497
+msgid "Add plugin to panel"
+msgstr "Beillesztések hozzáadása a panelhoz"
 
-#: ../src/configurator.c:1306
-msgid "Applications"
-msgstr "Alkalmazások"
+#: ../src/configurator.c:512 ../src/panel.c:520
+msgid "Available plugins"
+msgstr "Elérhető beillesztések"
 
-#: ../src/configurator.c:1467
+#: ../src/configurator.c:1054
 msgid "Logout command is not set"
 msgstr "Nincs beállítva kijelentkező parancs"
 
-#: ../src/panel.c:441
+#: ../src/panel.c:573 ../src/panel.c:665
+msgid "Create New Panel"
+msgstr ""
+
+#: ../src/panel.c:589
+msgid ""
+"Really delete this panel?\n"
+"<b>Warning: This can not be recovered.</b>"
+msgstr ""
+
+#: ../src/panel.c:590
+#, fuzzy
+msgid "Confirm"
+msgstr "Beállít"
+
+#: ../src/panel.c:617
 #, fuzzy, c-format
 msgid "\"%s\" Settings"
 msgstr "Beállítások"
 
-#: ../src/panel.c:451
+#: ../src/panel.c:639
 #, fuzzy
-msgid "Add Item To Panel"
+msgid "Add / Remove Panel Items"
 msgstr "Beillesztések hozzáadása a panelhoz"
 
-#: ../src/panel.c:456
+#: ../src/panel.c:647
 #, c-format
 msgid "Remove \"%s\" From Panel"
 msgstr ""
 
-#: ../src/panel.c:468
-msgid "Create New Panel"
-msgstr ""
-
-#: ../src/panel.c:473
-msgid "Delete This Panel"
-msgstr ""
-
-#: ../src/panel.c:481
+#: ../src/panel.c:659
 #, fuzzy
 msgid "Panel Settings"
 msgstr "Beállítások"
 
-#: ../src/panel.c:490
+#: ../src/panel.c:671
+msgid "Delete This Panel"
+msgstr ""
+
+#: ../src/panel.c:683
 msgid "Panel"
 msgstr ""
 
-#: ../src/panel.c:947
+#: ../src/panel.c:1137
 #, c-format
 msgid "lxpanel %s - lightweight GTK2+ panel for UNIX desktops\n"
 msgstr "lxpanel %s - könnyű GTK2+ panel UNIXos jellegű asztalokhoz\n"
 
-#: ../src/panel.c:948
+#: ../src/panel.c:1138
 #, c-format
 msgid "Command line options:\n"
 msgstr "Parancssori lehetőségek:\n"
 
-#: ../src/panel.c:949
+#: ../src/panel.c:1139
 #, c-format
 msgid " --help      -- print this help and exit\n"
 msgstr " --help      -- kiírja e súgót és kilép\n"
 
-#: ../src/panel.c:950
+#: ../src/panel.c:1140
 #, c-format
 msgid " --version   -- print version and exit\n"
 msgstr " --version   -- kiírja a verziót és kilép\n"
 
-#: ../src/panel.c:951
+#: ../src/panel.c:1141
 #, c-format
 msgid " --log <number> -- set log level 0-5. 0 - none 5 - chatty\n"
 msgstr ""
 " --log <szám> -- napló szint beállítása 0 és 5 között. 0 - üres 5 - "
 "csacsogó\n"
 
-#: ../src/panel.c:952
+#: ../src/panel.c:1142
 #, c-format
 msgid " --configure -- launch configuration utility\n"
 msgstr " --configure -- beállító eszköz indítása\n"
 
-#: ../src/panel.c:953
+#: ../src/panel.c:1143
 #, c-format
 msgid " --profile name -- use specified profile\n"
 msgstr " --profile name -- adott profil használata\n"
 
-#: ../src/panel.c:955
+#: ../src/panel.c:1145
 #, c-format
 msgid " -h  -- same as --help\n"
 msgstr " -h  -- ugyanaz, mint a --help\n"
 
-#: ../src/panel.c:956
+#: ../src/panel.c:1146
 #, c-format
 msgid " -p  -- same as --profile\n"
 msgstr " -p  -- ugyanaz, mint a --profile\n"
 
-#: ../src/panel.c:957
+#: ../src/panel.c:1147
 #, c-format
 msgid " -v  -- same as --version\n"
 msgstr " -v  -- ugyanaz, mint a --version\n"
 
-#: ../src/panel.c:958
+#: ../src/panel.c:1148
 #, c-format
 msgid " -C  -- same as --configure\n"
 msgstr " -C  -- ugyanaz, mint a --configure\n"
 
-#: ../src/panel.c:959
+#: ../src/panel.c:1149
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -310,11 +307,11 @@ msgstr "Rendszer tálca"
 msgid "Old KDE/GNOME Tray"
 msgstr "Régi KDE/GNOME tálca"
 
-#: ../src/plugins/cpu/cpu.c:208
+#: ../src/plugins/cpu/cpu.c:222
 msgid "CPU Usage Monitor"
 msgstr "CPU használat figyelő"
 
-#: ../src/plugins/cpu/cpu.c:210
+#: ../src/plugins/cpu/cpu.c:224
 msgid "Display CPU usage"
 msgstr "CPU használat mutatása"
 
@@ -424,56 +421,56 @@ msgstr "Munkaterületre mozgatás"
 msgid "Close Window"
 msgstr "Ablak bezárása"
 
-#: ../src/plugins/taskbar.c:1517
+#: ../src/plugins/taskbar.c:1516
 msgid "Show tooltips"
 msgstr "Eszköztippek mutatása"
 
-#: ../src/plugins/taskbar.c:1518
+#: ../src/plugins/taskbar.c:1517
 msgid "Icons only"
 msgstr "Csak ikonok"
 
-#: ../src/plugins/taskbar.c:1519
+#: ../src/plugins/taskbar.c:1518
 #, fuzzy
 msgid "Flat Buttons"
 msgstr "Gombok"
 
-#: ../src/plugins/taskbar.c:1520
+#: ../src/plugins/taskbar.c:1519
 msgid "Accept SkipPager"
 msgstr ""
 
-#: ../src/plugins/taskbar.c:1521
+#: ../src/plugins/taskbar.c:1520
 msgid "Show Iconified windows"
 msgstr "Ikonná tett ablakok mutatása"
 
-#: ../src/plugins/taskbar.c:1522
+#: ../src/plugins/taskbar.c:1521
 msgid "Show mapped windows"
 msgstr "Elhelyezett ablakok mutatása"
 
-#: ../src/plugins/taskbar.c:1523
+#: ../src/plugins/taskbar.c:1522
 msgid "Show windows from all desktops"
 msgstr "Ablakok mutatása minden asztalról"
 
-#: ../src/plugins/taskbar.c:1524
+#: ../src/plugins/taskbar.c:1523
 msgid "Use mouse wheel"
 msgstr "Egérgörgő használata"
 
-#: ../src/plugins/taskbar.c:1525
+#: ../src/plugins/taskbar.c:1524
 msgid "Flash when there is any window requiring attention"
 msgstr "Villan, ha egy ablak figyelmet kér"
 
-#: ../src/plugins/taskbar.c:1526
+#: ../src/plugins/taskbar.c:1525
 msgid "Max width of task button"
 msgstr "Feladat gomb maximális mérete"
 
-#: ../src/plugins/taskbar.c:1527
+#: ../src/plugins/taskbar.c:1526
 msgid "Spacing"
 msgstr "Térköz"
 
-#: ../src/plugins/taskbar.c:1605
+#: ../src/plugins/taskbar.c:1604
 msgid "Task Bar (Window List)"
 msgstr "Feladatsáv (ablak lista)"
 
-#: ../src/plugins/taskbar.c:1607
+#: ../src/plugins/taskbar.c:1606
 msgid ""
 "Taskbar shows all opened windows and allow to iconify them, shade or get "
 "focus"
@@ -481,35 +478,35 @@ msgstr ""
 "A feladatsáv mutatja a megnyitott ablakokat és lehetővé teszi ikonná "
 "tevésüket, az árnyékolást vagy fókusz kapást"
 
-#: ../src/plugins/dclock.c:278
+#: ../src/plugins/dclock.c:286
 msgid "Clock Format"
 msgstr "Óra forma"
 
-#: ../src/plugins/dclock.c:279
+#: ../src/plugins/dclock.c:287
 msgid "Tooltip Format"
 msgstr "Eszköztipp forma"
 
-#: ../src/plugins/dclock.c:280
+#: ../src/plugins/dclock.c:288
 msgid "Action"
 msgstr "Művelet"
 
-#: ../src/plugins/dclock.c:281
+#: ../src/plugins/dclock.c:289
 msgid "Bold font"
 msgstr "Félkövér betű"
 
-#: ../src/plugins/dclock.c:316
+#: ../src/plugins/dclock.c:324
 msgid "Digital Clock"
 msgstr "Digitális óra"
 
-#: ../src/plugins/dclock.c:318
+#: ../src/plugins/dclock.c:326
 msgid "Display Digital clock and Tooltip"
 msgstr "Digitális óra és eszköztipp mutatása"
 
-#: ../src/plugins/menu.c:587
+#: ../src/plugins/menu.c:595
 msgid "Menu"
 msgstr "Menü"
 
-#: ../src/plugins/menu.c:589
+#: ../src/plugins/menu.c:597
 msgid "Provide Menu"
 msgstr ""
 
@@ -525,15 +522,15 @@ msgstr "Elválasztó hozzáadása a panelhoz"
 msgid "Dispaly Image and Tooltip"
 msgstr "Kép és eszköztipp mutatása"
 
-#: ../src/plugins/pager.c:704
+#: ../src/plugins/pager.c:709
 msgid "Desktop Pager"
 msgstr "Asztali lapozó"
 
-#: ../src/plugins/pager.c:706
+#: ../src/plugins/pager.c:711
 msgid "Simple pager plugin"
 msgstr "Egyszerű lapozó beillesztés"
 
-#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:818
+#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:824
 msgid "Size"
 msgstr "Méret"
 
@@ -545,15 +542,15 @@ msgstr "<Térköz>"
 msgid "Allocate space"
 msgstr "Helyfoglalás"
 
-#: ../src/plugins/wincmd.c:252
+#: ../src/plugins/wincmd.c:255
 msgid "Left click to iconify all windows. Middle click to shade them"
 msgstr "A bal gomb minden ablakot ikonná tesz. A középső árnyékba teszi őket"
 
-#: ../src/plugins/wincmd.c:281
+#: ../src/plugins/wincmd.c:284
 msgid "Minimize All Windows"
 msgstr "Ablakok minimalizálása"
 
-#: ../src/plugins/wincmd.c:283
+#: ../src/plugins/wincmd.c:286
 msgid ""
 "Sends commands to all desktop windows.\n"
 "Supported commnds are 1)toggle iconify and 2) toggle shade"
@@ -565,21 +562,21 @@ msgstr ""
 msgid "Open in _Terminal"
 msgstr "Megnyitás _terminálban"
 
-#: ../src/plugins/dirmenu.c:372
+#: ../src/plugins/dirmenu.c:371
 msgid "Directory Menu"
 msgstr "Könyvtár menü"
 
-#: ../src/plugins/dirmenu.c:374
+#: ../src/plugins/dirmenu.c:373
 msgid "Browse directory tree via menu (Author: PCMan)"
 msgstr "Könyvtárfa böngészése menüvel (Szerző: PCMan)"
 
 #. FIXME: display current level in tooltip. ex: "Volume Control: 80%"
-#: ../src/plugins/volume/volume.c:146
+#: ../src/plugins/volume/volume.c:153
 #: ../src/plugins/volumealsa/volumealsa.c:290
 msgid "Volume control"
 msgstr "Hangerő:"
 
-#: ../src/plugins/volume/volume.c:158
+#: ../src/plugins/volume/volume.c:165
 #: ../src/plugins/volumealsa/volumealsa.c:304
 msgid "Volume Control"
 msgstr "Hangerő-szabályzó"
@@ -903,53 +900,92 @@ msgstr ""
 msgid "No batteries found"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:808
+#: ../src/plugins/batt/batt.c:814
 msgid "Hide if there is no battery"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:810
+#: ../src/plugins/batt/batt.c:816
 msgid "Alarm command"
 msgstr "Riasztási parancs"
 
-#: ../src/plugins/batt/batt.c:811
+#: ../src/plugins/batt/batt.c:817
 msgid "Alarm time (minutes left)"
 msgstr "Riasztási idő (maradó percek)"
 
-#: ../src/plugins/batt/batt.c:812
+#: ../src/plugins/batt/batt.c:818
 msgid "Background color"
 msgstr "Háttérszín"
 
-#: ../src/plugins/batt/batt.c:813
+#: ../src/plugins/batt/batt.c:819
 msgid "Charging color 1"
 msgstr "Töltöttség szín 1"
 
-#: ../src/plugins/batt/batt.c:814
+#: ../src/plugins/batt/batt.c:820
 msgid "Charging color 2"
 msgstr "Töltöttség szín 2"
 
-#: ../src/plugins/batt/batt.c:815
+#: ../src/plugins/batt/batt.c:821
 msgid "Discharging color 1"
 msgstr "Lemerülő szín 1"
 
-#: ../src/plugins/batt/batt.c:816
+#: ../src/plugins/batt/batt.c:822
 msgid "Discharging color 2"
 msgstr "Lemerülő szín 2"
 
-#: ../src/plugins/batt/batt.c:817
+#: ../src/plugins/batt/batt.c:823
 msgid "Border width"
 msgstr "A keret mérete"
 
-#: ../src/plugins/batt/batt.c:852
+#: ../src/plugins/batt/batt.c:858
 msgid "Battery Monitor"
 msgstr "Aksi figyelő"
 
-#: ../src/plugins/batt/batt.c:854
+#: ../src/plugins/batt/batt.c:860
 msgid "Display battery status using ACPI"
 msgstr "Aksi állapotának jelzése ACPI által"
 
+#~ msgid "Applications"
+#~ msgstr "Alkalmazások"
+
+#~ msgid "dynamic"
+#~ msgstr "dinamikus"
+
+#~ msgid "pixels"
+#~ msgstr "képpontok"
+
+#~ msgid "% of edge"
+#~ msgstr "% a széléből"
+
+#~ msgid "Select a background image file"
+#~ msgstr "Válassz egy háttér-kép fájlt"
+
+#~ msgid "Appearance"
+#~ msgstr "Megjelenés"
+
+#~ msgid "Plugins"
+#~ msgstr "Beillesztések"
+
+#~ msgid "Left"
+#~ msgstr "Balra"
+
+#~ msgid "Right"
+#~ msgstr "Jobbra"
+
+#~ msgid "Top"
+#~ msgstr "Fel"
+
+#~ msgid "Bottom"
+#~ msgstr "Le"
+
+#~ msgid "Center"
+#~ msgstr "Közép"
+
 #, fuzzy
-#~ msgid "Panel Preference"
-#~ msgstr "Jellemzők"
+#~ msgid "Logout Command"
+#~ msgstr "Kijelentkező parancs:"
+
+#~ msgid "lxpanel configurator"
+#~ msgstr "lxpanel beállító"
 
 #, fuzzy
 #~ msgid "Background"
index 722e2f3..c369a9d 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxpanel 0.1.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-14 21:09+0800\n"
+"POT-Creation-Date: 2008-04-17 01:29+0800\n"
 "PO-Revision-Date: 2006-11-27 00:13+0800\n"
 "Last-Translator: 洪任諭 <pcman.tw@gmail.com>\n"
 "Language-Team: GNOME Korean Team <gnome-kr-hackers@lists.kldp.net>\n"
@@ -16,275 +16,270 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#. { "configure", N_("Preferences"), configure },
-#: ../src/configurator.c:44 ../src/gtk-run.c:112
-msgid "Run"
-msgstr "실행"
-
-#: ../src/configurator.c:45
-msgid "Restart"
-msgstr "다시 시작"
-
-#: ../src/configurator.c:46
-msgid "Logout"
+#: ../data/ui/panel-pref.glade.h:1
+msgid "<b>Background</b>"
 msgstr ""
 
-#: ../src/configurator.c:224
-msgid "<b>Position</b>"
+#: ../data/ui/panel-pref.glade.h:2
+#, fuzzy
+msgid "<b>Font</b>"
 msgstr "<b>자리</b>"
 
-#. Edge
-#: ../src/configurator.c:241
-msgid "Edge:"
-msgstr "자리:"
+#: ../data/ui/panel-pref.glade.h:3
+msgid "<b>Position</b>"
+msgstr "<b>자리</b>"
 
-#: ../src/configurator.c:248 ../src/configurator.c:272
-msgid "Left"
-msgstr "왼쪽"
+#: ../data/ui/panel-pref.glade.h:4
+msgid "<b>Properties</b>"
+msgstr "<b>속성</b>"
 
-#: ../src/configurator.c:249 ../src/configurator.c:274
-msgid "Right"
-msgstr "오른쪽"
+#: ../data/ui/panel-pref.glade.h:5
+msgid "<b>Set Preferred Applications</b>"
+msgstr ""
 
-#: ../src/configurator.c:250
-msgid "Top"
-msgstr "위쪽"
+#: ../data/ui/panel-pref.glade.h:6
+msgid "<b>Size</b>"
+msgstr "<b>크기</b>"
 
-#: ../src/configurator.c:251
-msgid "Bottom"
-msgstr "아래쪽"
+#: ../data/ui/panel-pref.glade.h:7
+msgid "Advanced"
+msgstr ""
 
-#. Alignment
-#: ../src/configurator.c:264
+#: ../data/ui/panel-pref.glade.h:8
 msgid "Alignment:"
 msgstr "배치:"
 
-#: ../src/configurator.c:273
-msgid "Center"
-msgstr "가운데"
+#: ../data/ui/panel-pref.glade.h:9
+msgid "Custom Color"
+msgstr ""
 
-#. Margin
-#: ../src/configurator.c:286
-msgid "Margin:"
-msgstr "띄우기:"
+#: ../data/ui/panel-pref.glade.h:11
+#, no-c-format
+msgid ""
+"Dynamic\n"
+"Pixels\n"
+"% Percent"
+msgstr ""
 
-#: ../src/configurator.c:357
-msgid "<b>Size</b>"
-msgstr "<b>크기</b>"
+#: ../data/ui/panel-pref.glade.h:14
+msgid "Edge:"
+msgstr "자리:"
 
-#. width
-#: ../src/configurator.c:374
-msgid "Width:"
-msgstr "너비"
+#: ../data/ui/panel-pref.glade.h:15
+msgid "Enable Image:"
+msgstr ""
 
-#: ../src/configurator.c:388
-msgid "dynamic"
-msgstr "가변폭"
+#: ../data/ui/panel-pref.glade.h:16
+msgid "Enable Transparency"
+msgstr "투명하게"
 
-#: ../src/configurator.c:389 ../src/configurator.c:417
-msgid "pixels"
-msgstr "픽셀"
+#: ../data/ui/panel-pref.glade.h:17
+msgid "File Manager:"
+msgstr ""
 
-#: ../src/configurator.c:390
-#, c-format
-msgid "% of edge"
-msgstr "비율"
+#: ../data/ui/panel-pref.glade.h:18
+#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
+msgid "General"
+msgstr "일반"
 
-#. height
-#: ../src/configurator.c:403
+#: ../data/ui/panel-pref.glade.h:19
 msgid "Height:"
 msgstr "높이:"
 
-#: ../src/configurator.c:458
-msgid "Enable Transparency"
-msgstr "투명하게"
-
-#: ../src/configurator.c:462
-msgid "Tint color:"
-msgstr "색조:"
+#: ../data/ui/panel-pref.glade.h:20
+msgid ""
+"Left\n"
+"Center\n"
+"Right"
+msgstr ""
 
-#: ../src/configurator.c:521
-msgid "Enable Image:"
+#: ../data/ui/panel-pref.glade.h:23
+msgid ""
+"Left\n"
+"Right\n"
+"Top\n"
+"Bottom"
 msgstr ""
 
-#: ../src/configurator.c:524
-msgid "Select a background image file"
+#: ../data/ui/panel-pref.glade.h:27
+msgid "Logout Command:"
 msgstr ""
 
-#: ../src/configurator.c:594
-msgid "<b>Background</b>"
+#: ../data/ui/panel-pref.glade.h:28
+msgid "Make window managers treat the panel as dock"
 msgstr ""
 
-#. Disable Background option
-#: ../src/configurator.c:609
+#: ../data/ui/panel-pref.glade.h:29
+msgid "Margin:"
+msgstr "띄우기:"
+
+#: ../data/ui/panel-pref.glade.h:30
 msgid "None (Use system theme)"
 msgstr ""
 
-#: ../src/configurator.c:640
+#: ../data/ui/panel-pref.glade.h:31
 #, fuzzy
-msgid "<b>Font</b>"
-msgstr "<b>자리</b>"
+msgid "Panel Applets"
+msgstr "설정"
 
-#. fnt = gtk_font_button_new();
-#. gtk_box_pack_start( (GtkBox*)hbox, fnt, TRUE, TRUE, 4 );
-#: ../src/configurator.c:650
-msgid "Custom Color"
+#: ../data/ui/panel-pref.glade.h:32
+#, fuzzy
+msgid "Panel Preferences"
+msgstr "속성"
+
+#: ../data/ui/panel-pref.glade.h:33
+#, fuzzy
+msgid "Pixels"
+msgstr "픽셀"
+
+#: ../data/ui/panel-pref.glade.h:34
+msgid "Reserve space, and not covered by maximized windows"
 msgstr ""
 
-#: ../src/configurator.c:700
-msgid "<b>Properties</b>"
-msgstr "<b>속성</b>"
+#: ../data/ui/panel-pref.glade.h:35
+msgid "Select an image file"
+msgstr ""
 
-#: ../src/configurator.c:722
-msgid "Make window managers treat the panel as dock"
+#: ../data/ui/panel-pref.glade.h:36
+msgid "Terminal Emulator:"
 msgstr ""
 
-#: ../src/configurator.c:738
-msgid "Reserve space, and not covered by maximized windows"
+#: ../data/ui/panel-pref.glade.h:37
+msgid "Tint color:"
+msgstr "색조:"
+
+#: ../data/ui/panel-pref.glade.h:38
+msgid "Width:"
+msgstr "너비"
+
+#. { "configure", N_("Preferences"), configure },
+#: ../src/configurator.c:46 ../src/gtk-run.c:112
+msgid "Run"
+msgstr "실행"
+
+#: ../src/configurator.c:47
+msgid "Restart"
+msgstr "다시 시작"
+
+#: ../src/configurator.c:48
+msgid "Logout"
 msgstr ""
 
-#: ../src/configurator.c:794
+#: ../src/configurator.c:389
 msgid "Currently loaded plugins"
 msgstr "지금 쓰는 플러그인"
 
-#: ../src/configurator.c:890
+#: ../src/configurator.c:485 ../src/panel.c:497
 msgid "Add plugin to panel"
 msgstr ""
 
-#: ../src/configurator.c:917
+#: ../src/configurator.c:512 ../src/panel.c:520
 msgid "Available plugins"
 msgstr ""
 
-#: ../src/configurator.c:1207
-msgid "<b>Set Preferred Applications</b>"
-msgstr ""
-
-#: ../src/configurator.c:1217
-msgid "File Manager:"
-msgstr ""
-
-#: ../src/configurator.c:1230
-msgid "Terminal Emulator:"
-msgstr ""
-
-#: ../src/configurator.c:1245
-msgid "Logout Command:"
+#: ../src/configurator.c:1054
+msgid "Logout command is not set"
 msgstr ""
 
-#: ../src/configurator.c:1265
-msgid "lxpanel configurator"
-msgstr "가벼운 패널 설정"
-
-#: ../src/configurator.c:1291
-#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
-msgid "General"
-msgstr "일반"
-
-#: ../src/configurator.c:1296
-msgid "Appearance"
+#: ../src/panel.c:573 ../src/panel.c:665
+msgid "Create New Panel"
 msgstr ""
 
-#: ../src/configurator.c:1301
-msgid "Plugins"
-msgstr "플러그인"
-
-#: ../src/configurator.c:1306
-msgid "Applications"
+#: ../src/panel.c:589
+msgid ""
+"Really delete this panel?\n"
+"<b>Warning: This can not be recovered.</b>"
 msgstr ""
 
-#: ../src/configurator.c:1467
-msgid "Logout command is not set"
+#: ../src/panel.c:590
+msgid "Confirm"
 msgstr ""
 
-#: ../src/panel.c:441
+#: ../src/panel.c:617
 #, fuzzy, c-format
 msgid "\"%s\" Settings"
 msgstr "설정"
 
-#: ../src/panel.c:451
-msgid "Add Item To Panel"
+#: ../src/panel.c:639
+msgid "Add / Remove Panel Items"
 msgstr ""
 
-#: ../src/panel.c:456
+#: ../src/panel.c:647
 #, c-format
 msgid "Remove \"%s\" From Panel"
 msgstr ""
 
-#: ../src/panel.c:468
-msgid "Create New Panel"
-msgstr ""
-
-#: ../src/panel.c:473
-msgid "Delete This Panel"
-msgstr ""
-
-#: ../src/panel.c:481
+#: ../src/panel.c:659
 #, fuzzy
 msgid "Panel Settings"
 msgstr "설정"
 
-#: ../src/panel.c:490
+#: ../src/panel.c:671
+msgid "Delete This Panel"
+msgstr ""
+
+#: ../src/panel.c:683
 msgid "Panel"
 msgstr ""
 
-#: ../src/panel.c:947
+#: ../src/panel.c:1137
 #, c-format
 msgid "lxpanel %s - lightweight GTK2+ panel for UNIX desktops\n"
 msgstr "lxpanel %s - GTK2+를 쓴 유닉스 환경의 가벼운 패널\n"
 
-#: ../src/panel.c:948
+#: ../src/panel.c:1138
 #, c-format
 msgid "Command line options:\n"
 msgstr "명령줄 옵션:\n"
 
-#: ../src/panel.c:949
+#: ../src/panel.c:1139
 #, c-format
 msgid " --help      -- print this help and exit\n"
 msgstr " --help      -- 도움말이 나오고 끝납니다\n"
 
-#: ../src/panel.c:950
+#: ../src/panel.c:1140
 #, c-format
 msgid " --version   -- print version and exit\n"
 msgstr " --version   -- 버전이 나오고 끝납니다\n"
 
-#: ../src/panel.c:951
+#: ../src/panel.c:1141
 #, c-format
 msgid " --log <number> -- set log level 0-5. 0 - none 5 - chatty\n"
 msgstr ""
 " --log <숫자>   -- 기록 수준을 0부터 5까지 정합니다. 0은 조용하고 5는 수다쟁"
 "이\n"
 
-#: ../src/panel.c:952
+#: ../src/panel.c:1142
 #, c-format
 msgid " --configure -- launch configuration utility\n"
 msgstr " --configure -- 설정창을 띄웁니다\n"
 
-#: ../src/panel.c:953
+#: ../src/panel.c:1143
 #, c-format
 msgid " --profile name -- use specified profile\n"
 msgstr " --profile 이름 -- 지정한 프로파일을 씁니다\n"
 
-#: ../src/panel.c:955
+#: ../src/panel.c:1145
 #, c-format
 msgid " -h  -- same as --help\n"
 msgstr " -h  -- --help와 같습니다\n"
 
-#: ../src/panel.c:956
+#: ../src/panel.c:1146
 #, c-format
 msgid " -p  -- same as --profile\n"
 msgstr " -p  -- --profile과 같습니다\n"
 
-#: ../src/panel.c:957
+#: ../src/panel.c:1147
 #, c-format
 msgid " -v  -- same as --version\n"
 msgstr " -v  -- --version과 같습니다\n"
 
-#: ../src/panel.c:958
+#: ../src/panel.c:1148
 #, c-format
 msgid " -C  -- same as --configure\n"
 msgstr " -C  -- --configure와 같습니다\n"
 
-#: ../src/panel.c:959
+#: ../src/panel.c:1149
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -307,11 +302,11 @@ msgstr "시스템 트레이"
 msgid "Old KDE/GNOME Tray"
 msgstr "KDE/GNOME 트레이"
 
-#: ../src/plugins/cpu/cpu.c:208
+#: ../src/plugins/cpu/cpu.c:222
 msgid "CPU Usage Monitor"
 msgstr "CPU 사용 감시"
 
-#: ../src/plugins/cpu/cpu.c:210
+#: ../src/plugins/cpu/cpu.c:224
 msgid "Display CPU usage"
 msgstr "CPU 사용량을 표시합니다"
 
@@ -421,55 +416,55 @@ msgstr ""
 msgid "Close Window"
 msgstr "닫기"
 
-#: ../src/plugins/taskbar.c:1517
+#: ../src/plugins/taskbar.c:1516
 msgid "Show tooltips"
 msgstr "툴팁 보기"
 
-#: ../src/plugins/taskbar.c:1518
+#: ../src/plugins/taskbar.c:1517
 msgid "Icons only"
 msgstr "아이콘만"
 
-#: ../src/plugins/taskbar.c:1519
+#: ../src/plugins/taskbar.c:1518
 msgid "Flat Buttons"
 msgstr ""
 
-#: ../src/plugins/taskbar.c:1520
+#: ../src/plugins/taskbar.c:1519
 msgid "Accept SkipPager"
 msgstr ""
 
-#: ../src/plugins/taskbar.c:1521
+#: ../src/plugins/taskbar.c:1520
 msgid "Show Iconified windows"
 msgstr "최소화한 창 보이기"
 
-#: ../src/plugins/taskbar.c:1522
+#: ../src/plugins/taskbar.c:1521
 msgid "Show mapped windows"
 msgstr ""
 
-#: ../src/plugins/taskbar.c:1523
+#: ../src/plugins/taskbar.c:1522
 msgid "Show windows from all desktops"
 msgstr "모든 작업공간의 창 보이기"
 
-#: ../src/plugins/taskbar.c:1524
+#: ../src/plugins/taskbar.c:1523
 msgid "Use mouse wheel"
 msgstr "휠로 창 전환 가능"
 
-#: ../src/plugins/taskbar.c:1525
+#: ../src/plugins/taskbar.c:1524
 msgid "Flash when there is any window requiring attention"
 msgstr "주목할 창이 있으면 깜빡이기"
 
-#: ../src/plugins/taskbar.c:1526
+#: ../src/plugins/taskbar.c:1525
 msgid "Max width of task button"
 msgstr "작업 버튼의 최대 너비"
 
-#: ../src/plugins/taskbar.c:1527
+#: ../src/plugins/taskbar.c:1526
 msgid "Spacing"
 msgstr "사이 띄우기"
 
-#: ../src/plugins/taskbar.c:1605
+#: ../src/plugins/taskbar.c:1604
 msgid "Task Bar (Window List)"
 msgstr "창 목록"
 
-#: ../src/plugins/taskbar.c:1607
+#: ../src/plugins/taskbar.c:1606
 msgid ""
 "Taskbar shows all opened windows and allow to iconify them, shade or get "
 "focus"
@@ -477,35 +472,35 @@ msgstr ""
 "Taskbar shows all opened windows and allow to iconify them, shade or get "
 "focus"
 
-#: ../src/plugins/dclock.c:278
+#: ../src/plugins/dclock.c:286
 msgid "Clock Format"
 msgstr "시계 형식"
 
-#: ../src/plugins/dclock.c:279
+#: ../src/plugins/dclock.c:287
 msgid "Tooltip Format"
 msgstr "툴팁 형식"
 
-#: ../src/plugins/dclock.c:280
+#: ../src/plugins/dclock.c:288
 msgid "Action"
 msgstr "명령"
 
-#: ../src/plugins/dclock.c:281
+#: ../src/plugins/dclock.c:289
 msgid "Bold font"
 msgstr ""
 
-#: ../src/plugins/dclock.c:316
+#: ../src/plugins/dclock.c:324
 msgid "Digital Clock"
 msgstr "숫자 시계"
 
-#: ../src/plugins/dclock.c:318
+#: ../src/plugins/dclock.c:326
 msgid "Display Digital clock and Tooltip"
 msgstr "숫자 시계와 툴팁을 보여줍니다"
 
-#: ../src/plugins/menu.c:587
+#: ../src/plugins/menu.c:595
 msgid "Menu"
 msgstr "메뉴"
 
-#: ../src/plugins/menu.c:589
+#: ../src/plugins/menu.c:597
 msgid "Provide Menu"
 msgstr ""
 
@@ -521,15 +516,15 @@ msgstr ""
 msgid "Dispaly Image and Tooltip"
 msgstr "그림과 툴팁을 보여줍니다"
 
-#: ../src/plugins/pager.c:704
+#: ../src/plugins/pager.c:709
 msgid "Desktop Pager"
 msgstr "pager"
 
-#: ../src/plugins/pager.c:706
+#: ../src/plugins/pager.c:711
 msgid "Simple pager plugin"
 msgstr "간단한 pager 플러그인"
 
-#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:818
+#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:824
 msgid "Size"
 msgstr "크기"
 
@@ -541,16 +536,16 @@ msgstr "사이 띄우기"
 msgid "Allocate space"
 msgstr ""
 
-#: ../src/plugins/wincmd.c:252
+#: ../src/plugins/wincmd.c:255
 msgid "Left click to iconify all windows. Middle click to shade them"
 msgstr ""
 "왼쪽 클릭으로 모든 창을 최소화하고, 가운데 클릭으로 모든 창을 말아올립니다"
 
-#: ../src/plugins/wincmd.c:281
+#: ../src/plugins/wincmd.c:284
 msgid "Minimize All Windows"
 msgstr "모든 창 최소화"
 
-#: ../src/plugins/wincmd.c:283
+#: ../src/plugins/wincmd.c:286
 msgid ""
 "Sends commands to all desktop windows.\n"
 "Supported commnds are 1)toggle iconify and 2) toggle shade"
@@ -560,21 +555,21 @@ msgstr ""
 msgid "Open in _Terminal"
 msgstr ""
 
-#: ../src/plugins/dirmenu.c:372
+#: ../src/plugins/dirmenu.c:371
 msgid "Directory Menu"
 msgstr ""
 
-#: ../src/plugins/dirmenu.c:374
+#: ../src/plugins/dirmenu.c:373
 msgid "Browse directory tree via menu (Author: PCMan)"
 msgstr ""
 
 #. FIXME: display current level in tooltip. ex: "Volume Control: 80%"
-#: ../src/plugins/volume/volume.c:146
+#: ../src/plugins/volume/volume.c:153
 #: ../src/plugins/volumealsa/volumealsa.c:290
 msgid "Volume control"
 msgstr "소리 크기 조절"
 
-#: ../src/plugins/volume/volume.c:158
+#: ../src/plugins/volume/volume.c:165
 #: ../src/plugins/volumealsa/volumealsa.c:304
 msgid "Volume Control"
 msgstr "소리 크기 조절"
@@ -894,54 +889,80 @@ msgstr ""
 msgid "No batteries found"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:808
+#: ../src/plugins/batt/batt.c:814
 msgid "Hide if there is no battery"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:810
+#: ../src/plugins/batt/batt.c:816
 msgid "Alarm command"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:811
+#: ../src/plugins/batt/batt.c:817
 msgid "Alarm time (minutes left)"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:812
+#: ../src/plugins/batt/batt.c:818
 msgid "Background color"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:813
+#: ../src/plugins/batt/batt.c:819
 msgid "Charging color 1"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:814
+#: ../src/plugins/batt/batt.c:820
 msgid "Charging color 2"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:815
+#: ../src/plugins/batt/batt.c:821
 msgid "Discharging color 1"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:816
+#: ../src/plugins/batt/batt.c:822
 msgid "Discharging color 2"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:817
+#: ../src/plugins/batt/batt.c:823
 msgid "Border width"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:852
+#: ../src/plugins/batt/batt.c:858
 #, fuzzy
 msgid "Battery Monitor"
 msgstr "CPU 사용 감시"
 
-#: ../src/plugins/batt/batt.c:854
+#: ../src/plugins/batt/batt.c:860
 msgid "Display battery status using ACPI"
 msgstr ""
 
-#, fuzzy
-#~ msgid "Panel Preference"
-#~ msgstr "속성"
+#~ msgid "dynamic"
+#~ msgstr "가변폭"
+
+#~ msgid "pixels"
+#~ msgstr "픽셀"
+
+#~ msgid "% of edge"
+#~ msgstr "비율"
+
+#~ msgid "Plugins"
+#~ msgstr "플러그인"
+
+#~ msgid "Left"
+#~ msgstr "왼쪽"
+
+#~ msgid "Right"
+#~ msgstr "오른쪽"
+
+#~ msgid "Top"
+#~ msgstr "위쪽"
+
+#~ msgid "Bottom"
+#~ msgstr "아래쪽"
+
+#~ msgid "Center"
+#~ msgstr "가운데"
+
+#~ msgid "lxpanel configurator"
+#~ msgstr "가벼운 패널 설정"
 
 #~ msgid "<b>Transparency</b>"
 #~ msgstr "<b>투명</b>"
index 9222bca..01c9021 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxpanel-0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-14 21:09+0800\n"
+"POT-Creation-Date: 2008-04-17 01:29+0800\n"
 "PO-Revision-Date: 2006-11-27 21:56+0100\n"
 "Last-Translator: Artur Kruszewski <mazdac@gmail.com>\n"
 "Language-Team: Polish\n"
@@ -19,279 +19,274 @@ msgstr ""
 "X-Poedit-Bookmarks: 19,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
 "X-Poedit-Country: Poland\n"
 
-#. { "configure", N_("Preferences"), configure },
-#: ../src/configurator.c:44 ../src/gtk-run.c:112
-msgid "Run"
-msgstr "Uruchom"
-
-#: ../src/configurator.c:45
-msgid "Restart"
-msgstr "Restartuj"
+#: ../data/ui/panel-pref.glade.h:1
+msgid "<b>Background</b>"
+msgstr ""
 
-#: ../src/configurator.c:46
-msgid "Logout"
-msgstr "Wyloguj"
+#: ../data/ui/panel-pref.glade.h:2
+#, fuzzy
+msgid "<b>Font</b>"
+msgstr "<b>Połączenie</b>"
 
-#: ../src/configurator.c:224
+#: ../data/ui/panel-pref.glade.h:3
 msgid "<b>Position</b>"
 msgstr "<b>Pozycja</b>"
 
-#. Edge
-#: ../src/configurator.c:241
-msgid "Edge:"
-msgstr "Krawędź:"
-
-#: ../src/configurator.c:248 ../src/configurator.c:272
-msgid "Left"
-msgstr "Lewa"
+#: ../data/ui/panel-pref.glade.h:4
+msgid "<b>Properties</b>"
+msgstr "<b>Właściwości</b>"
 
-#: ../src/configurator.c:249 ../src/configurator.c:274
-msgid "Right"
-msgstr "Prawa"
+#: ../data/ui/panel-pref.glade.h:5
+msgid "<b>Set Preferred Applications</b>"
+msgstr ""
 
-#: ../src/configurator.c:250
-msgid "Top"
-msgstr "Górna"
+#: ../data/ui/panel-pref.glade.h:6
+msgid "<b>Size</b>"
+msgstr "<b>Rozmiar</b>"
 
-#: ../src/configurator.c:251
-msgid "Bottom"
-msgstr "Dolna"
+#: ../data/ui/panel-pref.glade.h:7
+msgid "Advanced"
+msgstr ""
 
-#. Alignment
-#: ../src/configurator.c:264
+#: ../data/ui/panel-pref.glade.h:8
 msgid "Alignment:"
 msgstr "Wyrównanie:"
 
-#: ../src/configurator.c:273
-msgid "Center"
-msgstr "Środek"
-
-#. Margin
-#: ../src/configurator.c:286
-msgid "Margin:"
-msgstr "Margines:"
+#: ../data/ui/panel-pref.glade.h:9
+msgid "Custom Color"
+msgstr ""
 
-#: ../src/configurator.c:357
-msgid "<b>Size</b>"
-msgstr "<b>Rozmiar</b>"
+#: ../data/ui/panel-pref.glade.h:11
+#, no-c-format
+msgid ""
+"Dynamic\n"
+"Pixels\n"
+"% Percent"
+msgstr ""
 
-#. width
-#: ../src/configurator.c:374
-msgid "Width:"
-msgstr "Szerokość:"
+#: ../data/ui/panel-pref.glade.h:14
+msgid "Edge:"
+msgstr "Krawędź:"
 
-#: ../src/configurator.c:388
-msgid "dynamic"
-msgstr "dynamiczna"
+#: ../data/ui/panel-pref.glade.h:15
+msgid "Enable Image:"
+msgstr ""
 
-#: ../src/configurator.c:389 ../src/configurator.c:417
-msgid "pixels"
-msgstr "piksele"
+#: ../data/ui/panel-pref.glade.h:16
+msgid "Enable Transparency"
+msgstr "Włącz przezroczystość"
 
-#: ../src/configurator.c:390
-#, c-format
-msgid "% of edge"
+#: ../data/ui/panel-pref.glade.h:17
+msgid "File Manager:"
 msgstr ""
 
+#: ../data/ui/panel-pref.glade.h:18
+#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
+msgid "General"
+msgstr "Ogólne"
+
 # msgid "% of edge"
 # msgstr "% krawędźi"
-#. height
-#: ../src/configurator.c:403
+#: ../data/ui/panel-pref.glade.h:19
 msgid "Height:"
 msgstr "Wysokość:"
 
-#: ../src/configurator.c:458
-msgid "Enable Transparency"
-msgstr "Włącz przezroczystość"
-
-#: ../src/configurator.c:462
-msgid "Tint color:"
-msgstr "Kolor przesłony:"
-
-#: ../src/configurator.c:521
-msgid "Enable Image:"
+#: ../data/ui/panel-pref.glade.h:20
+msgid ""
+"Left\n"
+"Center\n"
+"Right"
 msgstr ""
 
-#: ../src/configurator.c:524
-msgid "Select a background image file"
+#: ../data/ui/panel-pref.glade.h:23
+msgid ""
+"Left\n"
+"Right\n"
+"Top\n"
+"Bottom"
 msgstr ""
 
-#: ../src/configurator.c:594
-msgid "<b>Background</b>"
+#: ../data/ui/panel-pref.glade.h:27
+#, fuzzy
+msgid "Logout Command:"
+msgstr "Komenda wylogowania nie jest ustawiona"
+
+#: ../data/ui/panel-pref.glade.h:28
+msgid "Make window managers treat the panel as dock"
 msgstr ""
 
-#. Disable Background option
-#: ../src/configurator.c:609
+#: ../data/ui/panel-pref.glade.h:29
+msgid "Margin:"
+msgstr "Margines:"
+
+#: ../data/ui/panel-pref.glade.h:30
 msgid "None (Use system theme)"
 msgstr ""
 
-#: ../src/configurator.c:640
+#: ../data/ui/panel-pref.glade.h:31
 #, fuzzy
-msgid "<b>Font</b>"
-msgstr "<b>Połączenie</b>"
+msgid "Panel Applets"
+msgstr "Ustawienia"
 
-#. fnt = gtk_font_button_new();
-#. gtk_box_pack_start( (GtkBox*)hbox, fnt, TRUE, TRUE, 4 );
-#: ../src/configurator.c:650
-msgid "Custom Color"
-msgstr ""
+#: ../data/ui/panel-pref.glade.h:32
+#, fuzzy
+msgid "Panel Preferences"
+msgstr "Preferencje"
 
-#: ../src/configurator.c:700
-msgid "<b>Properties</b>"
-msgstr "<b>Właściwości</b>"
+#: ../data/ui/panel-pref.glade.h:33
+#, fuzzy
+msgid "Pixels"
+msgstr "piksele"
 
-#: ../src/configurator.c:722
-msgid "Make window managers treat the panel as dock"
+#: ../data/ui/panel-pref.glade.h:34
+msgid "Reserve space, and not covered by maximized windows"
 msgstr ""
 
-#: ../src/configurator.c:738
-msgid "Reserve space, and not covered by maximized windows"
+#: ../data/ui/panel-pref.glade.h:35
+msgid "Select an image file"
+msgstr ""
+
+#: ../data/ui/panel-pref.glade.h:36
+msgid "Terminal Emulator:"
 msgstr ""
 
-#: ../src/configurator.c:794
+#: ../data/ui/panel-pref.glade.h:37
+msgid "Tint color:"
+msgstr "Kolor przesłony:"
+
+#: ../data/ui/panel-pref.glade.h:38
+msgid "Width:"
+msgstr "Szerokość:"
+
+#. { "configure", N_("Preferences"), configure },
+#: ../src/configurator.c:46 ../src/gtk-run.c:112
+msgid "Run"
+msgstr "Uruchom"
+
+#: ../src/configurator.c:47
+msgid "Restart"
+msgstr "Restartuj"
+
+#: ../src/configurator.c:48
+msgid "Logout"
+msgstr "Wyloguj"
+
+#: ../src/configurator.c:389
 msgid "Currently loaded plugins"
 msgstr "Załadowane wtyczki"
 
-#: ../src/configurator.c:890
+#: ../src/configurator.c:485 ../src/panel.c:497
 msgid "Add plugin to panel"
 msgstr "Dodaj wtyczkę do panelu"
 
-#: ../src/configurator.c:917
+#: ../src/configurator.c:512 ../src/panel.c:520
 msgid "Available plugins"
 msgstr "Dostępne wtyczki"
 
-#: ../src/configurator.c:1207
-msgid "<b>Set Preferred Applications</b>"
-msgstr ""
-
-#: ../src/configurator.c:1217
-msgid "File Manager:"
-msgstr ""
-
-#: ../src/configurator.c:1230
-msgid "Terminal Emulator:"
-msgstr ""
-
-#: ../src/configurator.c:1245
-#, fuzzy
-msgid "Logout Command:"
+#: ../src/configurator.c:1054
+msgid "Logout command is not set"
 msgstr "Komenda wylogowania nie jest ustawiona"
 
-#: ../src/configurator.c:1265
-msgid "lxpanel configurator"
-msgstr "konfigurator lxpanel"
-
-#: ../src/configurator.c:1291
-#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
-msgid "General"
-msgstr "Ogólne"
-
-#: ../src/configurator.c:1296
-msgid "Appearance"
+#: ../src/panel.c:573 ../src/panel.c:665
+msgid "Create New Panel"
 msgstr ""
 
-#: ../src/configurator.c:1301
-msgid "Plugins"
-msgstr "Wtyczki"
+#: ../src/panel.c:589
+msgid ""
+"Really delete this panel?\n"
+"<b>Warning: This can not be recovered.</b>"
+msgstr ""
 
-#: ../src/configurator.c:1306
+#: ../src/panel.c:590
 #, fuzzy
-msgid "Applications"
-msgstr "Wybierz program"
-
-#: ../src/configurator.c:1467
-msgid "Logout command is not set"
-msgstr "Komenda wylogowania nie jest ustawiona"
+msgid "Confirm"
+msgstr "Konfiguruj"
 
-#: ../src/panel.c:441
+#: ../src/panel.c:617
 #, fuzzy, c-format
 msgid "\"%s\" Settings"
 msgstr "Ustawienia"
 
-#: ../src/panel.c:451
+#: ../src/panel.c:639
 #, fuzzy
-msgid "Add Item To Panel"
+msgid "Add / Remove Panel Items"
 msgstr "Dodaj wtyczkę do panelu"
 
-#: ../src/panel.c:456
+#: ../src/panel.c:647
 #, c-format
 msgid "Remove \"%s\" From Panel"
 msgstr ""
 
-#: ../src/panel.c:468
-msgid "Create New Panel"
-msgstr ""
-
-#: ../src/panel.c:473
-msgid "Delete This Panel"
-msgstr ""
-
-#: ../src/panel.c:481
+#: ../src/panel.c:659
 #, fuzzy
 msgid "Panel Settings"
 msgstr "Ustawienia"
 
-#: ../src/panel.c:490
+#: ../src/panel.c:671
+msgid "Delete This Panel"
+msgstr ""
+
+#: ../src/panel.c:683
 msgid "Panel"
 msgstr ""
 
-#: ../src/panel.c:947
+#: ../src/panel.c:1137
 #, c-format
 msgid "lxpanel %s - lightweight GTK2+ panel for UNIX desktops\n"
 msgstr "lxpanel %s - lekki panel GTK2+ dla pulpitów UNIX\n"
 
-#: ../src/panel.c:948
+#: ../src/panel.c:1138
 #, c-format
 msgid "Command line options:\n"
 msgstr "Opcje lini komend:\n"
 
-#: ../src/panel.c:949
+#: ../src/panel.c:1139
 #, c-format
 msgid " --help      -- print this help and exit\n"
 msgstr " --help      -- wyświetla tą pomoc i wychodzi\n"
 
-#: ../src/panel.c:950
+#: ../src/panel.c:1140
 #, c-format
 msgid " --version   -- print version and exit\n"
 msgstr " --version   -- wyświetla numer wersji i wychodzi\n"
 
-#: ../src/panel.c:951
+#: ../src/panel.c:1141
 #, c-format
 msgid " --log <number> -- set log level 0-5. 0 - none 5 - chatty\n"
 msgstr ""
 " --log <number> -- ustawia poziom raportowania 0-5. 0 - brak 5 - wylewny\n"
 
-#: ../src/panel.c:952
+#: ../src/panel.c:1142
 #, c-format
 msgid " --configure -- launch configuration utility\n"
 msgstr " --configure -- uruchamia narzędzie konfiguracji\n"
 
-#: ../src/panel.c:953
+#: ../src/panel.c:1143
 #, c-format
 msgid " --profile name -- use specified profile\n"
 msgstr " --profile nazwa -- używa określonego profilu\n"
 
-#: ../src/panel.c:955
+#: ../src/panel.c:1145
 #, c-format
 msgid " -h  -- same as --help\n"
 msgstr " -h  -- to samo co --help\n"
 
-#: ../src/panel.c:956
+#: ../src/panel.c:1146
 #, c-format
 msgid " -p  -- same as --profile\n"
 msgstr " -p  -- to samo co --profile\n"
 
-#: ../src/panel.c:957
+#: ../src/panel.c:1147
 #, c-format
 msgid " -v  -- same as --version\n"
 msgstr " -v  -- to samo co --version\n"
 
-#: ../src/panel.c:958
+#: ../src/panel.c:1148
 #, c-format
 msgid " -C  -- same as --configure\n"
 msgstr " -C  -- to samo co --configure\n"
 
-#: ../src/panel.c:959
+#: ../src/panel.c:1149
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -315,11 +310,11 @@ msgstr "Tacka systemowa"
 msgid "Old KDE/GNOME Tray"
 msgstr "Stara tacka KDE/GNOME"
 
-#: ../src/plugins/cpu/cpu.c:208
+#: ../src/plugins/cpu/cpu.c:222
 msgid "CPU Usage Monitor"
 msgstr "Monitor użycia CPU"
 
-#: ../src/plugins/cpu/cpu.c:210
+#: ../src/plugins/cpu/cpu.c:224
 msgid "Display CPU usage"
 msgstr "Wyświetl użycie CPU"
 
@@ -429,56 +424,56 @@ msgstr ""
 msgid "Close Window"
 msgstr "Zamknij okno"
 
-#: ../src/plugins/taskbar.c:1517
+#: ../src/plugins/taskbar.c:1516
 msgid "Show tooltips"
 msgstr "Pokaż podpowiedzi"
 
-#: ../src/plugins/taskbar.c:1518
+#: ../src/plugins/taskbar.c:1517
 msgid "Icons only"
 msgstr "Tylko ikony"
 
-#: ../src/plugins/taskbar.c:1519
+#: ../src/plugins/taskbar.c:1518
 #, fuzzy
 msgid "Flat Buttons"
 msgstr "Przyciski"
 
-#: ../src/plugins/taskbar.c:1520
+#: ../src/plugins/taskbar.c:1519
 msgid "Accept SkipPager"
 msgstr ""
 
-#: ../src/plugins/taskbar.c:1521
+#: ../src/plugins/taskbar.c:1520
 msgid "Show Iconified windows"
 msgstr "Pokaż zikonizowane oka"
 
-#: ../src/plugins/taskbar.c:1522
+#: ../src/plugins/taskbar.c:1521
 msgid "Show mapped windows"
 msgstr ""
 
-#: ../src/plugins/taskbar.c:1523
+#: ../src/plugins/taskbar.c:1522
 msgid "Show windows from all desktops"
 msgstr "Pokaż okna ze wszytskich pulpitów"
 
-#: ../src/plugins/taskbar.c:1524
+#: ../src/plugins/taskbar.c:1523
 msgid "Use mouse wheel"
 msgstr "Użyj rolki myszy"
 
-#: ../src/plugins/taskbar.c:1525
+#: ../src/plugins/taskbar.c:1524
 msgid "Flash when there is any window requiring attention"
 msgstr "Migaj gdy okno wymaga uwagi"
 
-#: ../src/plugins/taskbar.c:1526
+#: ../src/plugins/taskbar.c:1525
 msgid "Max width of task button"
 msgstr "Maksymalna szerokośc przycisku zadań"
 
-#: ../src/plugins/taskbar.c:1527
+#: ../src/plugins/taskbar.c:1526
 msgid "Spacing"
 msgstr "Odstępy"
 
-#: ../src/plugins/taskbar.c:1605
+#: ../src/plugins/taskbar.c:1604
 msgid "Task Bar (Window List)"
 msgstr "Pasek zadań (Lista okien)"
 
-#: ../src/plugins/taskbar.c:1607
+#: ../src/plugins/taskbar.c:1606
 msgid ""
 "Taskbar shows all opened windows and allow to iconify them, shade or get "
 "focus"
@@ -486,35 +481,35 @@ msgstr ""
 "Pasek zadań pokazuje wszyski otwarte okna i umożliwia ich ikonizację, "
 "zwinięcie lub wywołanie"
 
-#: ../src/plugins/dclock.c:278
+#: ../src/plugins/dclock.c:286
 msgid "Clock Format"
 msgstr "Format zegara"
 
-#: ../src/plugins/dclock.c:279
+#: ../src/plugins/dclock.c:287
 msgid "Tooltip Format"
 msgstr "Format podpowiedzi"
 
-#: ../src/plugins/dclock.c:280
+#: ../src/plugins/dclock.c:288
 msgid "Action"
 msgstr "Akcja"
 
-#: ../src/plugins/dclock.c:281
+#: ../src/plugins/dclock.c:289
 msgid "Bold font"
 msgstr ""
 
-#: ../src/plugins/dclock.c:316
+#: ../src/plugins/dclock.c:324
 msgid "Digital Clock"
 msgstr "Zegar cyfrowy"
 
-#: ../src/plugins/dclock.c:318
+#: ../src/plugins/dclock.c:326
 msgid "Display Digital clock and Tooltip"
 msgstr "Wyświetl zegar cyfrowy i podpowiedź"
 
-#: ../src/plugins/menu.c:587
+#: ../src/plugins/menu.c:595
 msgid "Menu"
 msgstr "Menu"
 
-#: ../src/plugins/menu.c:589
+#: ../src/plugins/menu.c:597
 msgid "Provide Menu"
 msgstr ""
 
@@ -530,15 +525,15 @@ msgstr ""
 msgid "Dispaly Image and Tooltip"
 msgstr "Wyświetl obraz i podpowiedź"
 
-#: ../src/plugins/pager.c:704
+#: ../src/plugins/pager.c:709
 msgid "Desktop Pager"
 msgstr "Pager pulpitu"
 
-#: ../src/plugins/pager.c:706
+#: ../src/plugins/pager.c:711
 msgid "Simple pager plugin"
 msgstr "Prosta wtyczka pagera"
 
-#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:818
+#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:824
 msgid "Size"
 msgstr "Rozmiar"
 
@@ -550,17 +545,17 @@ msgstr "<Spacja>"
 msgid "Allocate space"
 msgstr ""
 
-#: ../src/plugins/wincmd.c:252
+#: ../src/plugins/wincmd.c:255
 msgid "Left click to iconify all windows. Middle click to shade them"
 msgstr ""
 "Kilknij prawym klawiszem myszy aby zminimalizować, środkowym aby zwinąć "
 "wszystkie okna."
 
-#: ../src/plugins/wincmd.c:281
+#: ../src/plugins/wincmd.c:284
 msgid "Minimize All Windows"
 msgstr "Minimalizuj wszystkie okna"
 
-#: ../src/plugins/wincmd.c:283
+#: ../src/plugins/wincmd.c:286
 msgid ""
 "Sends commands to all desktop windows.\n"
 "Supported commnds are 1)toggle iconify and 2) toggle shade"
@@ -572,21 +567,21 @@ msgstr ""
 msgid "Open in _Terminal"
 msgstr ""
 
-#: ../src/plugins/dirmenu.c:372
+#: ../src/plugins/dirmenu.c:371
 msgid "Directory Menu"
 msgstr ""
 
-#: ../src/plugins/dirmenu.c:374
+#: ../src/plugins/dirmenu.c:373
 msgid "Browse directory tree via menu (Author: PCMan)"
 msgstr ""
 
 #. FIXME: display current level in tooltip. ex: "Volume Control: 80%"
-#: ../src/plugins/volume/volume.c:146
+#: ../src/plugins/volume/volume.c:153
 #: ../src/plugins/volumealsa/volumealsa.c:290
 msgid "Volume control"
 msgstr "Poziom głoścności"
 
-#: ../src/plugins/volume/volume.c:158
+#: ../src/plugins/volume/volume.c:165
 #: ../src/plugins/volumealsa/volumealsa.c:304
 msgid "Volume Control"
 msgstr "Kontrola głośności"
@@ -919,54 +914,85 @@ msgstr ""
 msgid "No batteries found"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:808
+#: ../src/plugins/batt/batt.c:814
 msgid "Hide if there is no battery"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:810
+#: ../src/plugins/batt/batt.c:816
 msgid "Alarm command"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:811
+#: ../src/plugins/batt/batt.c:817
 msgid "Alarm time (minutes left)"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:812
+#: ../src/plugins/batt/batt.c:818
 msgid "Background color"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:813
+#: ../src/plugins/batt/batt.c:819
 msgid "Charging color 1"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:814
+#: ../src/plugins/batt/batt.c:820
 msgid "Charging color 2"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:815
+#: ../src/plugins/batt/batt.c:821
 msgid "Discharging color 1"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:816
+#: ../src/plugins/batt/batt.c:822
 msgid "Discharging color 2"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:817
+#: ../src/plugins/batt/batt.c:823
 msgid "Border width"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:852
+#: ../src/plugins/batt/batt.c:858
 #, fuzzy
 msgid "Battery Monitor"
 msgstr "Monitor użycia CPU"
 
-#: ../src/plugins/batt/batt.c:854
+#: ../src/plugins/batt/batt.c:860
 msgid "Display battery status using ACPI"
 msgstr ""
 
 #, fuzzy
-#~ msgid "Panel Preference"
-#~ msgstr "Preferencje"
+#~ msgid "Applications"
+#~ msgstr "Wybierz program"
+
+#~ msgid "dynamic"
+#~ msgstr "dynamiczna"
+
+#~ msgid "pixels"
+#~ msgstr "piksele"
+
+#~ msgid "Plugins"
+#~ msgstr "Wtyczki"
+
+#~ msgid "Left"
+#~ msgstr "Lewa"
+
+#~ msgid "Right"
+#~ msgstr "Prawa"
+
+#~ msgid "Top"
+#~ msgstr "Górna"
+
+#~ msgid "Bottom"
+#~ msgstr "Dolna"
+
+#~ msgid "Center"
+#~ msgstr "Środek"
+
+#, fuzzy
+#~ msgid "Logout Command"
+#~ msgstr "Komenda wylogowania nie jest ustawiona"
+
+#~ msgid "lxpanel configurator"
+#~ msgstr "konfigurator lxpanel"
 
 #~ msgid "<b>Transparency</b>"
 #~ msgstr "<b>Przezroczystość</b>"
index 7196209..138a853 100755 (executable)
--- a/po/sk.po
+++ b/po/sk.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lxpanel\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-14 21:09+0800\n"
+"POT-Creation-Date: 2008-04-17 01:29+0800\n"
 "PO-Revision-Date: 2007-09-17 01:25+0100\n"
 "Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -17,274 +17,269 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
 "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#. { "configure", N_("Preferences"), configure },
-#: ../src/configurator.c:44 ../src/gtk-run.c:112
-msgid "Run"
-msgstr "Spustiť"
-
-#: ../src/configurator.c:45
-msgid "Restart"
-msgstr "Reštartovať"
+#: ../data/ui/panel-pref.glade.h:1
+msgid "<b>Background</b>"
+msgstr ""
 
-#: ../src/configurator.c:46
-msgid "Logout"
-msgstr "Odhlásiť"
+#: ../data/ui/panel-pref.glade.h:2
+#, fuzzy
+msgid "<b>Font</b>"
+msgstr "<b>Poloha</b>"
 
-#: ../src/configurator.c:224
+#: ../data/ui/panel-pref.glade.h:3
 msgid "<b>Position</b>"
 msgstr "<b>Poloha</b>"
 
-#. Edge
-#: ../src/configurator.c:241
-msgid "Edge:"
-msgstr "Okraj:"
-
-#: ../src/configurator.c:248 ../src/configurator.c:272
-msgid "Left"
-msgstr "Vľavo"
+#: ../data/ui/panel-pref.glade.h:4
+msgid "<b>Properties</b>"
+msgstr "<b>Vlastnosti</b>"
 
-#: ../src/configurator.c:249 ../src/configurator.c:274
-msgid "Right"
-msgstr "Vpravo"
+#: ../data/ui/panel-pref.glade.h:5
+msgid "<b>Set Preferred Applications</b>"
+msgstr "<b>Nastaviť preferované aplikácie</b>"
 
-#: ../src/configurator.c:250
-msgid "Top"
-msgstr "Hore"
+#: ../data/ui/panel-pref.glade.h:6
+msgid "<b>Size</b>"
+msgstr "<b>Veľkosť</b>"
 
-#: ../src/configurator.c:251
-msgid "Bottom"
-msgstr "Dolu"
+#: ../data/ui/panel-pref.glade.h:7
+msgid "Advanced"
+msgstr ""
 
-#. Alignment
-#: ../src/configurator.c:264
+#: ../data/ui/panel-pref.glade.h:8
 msgid "Alignment:"
 msgstr "Zarovnanie:"
 
-#: ../src/configurator.c:273
-msgid "Center"
-msgstr "Stred"
+#: ../data/ui/panel-pref.glade.h:9
+msgid "Custom Color"
+msgstr ""
 
-#. Margin
-#: ../src/configurator.c:286
-msgid "Margin:"
-msgstr "Okraj:"
+#: ../data/ui/panel-pref.glade.h:11
+#, no-c-format
+msgid ""
+"Dynamic\n"
+"Pixels\n"
+"% Percent"
+msgstr ""
 
-#: ../src/configurator.c:357
-msgid "<b>Size</b>"
-msgstr "<b>Veľkosť</b>"
+#: ../data/ui/panel-pref.glade.h:14
+msgid "Edge:"
+msgstr "Okraj:"
 
-#. width
-#: ../src/configurator.c:374
-msgid "Width:"
-msgstr "Šírka:"
+#: ../data/ui/panel-pref.glade.h:15
+msgid "Enable Image:"
+msgstr ""
 
-#: ../src/configurator.c:388
-msgid "dynamic"
-msgstr "dynamická"
+#: ../data/ui/panel-pref.glade.h:16
+msgid "Enable Transparency"
+msgstr "Zapnúť priesvitnosť"
 
-#: ../src/configurator.c:389 ../src/configurator.c:417
-msgid "pixels"
-msgstr "pixely"
+#: ../data/ui/panel-pref.glade.h:17
+msgid "File Manager:"
+msgstr "Správca súborov:"
 
-#: ../src/configurator.c:390
-#, c-format
-msgid "% of edge"
-msgstr "% okraja"
+#: ../data/ui/panel-pref.glade.h:18
+#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
+msgid "General"
+msgstr "Všeobecné"
 
-#. height
-#: ../src/configurator.c:403
+#: ../data/ui/panel-pref.glade.h:19
 msgid "Height:"
 msgstr "Výška:"
 
-#: ../src/configurator.c:458
-msgid "Enable Transparency"
-msgstr "Zapnúť priesvitnosť"
-
-#: ../src/configurator.c:462
-msgid "Tint color:"
-msgstr "Zafarbenie:"
-
-#: ../src/configurator.c:521
-msgid "Enable Image:"
+#: ../data/ui/panel-pref.glade.h:20
+msgid ""
+"Left\n"
+"Center\n"
+"Right"
 msgstr ""
 
-#: ../src/configurator.c:524
-msgid "Select a background image file"
+#: ../data/ui/panel-pref.glade.h:23
+msgid ""
+"Left\n"
+"Right\n"
+"Top\n"
+"Bottom"
 msgstr ""
 
-#: ../src/configurator.c:594
-msgid "<b>Background</b>"
-msgstr ""
+#: ../data/ui/panel-pref.glade.h:27
+msgid "Logout Command:"
+msgstr "Príkaz na odhlásenie:"
 
-#. Disable Background option
-#: ../src/configurator.c:609
+#: ../data/ui/panel-pref.glade.h:28
+msgid "Make window managers treat the panel as dock"
+msgstr "Správcovia okien majú ukotvovať panel"
+
+#: ../data/ui/panel-pref.glade.h:29
+msgid "Margin:"
+msgstr "Okraj:"
+
+#: ../data/ui/panel-pref.glade.h:30
 msgid "None (Use system theme)"
 msgstr ""
 
-#: ../src/configurator.c:640
+#: ../data/ui/panel-pref.glade.h:31
 #, fuzzy
-msgid "<b>Font</b>"
-msgstr "<b>Poloha</b>"
-
-#. fnt = gtk_font_button_new();
-#. gtk_box_pack_start( (GtkBox*)hbox, fnt, TRUE, TRUE, 4 );
-#: ../src/configurator.c:650
-msgid "Custom Color"
-msgstr ""
+msgid "Panel Applets"
+msgstr "Nastavenia"
 
-#: ../src/configurator.c:700
-msgid "<b>Properties</b>"
-msgstr "<b>Vlastnosti</b>"
+#: ../data/ui/panel-pref.glade.h:32
+#, fuzzy
+msgid "Panel Preferences"
+msgstr "Nastavenia"
 
-#: ../src/configurator.c:722
-msgid "Make window managers treat the panel as dock"
-msgstr "Správcovia okien majú ukotvovať panel"
+#: ../data/ui/panel-pref.glade.h:33
+#, fuzzy
+msgid "Pixels"
+msgstr "pixely"
 
-#: ../src/configurator.c:738
+#: ../data/ui/panel-pref.glade.h:34
 msgid "Reserve space, and not covered by maximized windows"
 msgstr "Rezervovať miesto, nezakrývať maximalizovanými oknami"
 
-#: ../src/configurator.c:794
+#: ../data/ui/panel-pref.glade.h:35
+msgid "Select an image file"
+msgstr ""
+
+#: ../data/ui/panel-pref.glade.h:36
+msgid "Terminal Emulator:"
+msgstr "Emulátor terminálu:"
+
+#: ../data/ui/panel-pref.glade.h:37
+msgid "Tint color:"
+msgstr "Zafarbenie:"
+
+#: ../data/ui/panel-pref.glade.h:38
+msgid "Width:"
+msgstr "Šírka:"
+
+#. { "configure", N_("Preferences"), configure },
+#: ../src/configurator.c:46 ../src/gtk-run.c:112
+msgid "Run"
+msgstr "Spustiť"
+
+#: ../src/configurator.c:47
+msgid "Restart"
+msgstr "Reštartovať"
+
+#: ../src/configurator.c:48
+msgid "Logout"
+msgstr "Odhlásiť"
+
+#: ../src/configurator.c:389
 msgid "Currently loaded plugins"
 msgstr "Momentálne načítané moduly"
 
-#: ../src/configurator.c:890
+#: ../src/configurator.c:485 ../src/panel.c:497
 msgid "Add plugin to panel"
 msgstr "Pridať modul do panela"
 
-#: ../src/configurator.c:917
+#: ../src/configurator.c:512 ../src/panel.c:520
 msgid "Available plugins"
 msgstr "Dostupné moduly"
 
-#: ../src/configurator.c:1207
-msgid "<b>Set Preferred Applications</b>"
-msgstr "<b>Nastaviť preferované aplikácie</b>"
-
-#: ../src/configurator.c:1217
-msgid "File Manager:"
-msgstr "Správca súborov:"
-
-#: ../src/configurator.c:1230
-msgid "Terminal Emulator:"
-msgstr "Emulátor terminálu:"
-
-#: ../src/configurator.c:1245
-msgid "Logout Command:"
-msgstr "Príkaz na odhlásenie:"
-
-#: ../src/configurator.c:1265
-msgid "lxpanel configurator"
-msgstr "Konfigurátor lxpanel"
-
-#: ../src/configurator.c:1291
-#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
-msgid "General"
-msgstr "Všeobecné"
+#: ../src/configurator.c:1054
+msgid "Logout command is not set"
+msgstr "Príkaz na odhlásenie nie je nastavený"
 
-#: ../src/configurator.c:1296
-msgid "Appearance"
+#: ../src/panel.c:573 ../src/panel.c:665
+msgid "Create New Panel"
 msgstr ""
 
-#: ../src/configurator.c:1301
-msgid "Plugins"
-msgstr "Moduly"
-
-#: ../src/configurator.c:1306
-msgid "Applications"
-msgstr "Aplikácie"
+#: ../src/panel.c:589
+msgid ""
+"Really delete this panel?\n"
+"<b>Warning: This can not be recovered.</b>"
+msgstr ""
 
-#: ../src/configurator.c:1467
-msgid "Logout command is not set"
-msgstr "Príkaz na odhlásenie nie je nastavený"
+#: ../src/panel.c:590
+msgid "Confirm"
+msgstr ""
 
-#: ../src/panel.c:441
+#: ../src/panel.c:617
 #, fuzzy, c-format
 msgid "\"%s\" Settings"
 msgstr "Nastavenia"
 
-#: ../src/panel.c:451
+#: ../src/panel.c:639
 #, fuzzy
-msgid "Add Item To Panel"
+msgid "Add / Remove Panel Items"
 msgstr "Pridať modul do panela"
 
-#: ../src/panel.c:456
+#: ../src/panel.c:647
 #, c-format
 msgid "Remove \"%s\" From Panel"
 msgstr ""
 
-#: ../src/panel.c:468
-msgid "Create New Panel"
-msgstr ""
-
-#: ../src/panel.c:473
-msgid "Delete This Panel"
-msgstr ""
-
-#: ../src/panel.c:481
+#: ../src/panel.c:659
 #, fuzzy
 msgid "Panel Settings"
 msgstr "Nastavenia"
 
-#: ../src/panel.c:490
+#: ../src/panel.c:671
+msgid "Delete This Panel"
+msgstr ""
+
+#: ../src/panel.c:683
 msgid "Panel"
 msgstr ""
 
-#: ../src/panel.c:947
+#: ../src/panel.c:1137
 #, c-format
 msgid "lxpanel %s - lightweight GTK2+ panel for UNIX desktops\n"
 msgstr "lxpanel %s - odľahčený GTK2+ panel pre unixové pracovné prostredia\n"
 
-#: ../src/panel.c:948
+#: ../src/panel.c:1138
 #, c-format
 msgid "Command line options:\n"
 msgstr "Voľby príkazového riadka:\n"
 
-#: ../src/panel.c:949
+#: ../src/panel.c:1139
 #, c-format
 msgid " --help      -- print this help and exit\n"
 msgstr ""
 
-#: ../src/panel.c:950
+#: ../src/panel.c:1140
 #, c-format
 msgid " --version   -- print version and exit\n"
 msgstr ""
 
-#: ../src/panel.c:951
+#: ../src/panel.c:1141
 #, c-format
 msgid " --log <number> -- set log level 0-5. 0 - none 5 - chatty\n"
 msgstr ""
 
-#: ../src/panel.c:952
+#: ../src/panel.c:1142
 #, c-format
 msgid " --configure -- launch configuration utility\n"
 msgstr ""
 
-#: ../src/panel.c:953
+#: ../src/panel.c:1143
 #, c-format
 msgid " --profile name -- use specified profile\n"
 msgstr ""
 
-#: ../src/panel.c:955
+#: ../src/panel.c:1145
 #, c-format
 msgid " -h  -- same as --help\n"
 msgstr ""
 
-#: ../src/panel.c:956
+#: ../src/panel.c:1146
 #, c-format
 msgid " -p  -- same as --profile\n"
 msgstr ""
 
-#: ../src/panel.c:957
+#: ../src/panel.c:1147
 #, c-format
 msgid " -v  -- same as --version\n"
 msgstr ""
 
-#: ../src/panel.c:958
+#: ../src/panel.c:1148
 #, c-format
 msgid " -C  -- same as --configure\n"
 msgstr ""
 
-#: ../src/panel.c:959
+#: ../src/panel.c:1149
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -307,11 +302,11 @@ msgstr "Oznamovacia oblasť"
 msgid "Old KDE/GNOME Tray"
 msgstr "Stará oznamovacia oblasť KDE/GNOME"
 
-#: ../src/plugins/cpu/cpu.c:208
+#: ../src/plugins/cpu/cpu.c:222
 msgid "CPU Usage Monitor"
 msgstr "Monitor využitia CPU"
 
-#: ../src/plugins/cpu/cpu.c:210
+#: ../src/plugins/cpu/cpu.c:224
 msgid "Display CPU usage"
 msgstr "Zobraziť využitie CPU"
 
@@ -422,57 +417,57 @@ msgstr ""
 msgid "Close Window"
 msgstr "Zatvoriť okno"
 
-#: ../src/plugins/taskbar.c:1517
+#: ../src/plugins/taskbar.c:1516
 msgid "Show tooltips"
 msgstr "Zobraziť bublinové tipy"
 
-#: ../src/plugins/taskbar.c:1518
+#: ../src/plugins/taskbar.c:1517
 msgid "Icons only"
 msgstr "Iba ikony"
 
-#: ../src/plugins/taskbar.c:1519
+#: ../src/plugins/taskbar.c:1518
 #, fuzzy
 msgid "Flat Buttons"
 msgstr "Tlačidlá"
 
-#: ../src/plugins/taskbar.c:1520
+#: ../src/plugins/taskbar.c:1519
 #, fuzzy
 msgid "Accept SkipPager"
 msgstr "Prijať SkipPager"
 
-#: ../src/plugins/taskbar.c:1521
+#: ../src/plugins/taskbar.c:1520
 msgid "Show Iconified windows"
 msgstr "Zobraziť ikonifikované okná"
 
-#: ../src/plugins/taskbar.c:1522
+#: ../src/plugins/taskbar.c:1521
 msgid "Show mapped windows"
 msgstr "Zobraziť mapované okná"
 
-#: ../src/plugins/taskbar.c:1523
+#: ../src/plugins/taskbar.c:1522
 msgid "Show windows from all desktops"
 msgstr "Zobraziť okná zo všetkých plôch"
 
-#: ../src/plugins/taskbar.c:1524
+#: ../src/plugins/taskbar.c:1523
 msgid "Use mouse wheel"
 msgstr "Používať koliesko myši"
 
-#: ../src/plugins/taskbar.c:1525
+#: ../src/plugins/taskbar.c:1524
 msgid "Flash when there is any window requiring attention"
 msgstr "Blikať, keď niektoré okno vyžaduje pozornosť"
 
-#: ../src/plugins/taskbar.c:1526
+#: ../src/plugins/taskbar.c:1525
 msgid "Max width of task button"
 msgstr "Max. šírka tlačidla úlohy"
 
-#: ../src/plugins/taskbar.c:1527
+#: ../src/plugins/taskbar.c:1526
 msgid "Spacing"
 msgstr "Rozostupy"
 
-#: ../src/plugins/taskbar.c:1605
+#: ../src/plugins/taskbar.c:1604
 msgid "Task Bar (Window List)"
 msgstr "Panel úloh (Zoznam okien)"
 
-#: ../src/plugins/taskbar.c:1607
+#: ../src/plugins/taskbar.c:1606
 msgid ""
 "Taskbar shows all opened windows and allow to iconify them, shade or get "
 "focus"
@@ -480,35 +475,35 @@ msgstr ""
 "Panel úloh zobrazuje všetky otvorené okná a umoňuje ich ikonifikovať, "
 "zatieniť alebo aktivovať"
 
-#: ../src/plugins/dclock.c:278
+#: ../src/plugins/dclock.c:286
 msgid "Clock Format"
 msgstr "Formát hodín"
 
-#: ../src/plugins/dclock.c:279
+#: ../src/plugins/dclock.c:287
 msgid "Tooltip Format"
 msgstr "Formát bublinových tipov"
 
-#: ../src/plugins/dclock.c:280
+#: ../src/plugins/dclock.c:288
 msgid "Action"
 msgstr "Činnosť"
 
-#: ../src/plugins/dclock.c:281
+#: ../src/plugins/dclock.c:289
 msgid "Bold font"
 msgstr ""
 
-#: ../src/plugins/dclock.c:316
+#: ../src/plugins/dclock.c:324
 msgid "Digital Clock"
 msgstr "Digitálne hodiny"
 
-#: ../src/plugins/dclock.c:318
+#: ../src/plugins/dclock.c:326
 msgid "Display Digital clock and Tooltip"
 msgstr "Zobraziť digitálne hodiny a bublinové tipy"
 
-#: ../src/plugins/menu.c:587
+#: ../src/plugins/menu.c:595
 msgid "Menu"
 msgstr "Ponuka"
 
-#: ../src/plugins/menu.c:589
+#: ../src/plugins/menu.c:597
 msgid "Provide Menu"
 msgstr "Poskytnúť ponuku"
 
@@ -524,15 +519,15 @@ msgstr "Pridať oddeľovač do panela"
 msgid "Dispaly Image and Tooltip"
 msgstr "Zobraziť obrázok a bublinový tip"
 
-#: ../src/plugins/pager.c:704
+#: ../src/plugins/pager.c:709
 msgid "Desktop Pager"
 msgstr "Stránkovač plôch"
 
-#: ../src/plugins/pager.c:706
+#: ../src/plugins/pager.c:711
 msgid "Simple pager plugin"
 msgstr "Jednoduchý stránkovací modul"
 
-#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:818
+#: ../src/plugins/space.c:125 ../src/plugins/batt/batt.c:824
 msgid "Size"
 msgstr "Veľkosť"
 
@@ -544,15 +539,15 @@ msgstr "<Miesto>"
 msgid "Allocate space"
 msgstr "Vyhradiť miesto"
 
-#: ../src/plugins/wincmd.c:252
+#: ../src/plugins/wincmd.c:255
 msgid "Left click to iconify all windows. Middle click to shade them"
 msgstr ""
 
-#: ../src/plugins/wincmd.c:281
+#: ../src/plugins/wincmd.c:284
 msgid "Minimize All Windows"
 msgstr ""
 
-#: ../src/plugins/wincmd.c:283
+#: ../src/plugins/wincmd.c:286
 msgid ""
 "Sends commands to all desktop windows.\n"
 "Supported commnds are 1)toggle iconify and 2) toggle shade"
@@ -562,21 +557,21 @@ msgstr ""
 msgid "Open in _Terminal"
 msgstr ""
 
-#: ../src/plugins/dirmenu.c:372
+#: ../src/plugins/dirmenu.c:371
 msgid "Directory Menu"
 msgstr ""
 
-#: ../src/plugins/dirmenu.c:374
+#: ../src/plugins/dirmenu.c:373
 msgid "Browse directory tree via menu (Author: PCMan)"
 msgstr ""
 
 #. FIXME: display current level in tooltip. ex: "Volume Control: 80%"
-#: ../src/plugins/volume/volume.c:146
+#: ../src/plugins/volume/volume.c:153
 #: ../src/plugins/volumealsa/volumealsa.c:290
 msgid "Volume control"
 msgstr ""
 
-#: ../src/plugins/volume/volume.c:158
+#: ../src/plugins/volume/volume.c:165
 #: ../src/plugins/volumealsa/volumealsa.c:304
 msgid "Volume Control"
 msgstr ""
@@ -895,54 +890,87 @@ msgstr ""
 msgid "No batteries found"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:808
+#: ../src/plugins/batt/batt.c:814
 msgid "Hide if there is no battery"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:810
+#: ../src/plugins/batt/batt.c:816
 msgid "Alarm command"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:811
+#: ../src/plugins/batt/batt.c:817
 msgid "Alarm time (minutes left)"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:812
+#: ../src/plugins/batt/batt.c:818
 msgid "Background color"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:813
+#: ../src/plugins/batt/batt.c:819
 msgid "Charging color 1"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:814
+#: ../src/plugins/batt/batt.c:820
 msgid "Charging color 2"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:815
+#: ../src/plugins/batt/batt.c:821
 msgid "Discharging color 1"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:816
+#: ../src/plugins/batt/batt.c:822
 msgid "Discharging color 2"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:817
+#: ../src/plugins/batt/batt.c:823
 msgid "Border width"
 msgstr ""
 
-#: ../src/plugins/batt/batt.c:852
+#: ../src/plugins/batt/batt.c:858
 #, fuzzy
 msgid "Battery Monitor"
 msgstr "Monitor využitia CPU"
 
-#: ../src/plugins/batt/batt.c:854
+#: ../src/plugins/batt/batt.c:860
 msgid "Display battery status using ACPI"
 msgstr ""
 
+#~ msgid "Applications"
+#~ msgstr "Aplikácie"
+
+#~ msgid "dynamic"
+#~ msgstr "dynamická"
+
+#~ msgid "pixels"
+#~ msgstr "pixely"
+
+#~ msgid "% of edge"
+#~ msgstr "% okraja"
+
+#~ msgid "Plugins"
+#~ msgstr "Moduly"
+
+#~ msgid "Left"
+#~ msgstr "Vľavo"
+
+#~ msgid "Right"
+#~ msgstr "Vpravo"
+
+#~ msgid "Top"
+#~ msgstr "Hore"
+
+#~ msgid "Bottom"
+#~ msgstr "Dolu"
+
+#~ msgid "Center"
+#~ msgstr "Stred"
+
 #, fuzzy
-#~ msgid "Panel Preference"
-#~ msgstr "Nastavenia"
+#~ msgid "Logout Command"
+#~ msgstr "Príkaz na odhlásenie:"
+
+#~ msgid "lxpanel configurator"
+#~ msgstr "Konfigurátor lxpanel"
 
 #~ msgid "<b>Transparency</b>"
 #~ msgstr "<b>Priesvitnosť</b>"
index c7c97ca..ce452d8 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-14 21:09+0800\n"
-"PO-Revision-Date: 2008-04-14 21:14+0800\n"
+"POT-Creation-Date: 2008-04-17 01:29+0800\n"
+"PO-Revision-Date: 2008-04-17 01:30+0800\n"
 "Last-Translator: 洪任諭 <pcman.tw@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,275 +16,279 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#. { "configure", N_("Preferences"), configure },
-#: ../src/configurator.c:44
-#: ../src/gtk-run.c:112
-msgid "Run"
-msgstr "執行"
-
-#: ../src/configurator.c:45
-msgid "Restart"
-msgstr "重新啟動"
+#: ../data/ui/panel-pref.glade.h:1
+msgid "<b>Background</b>"
+msgstr "<b>背景</b>"
 
-#: ../src/configurator.c:46
-msgid "Logout"
-msgstr "登出"
+#: ../data/ui/panel-pref.glade.h:2
+msgid "<b>Font</b>"
+msgstr "<b>字型</b>"
 
-#: ../src/configurator.c:224
+#: ../data/ui/panel-pref.glade.h:3
 msgid "<b>Position</b>"
 msgstr "<b>位置</b>"
 
-#. Edge
-#: ../src/configurator.c:241
-msgid "Edge:"
-msgstr "吸附邊緣:"
-
-#: ../src/configurator.c:248
-#: ../src/configurator.c:272
-msgid "Left"
-msgstr "左"
+#: ../data/ui/panel-pref.glade.h:4
+msgid "<b>Properties</b>"
+msgstr "<b>屬性</b>"
 
-#: ../src/configurator.c:249
-#: ../src/configurator.c:274
-msgid "Right"
-msgstr "右"
+#: ../data/ui/panel-pref.glade.h:5
+msgid "<b>Set Preferred Applications</b>"
+msgstr "<b>設定偏好使用的程式</b>"
 
-#: ../src/configurator.c:250
-msgid "Top"
-msgstr ""
+#: ../data/ui/panel-pref.glade.h:6
+msgid "<b>Size</b>"
+msgstr "<b>大小</b>"
 
-#: ../src/configurator.c:251
-msgid "Bottom"
-msgstr ""
+#: ../data/ui/panel-pref.glade.h:7
+msgid "Advanced"
+msgstr "進階"
 
-#. Alignment
-#: ../src/configurator.c:264
+#: ../data/ui/panel-pref.glade.h:8
 msgid "Alignment:"
 msgstr "排列方式:"
 
-#: ../src/configurator.c:273
-msgid "Center"
-msgstr "置中"
+#: ../data/ui/panel-pref.glade.h:9
+msgid "Custom Color"
+msgstr "自訂色彩"
 
-#. Margin
-#: ../src/configurator.c:286
-msgid "Margin:"
-msgstr "留空:"
+#: ../data/ui/panel-pref.glade.h:11
+#, no-c-format
+msgid ""
+"Dynamic\n"
+"Pixels\n"
+"% Percent"
+msgstr ""
+"動態\n"
+"像素 (pixels)\n"
+"% 百分比"
 
-#: ../src/configurator.c:357
-msgid "<b>Size</b>"
-msgstr "<b>大小</b>"
+#: ../data/ui/panel-pref.glade.h:14
+msgid "Edge:"
+msgstr "吸附邊緣:"
 
-#. width
-#: ../src/configurator.c:374
-msgid "Width:"
-msgstr "寬度:"
+#: ../data/ui/panel-pref.glade.h:15
+msgid "Enable Image:"
+msgstr "啟用背景圖:"
 
-#: ../src/configurator.c:388
-msgid "dynamic"
-msgstr "å\8b\95æ\85\8b"
+#: ../data/ui/panel-pref.glade.h:16
+msgid "Enable Transparency"
+msgstr "å\95\9fç\94¨é\80\8fæ\98\8eæ\95\88æ\9e\9c"
 
-#: ../src/configurator.c:389
-#: ../src/configurator.c:417
-msgid "pixels"
-msgstr "像素 (pixels)"
+#: ../data/ui/panel-pref.glade.h:17
+msgid "File Manager:"
+msgstr "檔案管理員:"
 
-#: ../src/configurator.c:390
-#, c-format
-msgid "% of edge"
-msgstr "% 百分比"
+#: ../data/ui/panel-pref.glade.h:18
+#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
+msgid "General"
+msgstr "一般"
 
-#. height
-#: ../src/configurator.c:403
+#: ../data/ui/panel-pref.glade.h:19
 msgid "Height:"
 msgstr "高度:"
 
-#: ../src/configurator.c:458
-msgid "Enable Transparency"
-msgstr " 啟用透明效果"
+#: ../data/ui/panel-pref.glade.h:20
+msgid ""
+"Left\n"
+"Center\n"
+"Right"
+msgstr ""
+"靠左\n"
+"置中\n"
+"靠右"
 
-#: ../src/configurator.c:462
-msgid "Tint color:"
-msgstr "色彩:"
+#: ../data/ui/panel-pref.glade.h:23
+msgid ""
+"Left\n"
+"Right\n"
+"Top\n"
+"Bottom"
+msgstr ""
+"左\n"
+"右\n"
+"上\n"
+"下"
 
-#: ../src/configurator.c:521
-msgid "Enable Image:"
-msgstr "啟用背景圖:"
+#: ../data/ui/panel-pref.glade.h:27
+msgid "Logout Command:"
+msgstr "登出指令:"
 
-#: ../src/configurator.c:524
-msgid "Select a background image file"
-msgstr "選擇背景圖片"
+#: ../data/ui/panel-pref.glade.h:28
+msgid "Make window managers treat the panel as dock"
+msgstr "讓視窗管理員把工作列當成 Dock 處理"
 
-#: ../src/configurator.c:594
-msgid "<b>Background</b>"
-msgstr "<b>背景</b>"
+#: ../data/ui/panel-pref.glade.h:29
+msgid "Margin:"
+msgstr "留空:"
 
-#. Disable Background option
-#: ../src/configurator.c:609
+#: ../data/ui/panel-pref.glade.h:30
 msgid "None (Use system theme)"
 msgstr "無 (使用系統佈景主題)"
 
-#: ../src/configurator.c:640
-msgid "<b>Font</b>"
-msgstr "<b>字型</b>"
+#: ../data/ui/panel-pref.glade.h:31
+msgid "Panel Applets"
+msgstr "工作列元件"
 
-#. fnt = gtk_font_button_new();
-#. gtk_box_pack_start( (GtkBox*)hbox, fnt, TRUE, TRUE, 4 );
-#: ../src/configurator.c:650
-msgid "Custom Color"
-msgstr "自訂色彩"
+#: ../data/ui/panel-pref.glade.h:32
+msgid "Panel Preferences"
+msgstr "工作列偏好設定"
 
-#: ../src/configurator.c:700
-msgid "<b>Properties</b>"
-msgstr "<b>屬性</b>"
-
-#: ../src/configurator.c:722
-msgid "Make window managers treat the panel as dock"
-msgstr "讓視窗管理員把工作列當成 Dock 處理"
+#: ../data/ui/panel-pref.glade.h:33
+msgid "Pixels"
+msgstr "像素 (pixels)"
 
-#: ../src/configurator.c:738
+#: ../data/ui/panel-pref.glade.h:34
 msgid "Reserve space, and not covered by maximized windows"
 msgstr "保留空間,不被最大化視窗覆蓋"
 
-#: ../src/configurator.c:794
-msgid "Currently loaded plugins"
-msgstr "目前載入的外掛"
-
-#: ../src/configurator.c:890
-msgid "Add plugin to panel"
-msgstr "新增外掛到工作列"
-
-#: ../src/configurator.c:917
-msgid "Available plugins"
-msgstr "可選用的外掛"
-
-#: ../src/configurator.c:1207
-msgid "<b>Set Preferred Applications</b>"
-msgstr "<b>設定偏好使用的程式</b>"
-
-#: ../src/configurator.c:1217
-msgid "File Manager:"
-msgstr "檔案管理員:"
+#: ../data/ui/panel-pref.glade.h:35
+msgid "Select an image file"
+msgstr "選擇圖片檔"
 
-#: ../src/configurator.c:1230
+#: ../data/ui/panel-pref.glade.h:36
 msgid "Terminal Emulator:"
 msgstr "終端機:"
 
-#: ../src/configurator.c:1245
-msgid "Logout Command:"
-msgstr "登出指令:"
+#: ../data/ui/panel-pref.glade.h:37
+msgid "Tint color:"
+msgstr "色彩:"
 
-#: ../src/configurator.c:1265
-msgid "lxpanel configurator"
-msgstr "lxpanel å\81\8f好設å®\9a"
+#: ../data/ui/panel-pref.glade.h:38
+msgid "Width:"
+msgstr "寬度ï¼\9a"
 
-#: ../src/configurator.c:1291
-#: ../src/plugins/netstatus/netstatus-dialog-ui.c:276
-msgid "General"
-msgstr "一般"
+#. { "configure", N_("Preferences"), configure },
+#: ../src/configurator.c:46
+#: ../src/gtk-run.c:112
+msgid "Run"
+msgstr "執行"
 
-#: ../src/configurator.c:1296
-msgid "Appearance"
-msgstr "外觀"
+#: ../src/configurator.c:47
+msgid "Restart"
+msgstr "重新啟動"
 
-#: ../src/configurator.c:1301
-msgid "Plugins"
-msgstr "外掛"
+#: ../src/configurator.c:48
+msgid "Logout"
+msgstr "登出"
 
-#: ../src/configurator.c:1306
-msgid "Applications"
-msgstr "應用程式"
+#: ../src/configurator.c:389
+msgid "Currently loaded plugins"
+msgstr "目前載入的外掛"
 
-#: ../src/configurator.c:1467
+#: ../src/configurator.c:485
+#: ../src/panel.c:497
+msgid "Add plugin to panel"
+msgstr "新增外掛到工作列"
+
+#: ../src/configurator.c:512
+#: ../src/panel.c:520
+msgid "Available plugins"
+msgstr "可選用的外掛"
+
+#: ../src/configurator.c:1054
 msgid "Logout command is not set"
 msgstr "登出指令尚未設定"
 
-#: ../src/panel.c:441
+#: ../src/panel.c:573
+#: ../src/panel.c:665
+msgid "Create New Panel"
+msgstr "建立新工作列"
+
+#: ../src/panel.c:589
+msgid ""
+"Really delete this panel?\n"
+"<b>Warning: This can not be recovered.</b>"
+msgstr ""
+"確定要刪除這個工作列?\n"
+"<b>警告: 這個動作沒辦法復原。</b>"
+
+#: ../src/panel.c:590
+msgid "Confirm"
+msgstr "確認"
+
+#: ../src/panel.c:617
 #, c-format
 msgid "\"%s\" Settings"
 msgstr "設定 \"%s\""
 
-#: ../src/panel.c:451
-msgid "Add Item To Panel"
-msgstr "新增項目到工作列"
+#: ../src/panel.c:639
+msgid "Add / Remove Panel Items"
+msgstr "新增/移除 工作列項目"
 
-#: ../src/panel.c:456
+#: ../src/panel.c:647
 #, c-format
 msgid "Remove \"%s\" From Panel"
 msgstr "從工作列移除 \"%s\""
 
-#: ../src/panel.c:468
-msgid "Create New Panel"
-msgstr "建立新工作列"
+#: ../src/panel.c:659
+msgid "Panel Settings"
+msgstr "設定工作列"
 
-#: ../src/panel.c:473
+#: ../src/panel.c:671
 msgid "Delete This Panel"
 msgstr "刪除這個工作列"
 
-#: ../src/panel.c:481
-msgid "Panel Settings"
-msgstr "設定工作列"
-
-#: ../src/panel.c:490
+#: ../src/panel.c:683
 msgid "Panel"
 msgstr "工作列"
 
-#: ../src/panel.c:947
+#: ../src/panel.c:1137
 #, c-format
 msgid "lxpanel %s - lightweight GTK2+ panel for UNIX desktops\n"
 msgstr "lxpanel %s - UNIX 桌面的輕量級 GTK2+ 工作列\n"
 
-#: ../src/panel.c:948
+#: ../src/panel.c:1138
 #, c-format
 msgid "Command line options:\n"
 msgstr "命令列選項:\n"
 
-#: ../src/panel.c:949
+#: ../src/panel.c:1139
 #, c-format
 msgid " --help      -- print this help and exit\n"
 msgstr " --help      -- 顯示使用說明並離開\n"
 
-#: ../src/panel.c:950
+#: ../src/panel.c:1140
 #, c-format
 msgid " --version   -- print version and exit\n"
 msgstr " --version   -- 顯示版本資訊並離開\n"
 
-#: ../src/panel.c:951
+#: ../src/panel.c:1141
 #, c-format
 msgid " --log <number> -- set log level 0-5. 0 - none 5 - chatty\n"
 msgstr " --log <數值>   -- 設定程式運作紀錄的層級 (0-5). 0 - 無, 5 - 全部\n"
 
-#: ../src/panel.c:952
+#: ../src/panel.c:1142
 #, c-format
 msgid " --configure -- launch configuration utility\n"
 msgstr " --configure -- 執行設定工具\n"
 
-#: ../src/panel.c:953
+#: ../src/panel.c:1143
 #, c-format
 msgid " --profile name -- use specified profile\n"
 msgstr " --profile name -- 指定使用其他設定檔\n"
 
-#: ../src/panel.c:955
+#: ../src/panel.c:1145
 #, c-format
 msgid " -h  -- same as --help\n"
 msgstr " -h  -- 和 --help 作用相同\n"
 
-#: ../src/panel.c:956
+#: ../src/panel.c:1146
 #, c-format
 msgid " -p  -- same as --profile\n"
 msgstr " -p  -- 和 --profile 作用相同\n"
 
-#: ../src/panel.c:957
+#: ../src/panel.c:1147
 #, c-format
 msgid " -v  -- same as --version\n"
 msgstr " -v  -- 和 --version 作用相同\n"
 
-#: ../src/panel.c:958
+#: ../src/panel.c:1148
 #, c-format
 msgid " -C  -- same as --configure\n"
 msgstr " -C  -- 和 --configure 作用相同\n"
 
-#: ../src/panel.c:959
+#: ../src/panel.c:1149
 #, c-format
 msgid ""
 "\n"
@@ -307,11 +311,11 @@ msgstr "系統匣 (通知區域)"
 msgid "Old KDE/GNOME Tray"
 msgstr "KDE/GNOME 系統列"
 
-#: ../src/plugins/cpu/cpu.c:208
+#: ../src/plugins/cpu/cpu.c:222
 msgid "CPU Usage Monitor"
 msgstr "CPU 使用量監視器"
 
-#: ../src/plugins/cpu/cpu.c:210
+#: ../src/plugins/cpu/cpu.c:224
 msgid "Display CPU usage"
 msgstr "顯示 CPU 資源使用量"
 
@@ -421,87 +425,87 @@ msgstr "移動到工作區"
 msgid "Close Window"
 msgstr "關閉視窗"
 
-#: ../src/plugins/taskbar.c:1517
+#: ../src/plugins/taskbar.c:1516
 msgid "Show tooltips"
 msgstr "顯示工具提示"
 
-#: ../src/plugins/taskbar.c:1518
+#: ../src/plugins/taskbar.c:1517
 msgid "Icons only"
 msgstr "只顯示圖示"
 
-#: ../src/plugins/taskbar.c:1519
+#: ../src/plugins/taskbar.c:1518
 msgid "Flat Buttons"
 msgstr "平面按鈕"
 
-#: ../src/plugins/taskbar.c:1520
+#: ../src/plugins/taskbar.c:1519
 msgid "Accept SkipPager"
 msgstr "接受 SkipPager Hint"
 
-#: ../src/plugins/taskbar.c:1521
+#: ../src/plugins/taskbar.c:1520
 msgid "Show Iconified windows"
 msgstr "顯示最小化的視窗"
 
-#: ../src/plugins/taskbar.c:1522
+#: ../src/plugins/taskbar.c:1521
 msgid "Show mapped windows"
 msgstr "顯示已被映射的視窗"
 
-#: ../src/plugins/taskbar.c:1523
+#: ../src/plugins/taskbar.c:1522
 msgid "Show windows from all desktops"
 msgstr "顯示來自所有桌面的視窗"
 
-#: ../src/plugins/taskbar.c:1524
+#: ../src/plugins/taskbar.c:1523
 msgid "Use mouse wheel"
 msgstr "使用滑鼠滾輪"
 
-#: ../src/plugins/taskbar.c:1525
+#: ../src/plugins/taskbar.c:1524
 msgid "Flash when there is any window requiring attention"
 msgstr "當有視窗要求使用者注意時,閃爍工作列"
 
-#: ../src/plugins/taskbar.c:1526
+#: ../src/plugins/taskbar.c:1525
 msgid "Max width of task button"
 msgstr "工作列按鈕最大寬度"
 
-#: ../src/plugins/taskbar.c:1527
+#: ../src/plugins/taskbar.c:1526
 msgid "Spacing"
 msgstr "間距"
 
-#: ../src/plugins/taskbar.c:1605
+#: ../src/plugins/taskbar.c:1604
 msgid "Task Bar (Window List)"
 msgstr "工作列 (視窗清單)"
 
-#: ../src/plugins/taskbar.c:1607
+#: ../src/plugins/taskbar.c:1606
 msgid "Taskbar shows all opened windows and allow to iconify them, shade or get focus"
 msgstr "工作列顯示所有開啟的視窗,並讓能視窗最小化、折疊、或取得焦點"
 
-#: ../src/plugins/dclock.c:278
+#: ../src/plugins/dclock.c:286
 msgid "Clock Format"
 msgstr "時鐘格式"
 
-#: ../src/plugins/dclock.c:279
+#: ../src/plugins/dclock.c:287
 msgid "Tooltip Format"
 msgstr "工具提示格式"
 
-#: ../src/plugins/dclock.c:280
+#: ../src/plugins/dclock.c:288
 msgid "Action"
 msgstr "動作"
 
-#: ../src/plugins/dclock.c:281
+#: ../src/plugins/dclock.c:289
 msgid "Bold font"
 msgstr "粗體字型"
 
-#: ../src/plugins/dclock.c:316
+#: ../src/plugins/dclock.c:324
 msgid "Digital Clock"
 msgstr "數位時鐘"
 
-#: ../src/plugins/dclock.c:318
+#: ../src/plugins/dclock.c:326
 msgid "Display Digital clock and Tooltip"
 msgstr "顯示數位時鐘及在工具提示顯示日期"
 
-#: ../src/plugins/menu.c:587
+#: ../src/plugins/menu.c:595
 msgid "Menu"
 msgstr "選單"
 
-#: ../src/plugins/menu.c:589
+#: ../src/plugins/menu.c:597
 msgid "Provide Menu"
 msgstr "提供選單"
 
@@ -517,16 +521,16 @@ msgstr "在工作列上增加分隔線"
 msgid "Dispaly Image and Tooltip"
 msgstr "顯示圖示及工具提示"
 
-#: ../src/plugins/pager.c:704
+#: ../src/plugins/pager.c:709
 msgid "Desktop Pager"
 msgstr "切換桌面"
 
-#: ../src/plugins/pager.c:706
+#: ../src/plugins/pager.c:711
 msgid "Simple pager plugin"
 msgstr "簡易桌面切換外掛"
 
 #: ../src/plugins/space.c:125
-#: ../src/plugins/batt/batt.c:818
+#: ../src/plugins/batt/batt.c:824
 msgid "Size"
 msgstr "大小"
 
@@ -538,15 +542,15 @@ msgstr "<空白分隔>"
 msgid "Allocate space"
 msgstr "配置空間"
 
-#: ../src/plugins/wincmd.c:252
+#: ../src/plugins/wincmd.c:255
 msgid "Left click to iconify all windows. Middle click to shade them"
 msgstr "按左鍵最小化所有視窗 / 中鍵折疊所有視窗"
 
-#: ../src/plugins/wincmd.c:281
+#: ../src/plugins/wincmd.c:284
 msgid "Minimize All Windows"
 msgstr "最小化所有視窗"
 
-#: ../src/plugins/wincmd.c:283
+#: ../src/plugins/wincmd.c:286
 msgid ""
 "Sends commands to all desktop windows.\n"
 "Supported commnds are 1)toggle iconify and 2) toggle shade"
@@ -558,21 +562,21 @@ msgstr ""
 msgid "Open in _Terminal"
 msgstr "在終端機內開啟(_T)"
 
-#: ../src/plugins/dirmenu.c:372
+#: ../src/plugins/dirmenu.c:371
 msgid "Directory Menu"
 msgstr "目錄選單"
 
-#: ../src/plugins/dirmenu.c:374
+#: ../src/plugins/dirmenu.c:373
 msgid "Browse directory tree via menu (Author: PCMan)"
 msgstr "使用選單瀏覽目錄 (作者:PCMan)"
 
 #. FIXME: display current level in tooltip. ex: "Volume Control: 80%"
-#: ../src/plugins/volume/volume.c:146
+#: ../src/plugins/volume/volume.c:153
 #: ../src/plugins/volumealsa/volumealsa.c:290
 msgid "Volume control"
 msgstr "音量控制"
 
-#: ../src/plugins/volume/volume.c:158
+#: ../src/plugins/volume/volume.c:165
 #: ../src/plugins/volumealsa/volumealsa.c:304
 msgid "Volume Control"
 msgstr "音量控制"
@@ -906,52 +910,80 @@ msgstr "電池:剩餘電量 %d%%,剩餘可用時間 %d:%02d"
 msgid "No batteries found"
 msgstr "沒有電池"
 
-#: ../src/plugins/batt/batt.c:808
+#: ../src/plugins/batt/batt.c:814
 msgid "Hide if there is no battery"
 msgstr "沒有電池時隱藏"
 
-#: ../src/plugins/batt/batt.c:810
+#: ../src/plugins/batt/batt.c:816
 msgid "Alarm command"
 msgstr "發出警示時要執行的命令"
 
-#: ../src/plugins/batt/batt.c:811
+#: ../src/plugins/batt/batt.c:817
 msgid "Alarm time (minutes left)"
 msgstr "電池剩餘時間低於此數值時警示 (分鐘)"
 
-#: ../src/plugins/batt/batt.c:812
+#: ../src/plugins/batt/batt.c:818
 msgid "Background color"
 msgstr "背景顏色"
 
-#: ../src/plugins/batt/batt.c:813
+#: ../src/plugins/batt/batt.c:819
 msgid "Charging color 1"
 msgstr "充電顯示顏色 1"
 
-#: ../src/plugins/batt/batt.c:814
+#: ../src/plugins/batt/batt.c:820
 msgid "Charging color 2"
 msgstr "充電顯示顏色 2"
 
-#: ../src/plugins/batt/batt.c:815
+#: ../src/plugins/batt/batt.c:821
 msgid "Discharging color 1"
 msgstr "放電顯示顏色 1"
 
-#: ../src/plugins/batt/batt.c:816
+#: ../src/plugins/batt/batt.c:822
 msgid "Discharging color 2"
 msgstr "放電顯示顏色 2"
 
-#: ../src/plugins/batt/batt.c:817
+#: ../src/plugins/batt/batt.c:823
 msgid "Border width"
 msgstr "邊框寬度"
 
-#: ../src/plugins/batt/batt.c:852
+#: ../src/plugins/batt/batt.c:858
 msgid "Battery Monitor"
 msgstr "電池電量顯示"
 
-#: ../src/plugins/batt/batt.c:854
+#: ../src/plugins/batt/batt.c:860
 msgid "Display battery status using ACPI"
 msgstr "透過 ACPI 顯示電池狀態"
 
-#~ msgid "Panel Preference"
-#~ msgstr "工作列偏好設定"
+#~ msgid "Applications"
+#~ msgstr "應用程式"
+#~ msgid "dynamic"
+#~ msgstr "動態"
+#~ msgid "pixels"
+#~ msgstr "像素 (pixels)"
+#~ msgid "% of edge"
+#~ msgstr "% 百分比"
+#~ msgid "Select a background image file"
+#~ msgstr "選擇背景圖片"
+#~ msgid "Appearance"
+#~ msgstr "外觀"
+#~ msgid "Plugins"
+#~ msgstr "外掛"
+#~ msgid "Left"
+#~ msgstr "左"
+#~ msgid "Right"
+#~ msgstr "右"
+#~ msgid "Top"
+#~ msgstr "上"
+#~ msgid "Bottom"
+#~ msgstr "下"
+#~ msgid "Center"
+#~ msgstr "置中"
+
+#, fuzzy
+#~ msgid "Logout Command"
+#~ msgstr "登出指令:"
+#~ msgid "lxpanel configurator"
+#~ msgstr "lxpanel 偏好設定"
 #~ msgid "Background"
 #~ msgstr "背景"
 #~ msgid "Update interval (seconds)"
index fbdd7b9..eb7ef06 100644 (file)
@@ -6,7 +6,8 @@ bin_PROGRAMS = lxpanel lxpanelctl
 
 INCLUDES = \
        -I$(top_srcdir) \
-       -I$(top_srcdir)/plugins \
+       -I$(top_srcdir)/src/plugins \
+       -I$(top_srcdir)/src/ptk-ui-xml \
        -DPACKAGE_LIB_DIR=\""$(libdir)"\" \
        -DPACKAGE_DATA_DIR=\""$(datadir)"\" \
        -DPACKAGE_BIN_DIR=\""$(bindir)"\" \
@@ -16,6 +17,12 @@ INCLUDES = \
 
 BUILTIN_PLUGINS = $(top_builddir)/src/plugins/libbuiltin_plugins.a
 
+PTK_UI_XML_SOURCES=\
+       ptk-ui-xml/ptk-ui-xml.c \
+        ptk-ui-xml/ptk-ui-xml.h \
+       ptk-ui-xml/ptk-xml-tree.c \
+        ptk-ui-xml/ptk-xml-tree.h
+
 TRAY_SOURCES= \
        systray/eggmarshalers.c systray/eggmarshalers.h \
        systray/eggtraymanager.c systray/eggtraymanager.h \
@@ -23,6 +30,7 @@ TRAY_SOURCES= \
        systray/tray.c
 
 lxpanel_SOURCES = \
+       $(PTK_UI_XML_SOURCES) \
        glib-mem.h \
        misc.c misc.h \
        $(TRAY_SOURCES) \
index 8fb0ab9..6aaca29 100644 (file)
@@ -33,7 +33,9 @@
 
 #include "dbg.h"
 
-void configure(Panel* p);
+#include "ptk-ui-xml.h"
+
+void panel_configure(Panel* p, int sel_page );
 void restart(void);
 void gtk_run(void);
 void panel_config_save(Panel* panel);
@@ -51,40 +53,9 @@ static char* file_manager_cmd = NULL;
 static char* terminal_cmd = NULL;
 static char* logout_cmd = NULL;
 
-static GtkWidget *dialog = NULL;
-static GtkSizeGroup *sg;
-
-//width
-static GtkWidget *width_spinb, *width_opt;
-static GtkAdjustment *width_adj;
-
-//height
-static GtkWidget *height_spinb, *height_opt;
-static GtkAdjustment *height_adj;
-
-//margin
-static GtkWidget *margin_label, *margin_spinb;
-static GtkAdjustment *margin_adj;
-
-//allign
-static GtkWidget *allign_opt;
-
-//edge
-static GtkWidget *edge_opt;
-
-//transparency
-static GtkWidget *tr_checkb,  *tr_colorl, *tr_colorb;;
-
-//background
-static GtkWidget *bg_checkdis, *bg_checkb, *bg_selfileb;
-
-//properties
-static GtkWidget *prop_dt_checkb, *prop_st_checkb;
-
 extern GSList* all_panels;
 extern gchar *cprofile;
 extern int config;
-extern FILE *pconf;
 
 void panel_global_config_save( Panel* p, FILE *fp);
 void panel_plugin_config_save( Panel* p, FILE *fp);
@@ -142,10 +113,8 @@ err:
 #endif
 
 static void
-response_event(GtkDialog *widget, gint arg1, gpointer user_data)
+response_event(GtkDialog *widget, gint arg1, Panel* panel )
 {
-    Panel* panel = (Panel*)user_data;
-    ENTER;
     switch (arg1) {
     /* FIXME: what will happen if the user exit lxpanel without
               close this config dialog?
@@ -155,11 +124,10 @@ response_event(GtkDialog *widget, gint arg1, gpointer user_data)
     case GTK_RESPONSE_NONE:
         panel_config_save( panel );
         /* NOTE: NO BREAK HERE*/
-        gtk_widget_destroy(dialog);
-        dialog = NULL;
+        gtk_widget_destroy(widget);
         break;
     }
-    RET();
+    return;
 }
 
 static void
@@ -194,8 +162,10 @@ set_allign( GtkComboBox *widget,  Panel* p )
     ENTER;
     allign = gtk_combo_box_get_active(widget) + 1;
     t = (allign != ALLIGN_CENTER);
+    /*
     gtk_widget_set_sensitive(margin_label, t);
     gtk_widget_set_sensitive(margin_spinb, t);
+    */
     p->allign = allign;
     update_panel_geometry(p);
     RET();
@@ -208,223 +178,42 @@ set_margin( GtkSpinButton* spin,  Panel* p  )
     update_panel_geometry(p);
 }
 
-
-GtkWidget *
-mk_position( Panel* p )
-{
-    GtkWidget *hbox, *hbox2, *label, *frame;
-    GtkWidget *t;
-
-
-    ENTER;
-    frame = gtk_frame_new(NULL);
-    gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
-    label = gtk_label_new(NULL);
-    gtk_label_set_markup(GTK_LABEL (label),_("<b>Position</b>"));
-    gtk_frame_set_label_widget(GTK_FRAME (frame), label);
-
-    hbox2 = gtk_hbox_new(FALSE, 0);
-    gtk_container_set_border_width (GTK_CONTAINER (hbox2), 6);
-    gtk_container_add (GTK_CONTAINER (frame), hbox2);
-
-    hbox = gtk_hbox_new(FALSE, 0);
-    gtk_widget_set_size_request(hbox, 20, 1);
-    gtk_box_pack_start(GTK_BOX (hbox2), hbox, FALSE, TRUE, 0);
-
-    t = gtk_table_new(5, 2, FALSE);
-    gtk_table_set_row_spacings(GTK_TABLE(t), 3);
-    gtk_table_set_col_spacings(GTK_TABLE(t), 5);
-    gtk_box_pack_start(GTK_BOX (hbox2), t, FALSE, TRUE, 0);
-
-    //Edge
-    label = gtk_label_new(_("Edge:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_widget_show(label);
-    gtk_table_attach(GTK_TABLE(t), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
-    gtk_size_group_add_widget(sg, label);
-
-    edge_opt = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(edge_opt), _("Left"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(edge_opt), _("Right"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(edge_opt), _("Top"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(edge_opt), _("Bottom"));
-    update_opt_menu(edge_opt, p->edge - 1);
-
-    g_signal_connect(G_OBJECT(edge_opt), "changed", G_CALLBACK(set_edge), NULL);
-
-    gtk_widget_show(edge_opt);
-
-    hbox = gtk_hbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX (hbox), edge_opt, FALSE, TRUE, 0);
-    gtk_table_attach(GTK_TABLE(t), hbox, 1, 2, 0, 1, GTK_FILL, 0, 0, 0);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label), edge_opt);
-
-    //Alignment
-    label = gtk_label_new(_("Alignment:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_widget_show(label);
-    gtk_size_group_add_widget(sg, label);
-
-    gtk_table_attach(GTK_TABLE(t), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
-
-    allign_opt = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(allign_opt), _("Left"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(allign_opt), _("Center"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(allign_opt), _("Right"));
-    update_opt_menu(allign_opt, p->allign - 1);
-    g_signal_connect(G_OBJECT(allign_opt), "changed", G_CALLBACK(set_allign), NULL);
-    gtk_widget_show(allign_opt);
-
-    hbox = gtk_hbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX (hbox), allign_opt, FALSE, TRUE, 0);
-    gtk_table_attach(GTK_TABLE(t), hbox, 1, 2, 1, 2, GTK_FILL, 0, 0, 0);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label), allign_opt);
-
-
-    //Margin
-    margin_label = gtk_label_new(_("Margin:"));
-    gtk_misc_set_alignment(GTK_MISC(margin_label), 0.0, 0.5);
-    gtk_widget_show(margin_label);
-
-    gtk_table_attach(GTK_TABLE(t), margin_label, 2, 3, 1, 2, GTK_FILL, 0, 0, 0);
-
-    margin_adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, gdk_screen_width(), 1.0, 5.0, 5.0);
-    margin_spinb = gtk_spin_button_new (margin_adj, 1.0, 0);
-    gtk_spin_button_set_value(GTK_SPIN_BUTTON(margin_spinb), p->margin);
-    g_signal_connect( margin_spinb, "value-changed",
-                      G_CALLBACK(set_margin), NULL);
-    gtk_table_attach(GTK_TABLE(t), margin_spinb, 3, 4, 1, 2, GTK_FILL, 0, 0, 0);
-    gtk_table_set_col_spacing(GTK_TABLE(t), 1, 20);
-
-    RET(frame);
-}
-
 static void
-set_width(  Panel* p, GtkSpinButton* spin, gpointer user_data )
+set_width(  GtkSpinButton* spin, Panel* p )
 {
     p->width = (int)gtk_spin_button_get_value(spin);
     update_panel_geometry(p);
 }
 
 static void
-set_height( Panel* p, GtkSpinButton* spin, gpointer user_data )
+set_height( GtkSpinButton* spin, Panel* p )
 {
     p->height = (int)gtk_spin_button_get_value(spin);
     update_panel_geometry(p);
 }
 
 static void
-set_width_type( Panel* p,GtkWidget *item, gpointer bp)
+set_width_type( GtkWidget *item, Panel* p )
 {
+    GtkWidget* spin;
     int widthtype;
     gboolean t;
-
-    ENTER;
-
     widthtype = gtk_combo_box_get_active(GTK_COMBO_BOX(item)) + 1;
     p->widthtype = widthtype;
+
+    spin = ptk_ui_xml_get_widget( gtk_widget_get_toplevel(item), "width" );
     t = (widthtype != WIDTH_REQUEST);
-    gtk_widget_set_sensitive(width_spinb, t);
+    gtk_widget_set_sensitive( spin, t );
     if (widthtype == WIDTH_PERCENT) {
-        width_adj->upper = 100;
-        width_adj->value = width_adj->upper;
+        gtk_spin_button_set_range( (GtkSpinButton*)spin, 0, 100 );
+        gtk_spin_button_set_value( (GtkSpinButton*)spin, 100 );
     } else if  (widthtype == WIDTH_PIXEL) {
-        width_adj->upper = gdk_screen_width();
-        width_adj->value = width_adj->upper;
+        gtk_spin_button_set_range( (GtkSpinButton*)spin, 0, gdk_screen_width() );
+        gtk_spin_button_set_value( (GtkSpinButton*)spin, gdk_screen_width() );
     } else
-        RET();
-
-    gtk_adjustment_changed(width_adj);
-    gtk_adjustment_value_changed(width_adj);
+        return;
 
     update_panel_geometry(p);
-    RET();
-}
-
-
-static GtkWidget *
-mk_size( Panel* p )
-{
-    GtkWidget *hbox, *hbox2, *label, *frame;
-    GtkWidget *t;
-
-    ENTER;
-    frame = gtk_frame_new(NULL);
-    gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
-    label = gtk_label_new(NULL);
-    gtk_label_set_markup(GTK_LABEL (label),_("<b>Size</b>"));
-    gtk_frame_set_label_widget(GTK_FRAME (frame), label);
-
-    hbox2 = gtk_hbox_new(FALSE, 0);
-    gtk_container_set_border_width (GTK_CONTAINER (hbox2), 6);
-    gtk_container_add (GTK_CONTAINER (frame), hbox2);
-
-    hbox = gtk_hbox_new(FALSE, 0);
-    gtk_widget_set_size_request(hbox, 20, 1);
-    gtk_box_pack_start(GTK_BOX (hbox2), hbox, FALSE, TRUE, 0);
-
-    t = gtk_table_new(3, 2, FALSE);
-    gtk_table_set_row_spacings(GTK_TABLE(t), 3);
-    gtk_table_set_col_spacings(GTK_TABLE(t), 5);
-    gtk_box_pack_start(GTK_BOX (hbox2), t, FALSE, TRUE, 0);
-
-    //width
-    label = gtk_label_new(_("Width:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_widget_show(label);
-    gtk_table_attach(GTK_TABLE(t), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
-    gtk_size_group_add_widget(sg, label);
-
-    width_adj = (GtkAdjustment *) gtk_adjustment_new (20.0, 0.0, 2100.0, 1.0, 5.0, 5.0);
-    width_spinb = gtk_spin_button_new (width_adj, 1.0, 0);
-    gtk_adjustment_set_value(width_adj, p->width);
-    g_signal_connect( width_spinb, "value-changed",
-                      G_CALLBACK(set_width), NULL );
-    gtk_table_attach(GTK_TABLE(t), width_spinb, 1, 2, 0, 1, GTK_FILL, 0, 0, 0);
-
-    width_opt = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(width_opt), _("dynamic"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(width_opt), _("pixels"));
-    gtk_combo_box_append_text(GTK_COMBO_BOX(width_opt), _("% of edge"));
-    update_opt_menu(width_opt, p->widthtype - 1);
-    g_signal_connect(G_OBJECT(width_opt), "changed",
-                     G_CALLBACK(set_width_type), NULL);
-    gtk_widget_show(width_opt);
-
-    hbox = gtk_hbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX (hbox), width_opt, FALSE, TRUE, 0);
-    gtk_table_attach(GTK_TABLE(t), hbox, 2, 3, 0, 1, GTK_FILL, 0, 0, 0);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label), width_opt);
-
-
-    //height
-    label = gtk_label_new(_("Height:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_widget_show(label);
-    gtk_table_attach(GTK_TABLE(t), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
-    gtk_size_group_add_widget(sg, label);
-
-    height_adj = (GtkAdjustment *) gtk_adjustment_new (30.0, 0.0, 300.0, 1.0, 5.0, 5.0);
-    height_spinb = gtk_spin_button_new (height_adj, 1.0, 0);
-    gtk_adjustment_set_value(height_adj, p->height);
-    g_signal_connect( height_spinb, "value-changed",
-                      G_CALLBACK(set_height), NULL );
-    gtk_table_attach(GTK_TABLE(t), height_spinb, 1, 2, 1, 2, GTK_FILL, 0, 0, 0);
-
-    height_opt = gtk_combo_box_new_text();
-    gtk_combo_box_append_text(GTK_COMBO_BOX(height_opt), _("pixels"));
-    update_opt_menu(height_opt, HEIGHT_PIXEL - 1);
-    //g_signal_connect(G_OBJECT(height_opt), "changed", G_CALLBACK(set_height), NULL);
-    gtk_widget_show(height_opt);
-
-    hbox = gtk_hbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX (hbox), height_opt, FALSE, TRUE, 0);
-    gtk_table_attach(GTK_TABLE(t), hbox, 2, 3, 1, 2, GTK_FILL, 0, 0, 0);
-    gtk_label_set_mnemonic_widget(GTK_LABEL(label), height_opt);
-
-    RET(frame);
 }
 
 static void
@@ -434,9 +223,10 @@ transparency_toggle( GtkWidget *b, Panel* p)
 
     ENTER;
     t = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b));
+/*
     gtk_widget_set_sensitive(tr_colorl, t);
     gtk_widget_set_sensitive(tr_colorb, t);
-
+*/
     /* Update background immediately. */
     if (t&&!p->transparent) {
         p->transparent = 1;
@@ -447,42 +237,11 @@ transparency_toggle( GtkWidget *b, Panel* p)
     RET();
 }
 
-GtkWidget *
-mk_transparency( Panel* p )
-{
-    GtkWidget *label, *frame;
-
-    ENTER;
-    frame = gtk_hbox_new(FALSE, 0);
-
-    tr_checkb = gtk_radio_button_new_with_label(NULL, _("Enable Transparency"));
-    gtk_widget_show(tr_checkb);
-    gtk_box_pack_start(GTK_BOX (frame), tr_checkb, FALSE, FALSE, 0);
-
-    tr_colorl = gtk_label_new(_("Tint color:"));
-    gtk_misc_set_alignment(GTK_MISC(tr_colorl), 0.0, 0.5);
-    gtk_widget_show(tr_colorl);
-    gtk_box_pack_start(GTK_BOX (frame), tr_colorl, FALSE, FALSE, 5);
-
-    tr_colorb = gtk_color_button_new();
-    gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(tr_colorb), TRUE);
-    gtk_color_button_set_alpha (GTK_COLOR_BUTTON(tr_colorb), 65535/256*125);
-    gtk_box_pack_start(GTK_BOX (frame), tr_colorb, FALSE, FALSE, 0);
-    gtk_color_button_set_color(GTK_COLOR_BUTTON(tr_colorb), &p->gtintcolor);
-    gtk_color_button_set_alpha (GTK_COLOR_BUTTON(tr_colorb), 256*p->alpha);
-
-    if (!p->transparent) {
-        gtk_widget_set_sensitive(tr_colorb, FALSE);
-    }
-
-    RET(frame);
-}
-
 static void
 background_toggle( GtkWidget *b, Panel* p)
 {
-    ENTER;
-    gtk_widget_set_sensitive(bg_selfileb, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b)));
+    GtkWidget* fc = ptk_ui_xml_get_widget( gtk_widget_get_toplevel(b), "img_file" );
+    gtk_widget_set_sensitive( fc, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b)));
     if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(b))) {
         if (!p->background) {
             p->transparent = 0;
@@ -492,49 +251,17 @@ background_toggle( GtkWidget *b, Panel* p)
             //restart();
             }
     }
-
-    RET();
 }
 
 static void
 background_changed(GtkFileChooser *file_chooser,  Panel* p )
 {
-    ENTER;
-
     p->transparent = 0;
     p->background = 1;
     p->background_file = g_strdup(gtk_file_chooser_get_filename(file_chooser));
     /* Update background immediately. */
     panel_update_background( p );
     //restart();
-    RET();
-}
-
-GtkWidget *
-mk_appearanceimg( Panel* p )
-{
-    GtkWidget *frame;
-
-    ENTER;
-    frame = gtk_vbox_new(FALSE, 0);
-
-    bg_checkb = gtk_radio_button_new_with_label(NULL, _("Enable Image:"));
-    gtk_box_pack_start(GTK_BOX(frame), GTK_WIDGET(bg_checkb), FALSE, FALSE, 5);
-
-    bg_selfileb = gtk_file_chooser_button_new (_("Select a background image file"), GTK_FILE_CHOOSER_ACTION_OPEN);
-    gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (bg_selfileb), PACKAGE_DATA_DIR "/lxpanel/images");
-
-    gtk_box_pack_start(GTK_BOX (frame), bg_selfileb, FALSE, FALSE, 0);
-
-    if (p->background_file)
-        gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (bg_selfileb), p->background_file);
-
-    if (!p->background)
-        gtk_widget_set_sensitive(bg_selfileb, FALSE);
-
-    g_signal_connect (GTK_FILE_CHOOSER (bg_selfileb), "file-set", G_CALLBACK (background_changed), NULL);
-
-    RET(frame);
 }
 
 static void
@@ -576,100 +303,6 @@ on_use_font_color_toggled( GtkToggleButton* btn,   Panel* p )
     gtk_widget_queue_draw( p->topgwin );
 }
 
-GtkWidget *
-mk_appearance( Panel* p )
-{
-    GtkWidget *top_vbox, *vbox, *vbox2, *label, *frame, *incframe, *hbox, *fnt, *clr, *use_fnt_clr;
-    GSList *check_group;
-
-    ENTER;
-    top_vbox = gtk_vbox_new( FALSE, 1 );
-
-    frame = gtk_frame_new(NULL);
-    gtk_box_pack_start( (GtkBox*)top_vbox, frame, FALSE, TRUE, 0 );
-
-    gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
-    label = gtk_label_new(NULL);
-    gtk_label_set_markup(GTK_LABEL (label),_("<b>Background</b>"));
-    gtk_frame_set_label_widget(GTK_FRAME (frame), label);
-
-    vbox2 = gtk_vbox_new(FALSE, 0);
-    gtk_container_set_border_width (GTK_CONTAINER (vbox2), 6);
-    gtk_container_add (GTK_CONTAINER (frame), vbox2);
-
-    vbox = gtk_vbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX (vbox2), vbox, FALSE, TRUE, 0);
-    gtk_widget_set_size_request(vbox, 20, 1);
-
-    vbox = gtk_vbox_new(FALSE, 5);
-    gtk_box_pack_start(GTK_BOX (vbox2), vbox, FALSE, TRUE, 0);
-
-    /* Disable Background option */
-    bg_checkdis = gtk_radio_button_new_with_label(NULL, _("None (Use system theme)"));
-    gtk_widget_show(bg_checkdis);
-
-    gtk_box_pack_start(GTK_BOX (vbox), bg_checkdis, FALSE, FALSE, 0);
-
-    incframe = mk_transparency( p );
-    gtk_box_pack_start(GTK_BOX (vbox), incframe, FALSE, FALSE, 0);
-
-    incframe = mk_appearanceimg( p );
-    gtk_box_pack_start(GTK_BOX (vbox), incframe, FALSE, FALSE, 0);
-
-    /* set group */
-    check_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(bg_checkdis));
-    gtk_radio_button_set_group(GTK_RADIO_BUTTON(bg_checkb), check_group);
-    check_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(bg_checkb));
-    gtk_radio_button_set_group(GTK_RADIO_BUTTON(tr_checkb), check_group);
-
-    /* default */
-    if (p->background)
-        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bg_checkb), TRUE);
-    else if (p->transparent)
-        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tr_checkb), TRUE);
-    else
-        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bg_checkdis), TRUE);
-
-    frame = gtk_frame_new(NULL);
-    gtk_box_pack_start( (GtkBox*)top_vbox, frame, FALSE, TRUE, 0 );
-
-    gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
-    label = gtk_label_new(NULL);
-    gtk_label_set_markup(GTK_LABEL (label),_("<b>Font</b>"));
-    gtk_frame_set_label_widget(GTK_FRAME (frame), label);
-
-    hbox = gtk_hbox_new(FALSE, 0);
-    gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
-    gtk_container_add (GTK_CONTAINER (frame), hbox);
-
-//  fnt = gtk_font_button_new();
-//  gtk_box_pack_start( (GtkBox*)hbox, fnt, TRUE, TRUE, 4 );
-
-    use_fnt_clr = gtk_check_button_new_with_label( _("Custom Color") );
-    gtk_box_pack_start( (GtkBox*)hbox, use_fnt_clr, FALSE, FALSE, 4 );
-    gtk_toggle_button_set_active( (GtkToggleButton*) use_fnt_clr, p->usefontcolor );
-
-    clr = gtk_color_button_new();
-    gtk_box_pack_start( (GtkBox*)hbox, clr, FALSE, FALSE, 4 );
-    gtk_color_button_set_color( (GtkColorButton*)clr, &p->gfontcolor );
-    g_signal_connect( clr, "color-set", G_CALLBACK( on_use_font_color_toggled ), p );
-
-    gtk_widget_show_all( top_vbox );
-
-    /* background */
-    g_signal_connect(bg_checkdis, "toggled", G_CALLBACK(background_disable_toggle), p);
-    g_signal_connect(bg_checkb, "toggled", G_CALLBACK(background_toggle), p);
-    g_signal_connect(tr_checkb, "toggled", G_CALLBACK(transparency_toggle), p);
-
-    /* font */
-    g_object_set_data( use_fnt_clr, "clr", clr );
-    g_signal_connect(use_fnt_clr, "toggled", G_CALLBACK(on_use_font_color_toggled), p);
-
-    RET(top_vbox);
-}
-
 static void
 set_dock_type(GtkToggleButton* toggle,  Panel* p )
 {
@@ -687,80 +320,6 @@ set_struct(GtkToggleButton* toggle,  Panel* p )
     update_panel_geometry(p);
 }
 
-GtkWidget *
-mk_properties( Panel* p )
-{
-    GtkWidget *vbox, *hbox, *hbox2, *label, *frame;
-
-    ENTER;
-    frame = gtk_frame_new(NULL);
-    gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
-    gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
-    label = gtk_label_new(NULL);
-    gtk_label_set_markup(GTK_LABEL (label),_("<b>Properties</b>"));
-    gtk_frame_set_label_widget(GTK_FRAME (frame), label);
-
-    hbox2 = gtk_hbox_new(FALSE, 0);
-    gtk_container_add (GTK_CONTAINER (frame), hbox2);
-    gtk_container_set_border_width (GTK_CONTAINER (hbox2), 6);
-
-    hbox = gtk_hbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX (hbox2), hbox, FALSE, TRUE, 0);
-    gtk_widget_set_size_request(hbox, 20, 1);
-
-    vbox = gtk_vbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX (hbox2), vbox, FALSE, TRUE, 0);
-
-    /* Explaination from Ruediger Arp <ruediger@gmx.net>:
-        "Set Dock Type", it is referring to the behaviour of
-        dockable applications such as those found in WindowMaker (e.g.
-        http://www.cs.mun.ca/~gstarkes/wmaker/dockapps ) and other
-        lightweight window managers. These dockapps are probably being
-        treated in some special way.
-    */
-    prop_dt_checkb = gtk_check_button_new_with_label(
-                        _("Make window managers treat the panel as dock"));
-    update_toggle_button(prop_dt_checkb, p->setdocktype);
-    g_signal_connect( prop_dt_checkb, "toggled",
-                      G_CALLBACK(set_dock_type), NULL );
-    gtk_box_pack_start(GTK_BOX (vbox), prop_dt_checkb, FALSE, FALSE, 0);
-
-    /* Explaination from Ruediger Arp <ruediger@gmx.net>:
-        "Set Strut": Reserve panel's space so that it will not be
-        covered by maximazied windows.
-        This is clearly an option to avoid the panel being
-        covered/hidden by other applications so that it always is
-        accessible. The panel "steals" some screen estate which cannot
-        be accessed by other applications.
-        GNOME Panel acts this way, too.
-    */
-    prop_st_checkb = gtk_check_button_new_with_label(
-                        _("Reserve space, and not covered by maximized windows"));
-    update_toggle_button(prop_st_checkb, p->setstrut);
-    g_signal_connect( prop_st_checkb, "toggled",
-                      G_CALLBACK(set_struct), NULL );
-    gtk_box_pack_start(GTK_BOX (vbox), prop_st_checkb, FALSE, FALSE, 0);
-
-    RET(frame);
-}
-
-static void
-dialog_destroy_event(GtkWidget * widget, GdkEvent * event, gpointer data)
-{
-    ENTER;
-    dialog = NULL;
-    RET();
-}
-
-static gint
-dialog_delete_event( GtkWidget *widget, GdkEvent  *event, gpointer   data )
-{
-
-    ENTER;
-    //if (!p->self_destroy)
-    RET(FALSE);
-}
-
 static void
 on_sel_plugin_changed( GtkTreeSelection* tree_sel, GtkWidget* label )
 {
@@ -1081,240 +640,6 @@ static void on_movedown_plugin(  GtkButton* btn, GtkTreeView* view )
     }
 }
 
-static GtkWidget *
-mk_tab_plugins( Panel* p )
-{
-    GtkWidget *hbox, *vbox, *label;
-    GtkWidget *scroll, *plugin_list, *button;
-
-    hbox = gtk_hbox_new( FALSE, 2 );
-    gtk_container_set_border_width( (GtkContainer*)hbox, 4 );
-
-    vbox = gtk_vbox_new( FALSE, 2 );
-    gtk_box_pack_start( GTK_BOX(hbox), vbox, TRUE, TRUE, 2 );
-
-    /* Left pane */
-    plugin_list = gtk_tree_view_new();
-    /* plugin list */
-    scroll = gtk_scrolled_window_new(NULL, NULL);
-    gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(scroll),
-                            GTK_POLICY_AUTOMATIC,
-                    GTK_POLICY_AUTOMATIC);
-    gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW(scroll),
-                                 GTK_SHADOW_IN );
-    gtk_container_add( GTK_CONTAINER(scroll), plugin_list );
-    gtk_box_pack_start( GTK_BOX( vbox ), scroll, TRUE, TRUE, 4 );
-
-    /* Label displaying plugin descriptions */
-    label = gtk_label_new("");
-    gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);
-
-    gtk_box_pack_start( GTK_BOX(vbox), label, FALSE, FALSE, 4 );
-
-    vbox = gtk_vbox_new( FALSE, 2 );
-    gtk_box_pack_start( GTK_BOX( hbox ), vbox, FALSE, FALSE, 2 );
-
-    /* buttons used to edit plugin list */
-    button = gtk_button_new_from_stock( GTK_STOCK_ADD );
-    gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 2 );
-    g_signal_connect( button, "clicked", G_CALLBACK(on_add_plugin), plugin_list );
-
-    button = gtk_button_new_from_stock( GTK_STOCK_EDIT );
-    gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 2 );
-    g_signal_connect_swapped( button, "clicked", G_CALLBACK(modify_plugin), plugin_list );
-    g_object_set_data( G_OBJECT(plugin_list), "edit_btn", button );
-
-    button = gtk_button_new_from_stock( GTK_STOCK_REMOVE );
-    gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 2 );
-    g_signal_connect( button, "clicked", G_CALLBACK(on_remove_plugin), plugin_list );
-
-    button = gtk_button_new();
-    gtk_container_add( GTK_CONTAINER(button),
-               gtk_image_new_from_stock(GTK_STOCK_GO_UP,
-                                    GTK_ICON_SIZE_BUTTON) );
-    gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 2 );
-    g_signal_connect( button, "clicked", G_CALLBACK(on_moveup_plugin), plugin_list );
-
-    button = gtk_button_new();
-    gtk_container_add( GTK_CONTAINER(button),
-               gtk_image_new_from_stock(GTK_STOCK_GO_DOWN,
-                                    GTK_ICON_SIZE_BUTTON) );
-    gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 2 );
-    g_signal_connect( button, "clicked", G_CALLBACK(on_movedown_plugin), plugin_list );
-
-    init_plugin_list( p, GTK_TREE_VIEW( plugin_list ), label );
-
-    RET(hbox);
-}
-
-static GtkWidget *
-mk_tab_general( Panel* p )
-{
-    GtkWidget *frame, *page;
-
-    /*
-    sw = gtk_scrolled_window_new(NULL, NULL);
-    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-    gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_NONE);
-    gtk_container_set_border_width(GTK_CONTAINER(sw), 0);
-    */
-    page = gtk_vbox_new(FALSE, 1);
-
-    sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
-    //position
-    frame = mk_position( p );
-    gtk_box_pack_start(GTK_BOX (page), frame, FALSE, TRUE, 0);
-
-    //size
-    frame = mk_size( p );
-    gtk_box_pack_start(GTK_BOX (page), frame, FALSE, TRUE, 0);
-
-    //properties
-    frame = mk_properties( p );
-    gtk_box_pack_start(GTK_BOX (page), frame, FALSE, TRUE, 0);
-    /*
-    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (sw), page);
-    */
-    RET(page);
-}
-
-static GtkWidget *
-mk_tab_appearance( Panel* p )
-{
-    GtkWidget *frame, *page;
-    page = gtk_vbox_new(FALSE, 1);
-
-    sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
-    //appearance
-    frame = mk_appearance(p);
-    gtk_box_pack_start(GTK_BOX (page), frame, FALSE, TRUE, 0);
-
-    RET(page);
-}
-
-static GtkWidget *
-mk_tab_app( Panel* p )
-{
-    GtkWidget *vbox, *label, *entry;
-    GtkTable *tbl;
-
-    vbox = gtk_vbox_new( FALSE, 2 );
-    gtk_container_set_border_width( GTK_CONTAINER(vbox), 8 );
-
-    label = gtk_label_new("");
-    gtk_label_set_markup(GTK_LABEL(label), _("<b>Set Preferred Applications</b>"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_box_pack_start( GTK_BOX(vbox), label, FALSE, FALSE, 2 );
-
-    tbl = (GtkTable*)gtk_table_new( 3, 2, FALSE );
-    gtk_box_pack_start( GTK_BOX(vbox), (GtkWidget*)tbl, TRUE, TRUE, 2 );
-
-    gtk_table_set_col_spacings( tbl, 4 );
-    gtk_table_set_row_spacings( tbl, 4 );
-
-    label = gtk_label_new( _("File Manager:") );
-    gtk_misc_set_alignment( label, 0, 0.5 );
-    entry = gtk_entry_new();
-    if (file_manager_cmd)
-        gtk_entry_set_text( GTK_ENTRY(entry), file_manager_cmd );
-    g_signal_connect( entry, "changed",
-                      G_CALLBACK(on_entry_changed),
-                      &file_manager_cmd);
-    gtk_table_attach( tbl, label, 0, 1, 0, 1,
-                      GTK_FILL, GTK_FILL, 2, 2 );
-    gtk_table_attach( tbl, entry, 1, 2, 0, 1,
-                      GTK_FILL|GTK_EXPAND, GTK_FILL, 2, 2 );
-
-    label = gtk_label_new( _("Terminal Emulator:") );
-    gtk_misc_set_alignment( label, 0, 0.5 );
-    entry = gtk_entry_new();
-    if (terminal_cmd)
-        gtk_entry_set_text( GTK_ENTRY(entry), terminal_cmd );
-    g_signal_connect( entry, "changed",
-                      G_CALLBACK(on_entry_changed),
-                      &terminal_cmd);
-    gtk_table_attach( tbl, label, 0, 1, 1, 2,
-                      GTK_FILL, GTK_FILL, 2, 2 );
-    gtk_table_attach( tbl, entry, 1, 2, 1, 2,
-                      GTK_FILL|GTK_EXPAND, GTK_FILL, 2, 2 );
-
-    /* If we are under LXSession, setting logout command is unnecessary. */
-    if( ! getenv("_LXSESSION_PID") ) {
-        label = gtk_label_new( _("Logout Command:") );
-        gtk_misc_set_alignment( label, 0, 0.5 );
-        entry = gtk_entry_new();
-        if(logout_cmd)
-            gtk_entry_set_text( GTK_ENTRY(entry), logout_cmd );
-        g_signal_connect( entry, "changed",
-                        G_CALLBACK(on_entry_changed),
-                        &logout_cmd);
-        gtk_table_attach( tbl, label, 0, 1, 2, 3,
-                        GTK_FILL, GTK_FILL, 2, 2 );
-        gtk_table_attach( tbl, entry, 1, 2, 2, 3,
-                        GTK_FILL|GTK_EXPAND, GTK_FILL, 2, 2 );
-    }
-    return vbox;
-}
-
-static GtkWidget* mk_dialog( Panel* p )
-{
-    GtkWidget *sw, *nb, *label;
-
-    dialog = gtk_dialog_new_with_buttons (_("lxpanel configurator"),
-          NULL,
-          0, //GTK_DIALOG_DESTROY_WITH_PARENT,
-          GTK_STOCK_CLOSE,
-          GTK_RESPONSE_CLOSE,
-          NULL);
-
-    g_signal_connect (G_OBJECT(dialog), "response",     (GCallback) response_event, p);
-    g_signal_connect (G_OBJECT(dialog), "destroy",      (GCallback) dialog_destroy_event, NULL);
-    g_signal_connect (G_OBJECT(dialog), "delete_event", (GCallback) dialog_delete_event,  NULL);
-    gtk_window_set_modal(GTK_WINDOW(dialog), FALSE);
-    gtk_window_set_position( GTK_WINDOW(dialog), GTK_WIN_POS_CENTER );
-
-    /* fix background */
-    if (p->background)
-        gtk_widget_set_style(dialog, p->defstyle);
-
-    /*
-    gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), TRUE);
-    gtk_window_set_skip_pager_hint(GTK_WINDOW(dialog), TRUE);
-    */
-    nb = gtk_notebook_new();
-    gtk_notebook_set_show_border (GTK_NOTEBOOK(nb), FALSE);
-    gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), nb);
-
-    sw = mk_tab_general(p);
-    label = gtk_label_new(_("General"));
-    gtk_misc_set_padding(GTK_MISC(label), 4, 1);
-    gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, label);
-
-    sw = mk_tab_appearance(p);
-    label = gtk_label_new(_("Appearance"));
-    gtk_misc_set_padding(GTK_MISC(label), 4, 1);
-    gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, label);
-
-    sw = mk_tab_plugins(p);
-    label = gtk_label_new(_("Plugins"));
-    gtk_misc_set_padding(GTK_MISC(label), 4, 1);
-    gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, label);
-
-    sw = mk_tab_app(p);
-    label = gtk_label_new(_("Applications"));
-    gtk_misc_set_padding(GTK_MISC(label), 4, 1);
-    gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, label);
-
-    g_object_unref(sg);
-
-    //gtk_widget_show_all(page);
-    gtk_widget_show_all(dialog);
-
-    RET(dialog);
-}
-
 static void
 update_opt_menu(GtkWidget *w, int ind)
 {
@@ -1349,13 +674,201 @@ update_toggle_button(GtkWidget *w, gboolean n)
 }
 
 void
-configure( Panel* p )
+panel_configure( Panel* p, int sel_page  )
 {
-    ENTER;
-    if( ! dialog )
-        dialog = mk_dialog( p );
-    gtk_window_present((GtkWindow*)dialog);
-    RET();
+    PtkUIXml* xml;
+    GtkWidget *w, *w2;
+
+    if( p->pref_dialog )
+    {
+        gtk_window_present((GtkWindow*)p->pref_dialog);
+        return;
+    }
+
+    p->pref_dialog = ptk_ui_xml_create_widget_from_file( PACKAGE_DATA_DIR "/lxpanel/ui/panel-pref.glade" );
+    g_signal_connect(p->pref_dialog, "response",     (GCallback) response_event, p);
+    g_object_add_weak_pointer( p->pref_dialog, &p->pref_dialog );
+    gtk_window_set_position( (GtkWindow*)p->pref_dialog, GTK_WIN_POS_CENTER );
+
+    xml = ptk_ui_xml_get( p->pref_dialog );
+    /* position */
+    w = ptk_ui_xml_lookup( xml, "edge" );
+    update_opt_menu( w, p->edge - 1 );
+    g_signal_connect( w, "changed", G_CALLBACK(set_edge), p);
+
+    w = ptk_ui_xml_lookup( xml, "align" );
+    update_opt_menu( w, p->allign - 1 );
+    g_signal_connect( w, "changed", G_CALLBACK(set_allign), p);
+
+    w = ptk_ui_xml_lookup( xml, "margin" );
+    gtk_spin_button_set_value( (GtkSpinButton*)w, p->margin );
+    g_signal_connect( w, "value-changed",
+                      G_CALLBACK(set_margin), p);
+
+    /* size */
+    w = ptk_ui_xml_lookup( xml, "width" );
+    gtk_widget_set_sensitive( w, p->widthtype != WIDTH_REQUEST );
+    if( p->widthtype == WIDTH_PERCENT) {
+        gtk_spin_button_set_range( (GtkSpinButton*)w, 0, 100 );
+    } else if( p->widthtype == WIDTH_PIXEL) {
+        gtk_spin_button_set_range( (GtkSpinButton*)w, 0, gdk_screen_width() );
+    }
+    gtk_spin_button_set_value( (GtkSpinButton*)w, p->width );
+    g_signal_connect( w, "value-changed", G_CALLBACK(set_width), p );
+
+    w = ptk_ui_xml_lookup( xml, "width_unit" );
+    update_opt_menu( w, p->widthtype - 1 );
+    g_signal_connect( w, "changed",
+                     G_CALLBACK(set_width_type), p);
+
+    w = ptk_ui_xml_lookup( xml, "height" );
+    gtk_spin_button_set_value( (GtkSpinButton*)w, p->height );
+    g_signal_connect( w, "value-changed", G_CALLBACK(set_height), p );
+
+    w = ptk_ui_xml_lookup( xml, "height_unit" );
+    update_opt_menu( w, HEIGHT_PIXEL - 1);
+    //g_signal_connect( w, "changed", G_CALLBACK(set_height_type), NULL);
+
+    /* properties */
+
+    /* Explaination from Ruediger Arp <ruediger@gmx.net>:
+        "Set Dock Type", it is referring to the behaviour of
+        dockable applications such as those found in WindowMaker (e.g.
+        http://www.cs.mun.ca/~gstarkes/wmaker/dockapps ) and other
+        lightweight window managers. These dockapps are probably being
+        treated in some special way.
+    */
+    w = ptk_ui_xml_lookup( xml, "as_dock" );
+    update_toggle_button( w, p->setdocktype );
+    g_signal_connect( w, "toggled",
+                      G_CALLBACK(set_dock_type), p );
+
+    /* Explaination from Ruediger Arp <ruediger@gmx.net>:
+        "Set Strut": Reserve panel's space so that it will not be
+        covered by maximazied windows.
+        This is clearly an option to avoid the panel being
+        covered/hidden by other applications so that it always is
+        accessible. The panel "steals" some screen estate which cannot
+        be accessed by other applications.
+        GNOME Panel acts this way, too.
+    */
+    w = ptk_ui_xml_lookup( xml, "reserve_space" );
+    update_toggle_button( w, p->setstrut );
+    g_signal_connect( w, "toggled",
+                      G_CALLBACK(set_struct), p );
+
+    /* transparancy */
+    w = ptk_ui_xml_lookup( xml, "tint_clr" );
+    gtk_color_button_set_color((GtkColorButton*)w, &p->gtintcolor);
+    gtk_color_button_set_alpha((GtkColorButton*)w, 256*p->alpha);
+    if ( ! p->transparent )
+        gtk_widget_set_sensitive( w, FALSE );
+
+    /* background */
+    {
+        GtkWidget* none, *trans, *img;
+        GSList* group;
+        none = ptk_ui_xml_lookup( xml, "bg_none" );
+        trans = ptk_ui_xml_lookup( xml, "bg_transparency" );
+        img = ptk_ui_xml_lookup( xml, "bg_image" );
+
+        group = gtk_radio_button_get_group( (GtkRadioButton*)none );
+        gtk_radio_button_set_group( (GtkRadioButton*)trans, group );
+        group = gtk_radio_button_get_group( (GtkRadioButton*)trans );
+        gtk_radio_button_set_group( (GtkRadioButton*)img, group );
+
+        if (p->background)
+            gtk_toggle_button_set_active( (GtkToggleButton*)img, TRUE);
+        else if (p->transparent)
+            gtk_toggle_button_set_active( (GtkToggleButton*)trans, TRUE);
+        else
+            gtk_toggle_button_set_active( (GtkToggleButton*)none, TRUE);
+
+        g_signal_connect(none, "toggled", G_CALLBACK(background_disable_toggle), p);
+        g_signal_connect(trans, "toggled", G_CALLBACK(transparency_toggle), p);
+        g_signal_connect(img, "toggled", G_CALLBACK(background_toggle), p);
+
+        w = ptk_ui_xml_lookup( xml, "img_file" );
+        gtk_file_chooser_set_current_folder( (GtkFileChooser*)w, PACKAGE_DATA_DIR "/lxpanel/images");
+        if (p->background_file)
+            gtk_file_chooser_set_filename( (GtkFileChooser*)w, p->background_file);
+
+        if (!p->background)
+            gtk_widget_set_sensitive( w, FALSE);
+
+        /* FIXME: Important!! */
+        /* This is only available in gtk+ >= 2.12 */
+        /* Use gtk_file_chooser_button_new_with_dialog and intercept "response" signal instead. */
+        g_signal_connect( w, "file-set", G_CALLBACK (background_changed), p);
+    }
+
+    /* font color */
+    w = ptk_ui_xml_lookup( xml, "font_clr" );
+    gtk_color_button_set_color( (GtkColorButton*)w, &p->gfontcolor );
+    g_signal_connect( w, "color-set", G_CALLBACK( on_font_color_set ), p );
+
+    w2 = ptk_ui_xml_lookup( xml, "use_font_clr" );
+    gtk_toggle_button_set_active( (GtkToggleButton*)w2, p->usefontcolor );
+    g_object_set_data( w2, "clr", w );
+    g_signal_connect(w2, "toggled", G_CALLBACK(on_use_font_color_toggled), p);
+    if( ! p->usefontcolor )
+        gtk_widget_set_sensitive( w, FALSE );
+
+    /* plugin list */
+    {
+        GtkWidget* plugin_list = ptk_ui_xml_lookup( xml, "plugin_list" );
+
+        /* buttons used to edit plugin list */
+        w = ptk_ui_xml_lookup( xml, "add_btn" );
+        g_signal_connect( w, "clicked", G_CALLBACK(on_add_plugin), plugin_list );
+
+        w = ptk_ui_xml_lookup( xml, "edit_btn" );
+        g_signal_connect_swapped( w, "clicked", G_CALLBACK(modify_plugin), plugin_list );
+        g_object_set_data( G_OBJECT(plugin_list), "edit_btn", w );
+
+        w = ptk_ui_xml_lookup( xml, "remove_btn" );
+        g_signal_connect( w, "clicked", G_CALLBACK(on_remove_plugin), plugin_list );
+        w = ptk_ui_xml_lookup( xml, "moveup_btn" );
+        g_signal_connect( w, "clicked", G_CALLBACK(on_moveup_plugin), plugin_list );
+        w = ptk_ui_xml_lookup( xml, "movedown_btn" );
+        g_signal_connect( w, "clicked", G_CALLBACK(on_movedown_plugin), plugin_list );
+
+        w = ptk_ui_xml_lookup( xml, "plugin_desc" );
+        init_plugin_list( p, (GtkTreeView*)plugin_list, w );
+    }
+    /* advanced, applications */
+    w = ptk_ui_xml_lookup( xml, "file_manager" );
+    if (file_manager_cmd)
+        gtk_entry_set_text( (GtkEntry*)w, file_manager_cmd );
+    g_signal_connect( w, "changed",
+                      G_CALLBACK(on_entry_changed),
+                      &file_manager_cmd);
+
+    w = ptk_ui_xml_lookup( xml, "term" );
+    if (terminal_cmd)
+        gtk_entry_set_text( (GtkEntry*)w, terminal_cmd );
+    g_signal_connect( w, "changed",
+                      G_CALLBACK(on_entry_changed),
+                      &terminal_cmd);
+
+    /* If we are under LXSession, setting logout command is not necessary. */
+    w = ptk_ui_xml_lookup( xml, "logout" );
+    if( getenv("_LXSESSION_PID") ) {
+        gtk_widget_hide( w );
+        w = ptk_ui_xml_lookup( xml, "logout_label" );
+        gtk_widget_hide( w );
+    }
+    else {
+        if(logout_cmd)
+            gtk_entry_set_text( (GtkEntry*)w, logout_cmd );
+        g_signal_connect( w, "changed",
+                        G_CALLBACK(on_entry_changed),
+                        &logout_cmd);
+    }
+
+    gtk_widget_show((GtkWindow*)p->pref_dialog);
+    w = ptk_ui_xml_get_widget( p->pref_dialog, "notebook" );
+    gtk_notebook_set_current_page( (GtkNotebook*)w, sel_page );
 }
 
 void
@@ -1363,25 +876,27 @@ panel_global_config_save( Panel* p, FILE *fp)
 {
     GdkColor c;
 
-    fprintf(fp, "# lxpanel <profile> config file\n"
-                "# see http://lxpanel.sf.net/docs.html for complete configuration guide\n");
+    fprintf(fp, "# lxpanel <profile> config file. Manually editing is not recommended.\n"
+                "# Use preference dialog in lxpanel to adjust config when you can.\n\n");
     lxpanel_put_line(fp, "Global {");
-    lxpanel_put_str(fp, "edge", num2str(edge_pair, gtk_combo_box_get_active(GTK_COMBO_BOX(edge_opt)) + 1, "none"));
-    lxpanel_put_str(fp, "allign", num2str(allign_pair, gtk_combo_box_get_active(GTK_COMBO_BOX(allign_opt)) + 1, "none"));
-    lxpanel_put_int(fp, "margin", (int)margin_adj->value);
-    lxpanel_put_str(fp, "widthtype", num2str(width_pair, gtk_combo_box_get_active(GTK_COMBO_BOX(width_opt)) + 1, "none"));
-    lxpanel_put_int(fp, "width", (int) width_adj->value);
-    lxpanel_put_int(fp, "height", (int) height_adj->value);
-    lxpanel_put_str(fp, "transparent", num2str(bool_pair, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tr_checkb)), "false"));
-    gtk_color_button_get_color(GTK_COLOR_BUTTON(tr_colorb), &c);
-    lxpanel_put_line(fp, "tintcolor = #%06x", gcolor2rgb24(&c));
-    lxpanel_put_int(fp, "alpha", gtk_color_button_get_alpha(GTK_COLOR_BUTTON(tr_colorb)) * 0xff / 0xffff);
-    lxpanel_put_str(fp, "setdocktype", num2str(bool_pair, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prop_dt_checkb)), "true"));
-    lxpanel_put_str(fp, "setpartialstrut", num2str(bool_pair, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(prop_st_checkb)), "true"));
-    lxpanel_put_str(fp, "useFontColor", p->usefontcolor ? "true" : "false");
-    lxpanel_put_line(fp, "FontColor = #%06x", gcolor2rgb24(&p->gfontcolor));
-    lxpanel_put_str(fp, "Background", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bg_checkb)) ? "true" : "false");
-    lxpanel_put_str(fp, "BackgroundFile", p->background_file );
+    lxpanel_put_str(fp, "edge", num2str(edge_pair, p->edge, "none"));
+    lxpanel_put_str(fp, "allign", num2str(allign_pair, p->allign, "none"));
+    lxpanel_put_int(fp, "margin", p->margin);
+    lxpanel_put_str(fp, "widthtype", num2str(width_pair, p->widthtype, "none"));
+    lxpanel_put_int(fp, "width", p->width);
+    lxpanel_put_int(fp, "height", p->height);
+    lxpanel_put_bool(fp, "transparent", p->transparent );
+//    gtk_color_button_get_color(GTK_COLOR_BUTTON(tr_colorb), &c);
+    lxpanel_put_line(fp, "tintcolor=#%06x", gcolor2rgb24(&p->gtintcolor));
+//    lxpanel_put_int(fp, "alpha", gtk_color_button_get_alpha(GTK_COLOR_BUTTON(tr_colorb)) * 0xff / 0xffff);
+/* FIXME: is this correct?? */
+    lxpanel_put_int(fp, "alpha", p->alpha * 0xff / 0xffff);
+    lxpanel_put_bool(fp, "setdocktype", p->setdocktype);
+    lxpanel_put_bool(fp, "setpartialstrut", p->setstrut);
+    lxpanel_put_bool(fp, "usefontcolor", p->usefontcolor);
+    lxpanel_put_line(fp, "fontcolor=#%06x", gcolor2rgb24(&p->gfontcolor));
+    lxpanel_put_bool(fp, "background", p->background );
+    lxpanel_put_str(fp, "backgroundfile", p->background_file );
     lxpanel_put_line(fp, "}\n");
 }
 
@@ -1418,11 +933,15 @@ void panel_config_save( Panel* p )
 
     dir = get_config_file( cprofile, "panels", FALSE );
     fname = g_build_filename( dir, p->name, NULL );
+
+    /* ensure the 'panels' dir exists */
+    if( ! g_file_test( dir, G_FILE_TEST_EXISTS ) )
+        g_mkdir_with_parents( dir, 0755 );
     g_free( dir );
 
     if (!(fp = fopen(fname, "w"))) {
-        g_free( fname );
         ERR("can't open for write %s:", fname);
+        g_free( fname );
         perror(NULL);
         RET();
     }
index 312ffb8..c200f7a 100644 (file)
@@ -159,8 +159,8 @@ pair height_pair[] = {
 };
 
 pair bool_pair[] = {
-    { 0, "false" },
-    { 1, "true" },
+    { 0, "0" },
+    { 1, "1" },
     { 0, NULL },
 };
 pair pos_pair[] = {
@@ -249,19 +249,19 @@ lxpanel_put_str( FILE* fp, const char* name, const char* val )
 {
     if( G_UNLIKELY( !val || !*val ) )
         return 0;
-    return lxpanel_put_line( fp, "%s = %s", name, val );
+    return lxpanel_put_line( fp, "%s=%s", name, val );
 }
 
 extern int
 lxpanel_put_bool( FILE* fp, const char* name, gboolean val )
 {
-    return lxpanel_put_line( fp, "%s = %s", name, val ? "true" : "false" );
+    return lxpanel_put_line( fp, "%s=%c", name, val ? '1' : '0' );
 }
 
 extern int
 lxpanel_put_int( FILE* fp, const char* name, int val )
 {
-    return lxpanel_put_line( fp, "%s = %d", name, val );
+    return lxpanel_put_line( fp, "%s=%d", name, val );
 }
 
 extern  int
index 1998620..9dadf9e 100644 (file)
@@ -53,6 +53,8 @@ GSList* all_panels = NULL;  /* a single-linked list storing all panels */
 
 gboolean is_restarting = FALSE;
 
+void panel_config_save(Panel* panel);   /* defined in configurator.c */
+
 /****************************************************
  *         panel's handlers for WM events           *
  ****************************************************/
@@ -144,7 +146,7 @@ print_wmdata(Panel *p)
 gboolean show_system_menu( gpointer system_menu );
 
 /* built-in commands, defined in configurator.c */
-void configure(Panel* p);
+void configure(Panel* p, int sel_page );
 void restart(void);
 void gtk_run(void);
 
@@ -411,9 +413,8 @@ panel_configure_event (GtkWidget *widget, GdkEventConfigure *e, Panel *p)
 static gint
 panel_popupmenu_configure(GtkWidget *widget, gpointer user_data)
 {
-    ENTER;
-    configure( (Panel*)user_data );
-    RET(TRUE);
+    panel_configure( (Panel*)user_data, 0 );
+    return TRUE;
 }
 
 static gint
@@ -428,7 +429,7 @@ panel_press_button_event(GtkWidget *widget, GdkEvent *event, gpointer user_data)
             GtkWidget *menu;
             Panel* panel = (Panel*)user_data;
             /* create menu */
-            menu = lxpanel_get_panel_menu( panel, panel->plugins->next->next->data, TRUE );
+            menu = lxpanel_get_panel_menu( panel, NULL, TRUE );
             gtk_menu_popup(menu, NULL, NULL, NULL, NULL, event_button->button, event_button->time);
             return TRUE;
     }
@@ -441,9 +442,118 @@ static void panel_popupmenu_config_plugin( GtkMenuItem* item, Plugin* plugin )
     plugin->class->config( plugin, plugin->panel->topgwin );
 }
 
-static void panel_popupmenu_add_item( GtkMenuItem* item, Panel* panel )
+#if 0
+static void on_add_plugin_response( GtkDialog* dlg,
+                                    int response,
+                                    Panel* p )
 {
+    if( response == GTK_RESPONSE_OK )
+    {
+        GtkTreeView* view;
+        GtkTreeSelection* tree_sel;
+        GtkTreeIter it;
+        GtkTreeModel* model;
+
+        view = (GtkTreeView*)g_object_get_data( G_OBJECT(dlg), "avail-plugins" );
+        tree_sel = gtk_tree_view_get_selection( view );
+        if( gtk_tree_selection_get_selected( tree_sel, &model, &it ) )
+        {
+            char* type = NULL;
+            Plugin* pl;
+            gtk_tree_model_get( model, &it, 1, &type, -1 );
+            if( pl = plugin_load( type ) )
+            {
+                GtkTreePath* tree_path;
 
+                pl->panel = p;
+                plugin_start( pl, NULL );
+                p->plugins = g_list_append(p->plugins, pl);
+                /* FIXME: will show all cause problems? */
+                gtk_widget_show_all( pl->pwid );
+
+                /* update background of the newly added plugin */
+                plugin_widget_set_background( pl->pwid, pl->panel );
+            }
+            g_free( type );
+        }
+    }
+    gtk_widget_destroy( (GtkWidget*)dlg );
+}
+
+void panel_add_plugin( Panel* panel, GtkWindow* parent_win )
+{
+    GtkWidget* dlg, *scroll;
+    GList* classes;
+    GList* tmp;
+    GtkTreeViewColumn* col;
+    GtkCellRenderer* render;
+    GtkTreeView* view;
+    GtkListStore* list;
+    GtkTreeSelection* tree_sel;
+
+    classes = plugin_get_available_classes();
+
+    dlg = gtk_dialog_new_with_buttons( _("Add plugin to panel"),
+                                       GTK_WINDOW(parent_win), 0,
+                                       GTK_STOCK_CANCEL,
+                                       GTK_RESPONSE_CANCEL,
+                                       GTK_STOCK_ADD,
+                                       GTK_RESPONSE_OK, NULL );
+
+    /* gtk_widget_set_sensitive( parent_win, FALSE ); */
+    scroll = gtk_scrolled_window_new( NULL, NULL );
+    gtk_scrolled_window_set_shadow_type( (GtkScrolledWindow*)scroll,
+                                          GTK_SHADOW_IN );
+    gtk_scrolled_window_set_policy((GtkScrolledWindow*)scroll,
+                                   GTK_POLICY_AUTOMATIC,
+                                   GTK_POLICY_AUTOMATIC );
+    gtk_box_pack_start( (GtkBox*)GTK_DIALOG(dlg)->vbox, scroll,
+                         TRUE, TRUE, 4 );
+    view = (GtkTreeView*)gtk_tree_view_new();
+    gtk_container_add( (GtkContainer*)scroll, view );
+    tree_sel = gtk_tree_view_get_selection( view );
+    gtk_tree_selection_set_mode( tree_sel, GTK_SELECTION_BROWSE );
+
+    render = gtk_cell_renderer_text_new();
+    col = gtk_tree_view_column_new_with_attributes(
+                                            _("Available plugins"),
+                                            render, "text", 0, NULL );
+    gtk_tree_view_append_column( view, col );
+
+    list = gtk_list_store_new( 2,
+                               G_TYPE_STRING,
+                               G_TYPE_STRING );
+
+    for( tmp = classes; tmp; tmp = tmp->next ) {
+        PluginClass* pc = (PluginClass*)tmp->data;
+        if( ! pc->invisible ) {
+            /* FIXME: should we display invisible plugins? */
+            GtkTreeIter it;
+            gtk_list_store_append( list, &it );
+            gtk_list_store_set( list, &it,
+                                0, _(pc->name),
+                                1, pc->type, -1 );
+            /* g_debug( "%s (%s)", pc->type, _(pc->name) ); */
+        }
+    }
+
+    gtk_tree_view_set_model( view, GTK_TREE_MODEL(list) );
+    g_object_unref( list );
+
+    g_signal_connect( dlg, "response",
+                      on_add_plugin_response, panel );
+    g_object_set_data( dlg, "avail-plugins", view );
+    g_object_weak_ref( dlg, plugin_class_list_free, classes );
+
+    gtk_window_set_default_size( (GtkWindow*)dlg, 320, 400 );
+    gtk_widget_show_all( dlg );
+}
+#endif
+
+static void panel_popupmenu_add_item( GtkMenuItem* item, Panel* panel )
+{
+    /* panel_add_plugin( panel, panel->topgwin ); */
+    panel_configure( panel, 1 );
 }
 
 static void panel_popupmenu_remove_item( GtkMenuItem* item, Plugin* plugin )
@@ -452,6 +562,8 @@ static void panel_popupmenu_remove_item( GtkMenuItem* item, Plugin* plugin )
     panel->plugins = g_list_remove( panel->plugins, plugin );
     plugin_stop( plugin ); /* free the plugin widget & its data */
     plugin_put( plugin ); /* free the lib if necessary */
+
+    panel_config_save( plugin->panel );
 }
 
 static void panel_popupmenu_create_panel( GtkMenuItem* item, Panel* panel )
@@ -479,7 +591,15 @@ static void panel_popupmenu_delete_panel( GtkMenuItem* item, Panel* panel )
     gtk_widget_destroy( dlg );
     if( ok )
     {
+        gchar *fname, *dir;
         all_panels = g_slist_remove( all_panels, panel );
+
+        /* delete the config file of this panel */
+        dir = get_config_file( cprofile, "panels", FALSE );
+        fname = g_build_filename( dir, panel->name, NULL );
+        g_free( dir );
+        g_unlink( fname );
+
         panel_destroy( panel );
     }
 }
@@ -506,12 +626,19 @@ extern GtkWidget* lxpanel_get_panel_menu( Panel* panel, Plugin* plugin, gboolean
         menu_item = gtk_separator_menu_item_new();
         gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
     }
-
+/*
     img = gtk_image_new_from_stock( GTK_STOCK_ADD, GTK_ICON_SIZE_MENU );
     menu_item = gtk_image_menu_item_new_with_label(_("Add Item To Panel"));
     gtk_image_menu_item_set_image( (GtkImageMenuItem*)menu_item, img );
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
     g_signal_connect( menu_item, "activate", G_CALLBACK(panel_popupmenu_add_item), panel );
+*/
+
+    img = gtk_image_new_from_stock( GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU );
+    menu_item = gtk_image_menu_item_new_with_label(_("Add / Remove Panel Items"));
+    gtk_image_menu_item_set_image( (GtkImageMenuItem*)menu_item, img );
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+    g_signal_connect( menu_item, "activate", G_CALLBACK(panel_popupmenu_add_item), panel );
 
     if( plugin )
     {
@@ -527,6 +654,12 @@ extern GtkWidget* lxpanel_get_panel_menu( Panel* panel, Plugin* plugin, gboolean
     menu_item = gtk_separator_menu_item_new();
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
 
+    img = gtk_image_new_from_stock( GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU );
+    menu_item = gtk_image_menu_item_new_with_label(_("Panel Settings"));
+    gtk_image_menu_item_set_image( (GtkImageMenuItem*)menu_item, img );
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+    g_signal_connect(G_OBJECT(menu_item), "activate", G_CALLBACK(panel_popupmenu_configure), panel );
+
     img = gtk_image_new_from_stock( GTK_STOCK_NEW, GTK_ICON_SIZE_MENU );
     menu_item = gtk_image_menu_item_new_with_label(_("Create New Panel"));
     gtk_image_menu_item_set_image( (GtkImageMenuItem*)menu_item, img );
@@ -541,15 +674,6 @@ extern GtkWidget* lxpanel_get_panel_menu( Panel* panel, Plugin* plugin, gboolean
     if( ! all_panels->next )    /* if this is the only panel */
         gtk_widget_set_sensitive( menu_item, FALSE );
 
-    menu_item = gtk_separator_menu_item_new();
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
-
-    img = gtk_image_new_from_stock( GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU );
-    menu_item = gtk_image_menu_item_new_with_label(_("Panel Settings"));
-    gtk_image_menu_item_set_image( (GtkImageMenuItem*)menu_item, img );
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
-    g_signal_connect(G_OBJECT(menu_item), "activate", G_CALLBACK(panel_popupmenu_configure), panel );
-
     gtk_widget_show_all(menu);
 
     if( use_sub_menu )
@@ -965,9 +1089,11 @@ void panel_destroy(Panel *p)
         } while ( g_source_remove_by_user_data( p->system_menus ) );
     }
 
-    g_object_unref( p->tooltips );
+    if( p->tooltips )
+        g_object_unref( p->tooltips );
 
-    gtk_widget_destroy(p->topgwin);
+    if( p->topgwin )
+        gtk_widget_destroy(p->topgwin);
     g_free(p->workarea);
     g_free( p->background_file );
     g_slist_free( p->system_menus );
@@ -1099,7 +1225,7 @@ out:
 static gboolean start_all_panels( )
 {
     gboolean is_global;
-    for( is_global = 0; is_global < 2; ++is_global )
+    for( is_global = 0; ! all_panels && is_global < 2; ++is_global )
     {
         char* panel_dir = get_config_file( cprofile, "panels", is_global );
         GDir* dir = g_dir_open( panel_dir, 0, NULL );
index a838eaa..70f7d30 100644 (file)
@@ -69,14 +69,14 @@ struct _Panel{
     int widthtype, width;
     int heighttype, height;
 
-    int self_destroy : 1;
-    int setdocktype : 1;
-    int setstrut : 1;
-    int round_corners : 1;
-    int usefontcolor : 1;
-    int transparent : 1;
-    int background : 1;
-    int spacing;
+    guint self_destroy : 1;
+    guint setdocktype : 1;
+    guint setstrut : 1;
+    guint round_corners : 1;
+    guint usefontcolor : 1;
+    guint transparent : 1;
+    guint background : 1;
+    guint spacing;
 
     int desknum;
     int curdesk;
@@ -92,6 +92,7 @@ struct _Panel{
 
     /* tooltip controller shared by many plugins */
     GtkTooltips *tooltips;
+    GtkWidget* pref_dialog; /* preference dialog */
 };
 
 
diff --git a/src/ptk-ui-xml/ptk-ui-xml.c b/src/ptk-ui-xml/ptk-ui-xml.c
new file mode 100644 (file)
index 0000000..7286368
--- /dev/null
@@ -0,0 +1,963 @@
+/*
+ *      ptk-ui-xml.h -Lightweight parser for *.glade
+ *
+ *      Copyright 2008 PCMan <pcman.tw@gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
+
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "ptk-xml-tree.h"
+#include "ptk-ui-xml.h"
+
+#include "glib-mem.h" /* compatibility macros for g_slice API */
+
+struct _PtkUIXml
+{
+    guint n_ref;
+    GHashTable* hash;
+    GtkAccelGroup* acc;
+    GtkTooltips* tips;
+    GtkWidget* top_level;
+    GtkWidget* def;
+    GtkWidget* focus;
+};
+
+static GModule* this_mod = NULL;
+
+static GQuark ptk_ui_xml_id = 0;
+
+static PtkUIXml* ptk_ui_xml_new();
+static void ptk_ui_xml_free( PtkUIXml* xml );
+
+static GtkWidget* create_widget( GtkWidget* parent, XmlNode* node,
+                                const char* internal, PtkUIXml* xml );
+
+static gboolean strtobool( const char* str )
+{
+    return str && !strcmp(str, "True");
+}
+static gboolean enum_to_int( GType type, const char* name, int* val );
+
+static char* get_prop( XmlNode* node, const char* name )
+{
+    GSList* l;
+    for( l = node->children; l; l = l->next )
+    {
+        XmlNode* child = (XmlNode*)l->data;
+        const char* prop_name;
+        if( 0 == strcmp(child->name, "property") )
+        {
+            prop_name = xml_node_get_prop( child, "name" );
+            if( prop_name && 0 == strcmp(prop_name, name) )
+                return child->cdata;
+        }
+    }
+    return NULL;
+}
+
+static char* get_prop_name( XmlNode* prop_node )
+{
+    char **prop, ** val;
+    if( prop_node->name && (0 == strcmp( prop_node->name, "property" )) && prop_node->props )
+    {
+        for( prop = prop_node->props, val = prop_node->vals; *prop; ++prop, ++val )
+        {
+            if( 0 == strcmp( "name", *prop ) )
+                return *val;
+        }
+    }
+    return NULL;
+}
+
+static void init_combo_box( GtkComboBox* combo )
+{
+    GtkListStore* list;
+    GtkCellRenderer* cell;
+    list = gtk_list_store_new( 1, G_TYPE_STRING );
+    gtk_combo_box_set_model( combo, GTK_TREE_MODEL(list) );
+    g_object_unref( list );
+
+    if( GTK_IS_COMBO_BOX_ENTRY( combo ) )
+    {
+        gtk_combo_box_entry_set_text_column((GtkComboBoxEntry*)combo, 0);
+    }
+    else
+    {
+        /* Taken from gtkcombox.c of gtk+ */
+        cell = gtk_cell_renderer_text_new ();
+        gtk_cell_layout_pack_start( GTK_CELL_LAYOUT(combo),
+                                    cell, TRUE );
+        gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT(combo),
+                                        cell,
+                                        "text", 0,
+                                        NULL);
+    }
+}
+
+static gboolean is_translatable( XmlNode* prop_node )
+{
+    const char* translatable = xml_node_get_prop( prop_node, "translatable");
+    return (translatable && 0 == strcmp(translatable, "yes" ) );
+}
+
+static void
+set_widget_special_property( GtkWidget* widget,
+                                         GSList* special_props,
+                                         PtkUIXml* xml )
+{
+    GSList* l;
+    XmlNode* prop_node;
+    const char* name;
+
+    for( l = special_props; l; l = l->next )
+    {
+        prop_node = (XmlNode*)l->data;
+        if( G_UNLIKELY( ! prop_node->cdata || ! *prop_node->cdata ) )
+            continue;
+        name = get_prop_name( prop_node );
+        if( name )
+        {
+            if( 0 == strcmp( name, "tooltip" ) )
+            {
+                if( G_UNLIKELY(! xml->tips ) )
+                {
+                    xml->tips = gtk_tooltips_new();
+        #if GTK_CHECK_VERSION(2, 10, 0)
+                    g_object_ref_sink( xml->tips );
+                    g_object_unref ( xml->tips );
+        #else
+                    gtk_object_sink( (GtkObject*)xml->tips );
+        #endif
+                }
+                if( is_translatable( prop_node ) )
+                    gtk_tooltips_set_tip( xml->tips, widget, _(prop_node->cdata), _(prop_node->cdata) );
+                else
+                    gtk_tooltips_set_tip( xml->tips, widget, prop_node->cdata, prop_node->cdata );
+           }
+            else if( 0 == strcmp( name, "text" ) && GTK_IS_TEXT_VIEW( widget ) )
+            {
+                GtkTextBuffer* buf = gtk_text_buffer_new( NULL );
+                const char* text = NULL;
+            if (is_translatable( prop_node ))
+            text = _(text);
+                gtk_text_buffer_set_text( buf, text, strlen(text) );
+                gtk_text_view_set_buffer( GTK_TEXT_VIEW(widget), buf );
+                g_object_unref( buf );
+            }
+            else if( 0 == strcmp( name, "display_options" ) && GTK_IS_CALENDAR( widget ) )
+            {
+                int val = 0;
+                if( enum_to_int( GTK_TYPE_CALENDAR_DISPLAY_OPTIONS, prop_node->cdata, &val ) )
+                    gtk_calendar_set_display_options( GTK_CALENDAR(widget), val);
+            }
+            else if( 0 == strcmp( name, "response_id" ) && GTK_IS_BUTTON(widget) )
+            {
+                if( G_LIKELY( GTK_IS_DIALOG( xml->top_level ) ) )
+                {
+                    int id = atoi( prop_node->cdata );
+                    if( id != 0 )
+                        gtk_dialog_add_action_widget( GTK_DIALOG(xml->top_level), widget, id );
+                }
+            }
+            else if( 0 == strcmp( name, "items" ) && GTK_IS_COMBO_BOX(widget) )
+            {
+                if( prop_node->cdata )
+                {
+                    const char* lines = is_translatable( prop_node ) ? _(prop_node->cdata) : prop_node->cdata;
+                    char** items = g_strsplit(lines, "\n", -1);
+                    char** item;
+
+                    for( item = items; *item ; ++item )
+                    {
+                        if( **item )
+                            gtk_combo_box_append_text( GTK_COMBO_BOX(widget),
+                                                    *item );
+                    }
+                    g_strfreev( items );
+                }
+            }
+            else if( GTK_IS_WINDOW( widget ) )
+            {
+                /*
+                if( 0 == strcmp( name, "wmclass_name" ) )
+                {
+                }
+                else if( 0 == strcmp( name, "wmclass_class" ) )
+                {
+                }
+                */
+                g_warning( "%s not supported", name );
+            }
+        }
+    }
+}
+
+gboolean enum_to_int( GType type, const char* name, int* val )
+{
+    gchar *endptr;
+    int ret;
+
+    if( G_UNLIKELY( !name || !*name ) )
+    {
+        *val = 0;
+        return TRUE;
+    }
+    ret = strtoul(name, &endptr, 0);
+    if (endptr != name) /* parsed a number */
+    {
+        *val = ret;
+        return TRUE;
+    }
+
+    if( !type ) /* guess the type */
+    {
+        if( g_str_has_prefix(name, "GTK_SHADOW") )
+            type = GTK_TYPE_SHADOW_TYPE;
+        else if( g_str_has_prefix(name, "GTK_SELECTION") )
+            type = GTK_TYPE_SELECTION_MODE;
+        else if( g_str_has_prefix(name, "GTK_TREE_VIEW") )
+            type = GTK_TYPE_TREE_VIEW_MODE;
+        else if( g_str_has_prefix(name, "GTK_METRIC") )
+            type = GTK_TYPE_METRIC_TYPE;
+        else if( g_str_has_prefix(name, "GTK_PREVIEW") )
+            type = GTK_TYPE_METRIC_TYPE;
+    }
+
+    if( G_LIKELY(type) )
+    {
+        gpointer klass = g_type_class_ref(type);
+        if( G_IS_ENUM_CLASS( klass ) )
+        {
+            GEnumClass *ec = (GEnumClass*)klass;
+            GEnumValue *ev;
+            ev = g_enum_get_value_by_name(ec, name);
+            if (!ev)
+                ev = g_enum_get_value_by_nick(ec, name);
+            if (ev)
+            {
+                ret = ev->value;
+                g_type_class_unref(klass);
+                *val = ret;
+                /* g_debug("ENUM: %s=%d", name, *val); */
+                return TRUE;
+            }
+        }
+        else if( G_IS_FLAGS_CLASS( klass ) )
+        {
+            GFlagsClass *fc = (GFlagsClass*)klass;
+            GFlagsValue *fv;
+            fv = g_flags_get_value_by_name(fc, name);
+            if (!fv)
+                fv = g_flags_get_value_by_nick(fc, name);
+            if (fv)
+            {
+                ret = fv->value;
+                g_type_class_unref(klass);
+                *val = ret;
+                /* g_debug("FLAG: %s=%d", name, *val); */
+                return TRUE;
+            }
+        }
+        g_type_class_unref(klass);
+    }
+    return FALSE;
+}
+
+static gboolean
+property_to_gparameter( GObjectClass* objcls,
+    const char* prop_name, XmlNode* prop_node, GParameter* param )
+{
+    GParamSpec* spec;
+    const char* translatable;
+    int ival;
+    GValue* gv = &param->value;
+
+    if( G_UNLIKELY( ! prop_node->cdata) )
+        return FALSE;
+    param->name = prop_name;
+
+    spec = g_object_class_find_property( objcls, param->name );
+    if( G_UNLIKELY( !spec ) )
+        goto failed;
+
+    g_value_init( gv, spec->value_type );
+    /* g_debug("property: %s, %s", param->name, G_VALUE_TYPE_NAME(gv)); */
+
+    switch( G_TYPE_FUNDAMENTAL( spec->value_type ) )
+    {
+        case G_TYPE_INT:
+            if( enum_to_int((GType)NULL, prop_node->cdata, &ival) )
+                g_value_set_int( gv, ival );
+            else
+                goto failed;
+            break;
+        case G_TYPE_UINT:
+            if( enum_to_int((GType)NULL, prop_node->cdata, &ival) )
+                g_value_set_uint( gv, ival );
+            else
+                goto failed;
+            break;
+        case G_TYPE_STRING:
+            translatable = xml_node_get_prop( prop_node, "translatable" );
+            if( translatable && 0 == strcmp("yes", translatable) )
+                g_value_set_string( gv, _( prop_node->cdata ) );
+            else
+                g_value_set_string( gv, prop_node->cdata );
+            break;
+        case G_TYPE_BOOLEAN:
+            g_value_set_boolean( gv, strtobool(prop_node->cdata) );
+            break;
+        case G_TYPE_DOUBLE:
+            g_value_set_double( gv,
+                        g_strtod(prop_node->cdata, NULL) );
+            break;
+        case G_TYPE_FLOAT:
+            g_value_set_float( gv,
+                        (gfloat)g_strtod(prop_node->cdata, NULL) );
+            break;
+        case G_TYPE_INT64:
+            g_value_set_int64( gv, (gint64)atol(prop_node->cdata) );
+            break;
+        case G_TYPE_UINT64:
+            g_value_set_uint64( gv, (guint64)atol(prop_node->cdata) );
+            break;
+        case G_TYPE_LONG:
+            g_value_set_long( gv, (glong)atol(prop_node->cdata) );
+            break;
+        case G_TYPE_ULONG:
+            g_value_set_ulong( gv, (gulong)atol(prop_node->cdata) );
+            break;
+        case G_TYPE_CHAR:
+            g_value_set_char( gv, prop_node->cdata[0] );
+            break;
+        case G_TYPE_UCHAR:
+            g_value_set_uchar( gv, g_utf8_get_char(prop_node->cdata) );
+            break;
+        case G_TYPE_ENUM:
+            if( enum_to_int( spec->value_type, prop_node->cdata, &ival ) )
+                g_value_set_enum( gv, ival );
+            else
+                goto failed;
+            break;
+        case G_TYPE_FLAGS:
+            {
+                char** flags = g_strsplit( prop_node->cdata, "| ", 0 );
+                int flags_val = 0;
+                if( flags )
+                {
+                    char** flag;
+                    for( flag = flags; *flag; ++flag )
+                    {
+                        if( enum_to_int( spec->value_type, *flag, &ival ) )
+                            flags_val |= ival;
+                    }
+                    g_value_set_flags( gv, flags_val );
+                    g_free( flags );
+                }
+                else
+                    goto failed;
+            }
+            break;
+        case G_TYPE_BOXED:
+            if( G_UNLIKELY( spec->value_type == GDK_TYPE_COLOR ) )
+            {
+                GdkColor clr;
+                gdk_color_parse( prop_node->cdata, &clr );
+                g_value_set_boxed( gv, &clr);
+            }
+            else if(  G_UNLIKELY( spec->value_type == G_TYPE_STRV )  )
+            {
+                char **strv;
+                if( is_translatable( prop_node ) )
+                    strv = g_strsplit ( _(prop_node->cdata), "\n", 0 );
+                else
+                    strv = g_strsplit ( prop_node->cdata, "\n", 0 );
+                g_value_take_boxed (gv, strv);
+            }
+            break;
+       case G_TYPE_OBJECT:
+            if( G_UNLIKELY( spec->value_type == GTK_TYPE_ADJUSTMENT ) )
+            {
+                float val, lower, upper, step, page_inc, page_size;
+                GtkObject* adj;
+                /* FIXME: There are some prolems here!! */
+                sscanf( prop_node->cdata, "%f %f %f %f %f %f",
+                        &val, &lower, &upper,
+                        &step, &page_inc, &page_size );
+                adj = gtk_adjustment_new( val, lower, upper,
+                                          step, page_inc, page_size );
+
+                g_value_set_object( gv, adj );
+
+#if GTK_CHECK_VERSION( 2, 10, 0 )
+                g_object_ref_sink( adj );
+#else
+                g_object_ref( adj );
+                gtk_object_sink(GTK_OBJECT(adj));
+#endif
+            }
+            else
+                goto failed;
+            break;
+        default:
+            g_warning("%s(%s) is not supported", g_type_name(G_TYPE_FUNDAMENTAL( spec->value_type )), G_VALUE_TYPE_NAME(gv) );
+            goto failed;
+            /*
+            if( enum_to_int( spec->value_type, prop_node->cdata, &val ) )
+                g_object_set(obj, name, val, NULL);
+            */
+            break;
+/*      unsupported
+        case G_TYPE_POINTER:
+        case G_TYPE_OBJECT:
+        case G_TYPE_BOXED:
+        default:
+            break;
+*/
+    };
+    return TRUE;
+failed:
+    param->name = NULL;
+    if( G_IS_VALUE( gv ) )
+        g_value_unset( gv );
+    return FALSE;
+}
+
+int strtoint( const char* str )
+{
+    return str ? atoi( str ) : 0;
+}
+
+static gboolean pack_widget( GtkWidget* parent,
+                      GtkWidget* widget, XmlNode* node )
+{
+    GSList* l;
+    GSList* pack_props = node->children;
+    const char* type = get_prop( node, "type");
+
+    if( G_UNLIKELY( type ) )
+    {
+        if( 0 == strcmp( type, "tab" ) )
+        {
+            GtkWidget* page;
+            int n = gtk_notebook_get_n_pages( GTK_NOTEBOOK(parent) );
+            if( n <= 0 )
+                return FALSE;
+            page = gtk_notebook_get_nth_page( GTK_NOTEBOOK(parent), n-1);
+            gtk_notebook_set_tab_label( GTK_NOTEBOOK(parent),
+                                        page, widget );
+        }
+        else if( 0 == strcmp( type, "label_item" ) )
+        {
+            if( GTK_IS_EXPANDER( parent ) )
+                gtk_expander_set_label_widget(  (GtkExpander*)parent, widget );
+            else if( GTK_IS_FRAME( parent ) )
+                gtk_frame_set_label_widget(  (GtkFrame*)parent, widget );
+        }
+    }
+
+    if( ! gtk_widget_is_ancestor( widget, parent ) )
+        gtk_container_add( (GtkContainer*)parent, widget );
+
+    for( l = pack_props; l; l = l->next )
+    {
+        XmlNode* node = (XmlNode*)l->data;
+        const char* name = NULL;
+        if( !node->name || strcmp( node->name, "property" ) )
+            continue;
+
+        name = xml_node_get_prop( node, "name" );
+        if( G_LIKELY( name ) )
+        {
+            GObjectClass* objcls;
+            GParamSpec* spec;
+
+            objcls = G_OBJECT_GET_CLASS(parent);
+            if( !objcls )
+                continue;
+            spec = gtk_container_class_find_child_property(
+                                         objcls, name );
+            if( !spec )
+                continue;
+
+            /* g_debug(  "PACK_CHILD_PROP: %s (%s)", name, g_type_name(spec->value_type) ); */
+            if( spec->value_type == G_TYPE_BOOLEAN )
+            {
+                gtk_container_child_set( (GtkContainer*)parent, widget,
+                                         name,
+                                         strtobool(node->cdata),
+                                         NULL );
+            }
+            else if( spec->value_type )
+            {
+                int val = 0;
+                if( enum_to_int( spec->value_type, node->cdata, &val ) )
+                    gtk_container_child_set( (GtkContainer*)parent, widget,
+                                             name, val, NULL );
+                /* g_debug( "PACKING: %s = %d", name, val ); */
+            }
+        }
+    }
+    return TRUE;
+}
+
+static void load_child_widget( GtkWidget* parent,
+                               XmlNode* child,
+                               PtkUIXml* xml )
+{
+    GSList* l;
+    GtkWidget* child_widget = NULL;
+    gboolean packing = FALSE;
+    const char* internal = xml_node_get_prop(child, "internal-child");
+
+    for( l = child->children; l; l = l->next )
+    {
+        XmlNode* child_node = (XmlNode*)l->data;
+        if( 0 == strcmp( "widget", child_node->name ) )
+            child_widget = create_widget( parent, child_node,
+                                          internal, xml );
+        else if( !packing && 0 == strcmp( "packing", child_node->name ) )
+        {
+            if( child_widget && parent )
+            {
+                packing = pack_widget( parent,
+                                       child_widget,
+                                       child_node );
+            }
+            child_widget = NULL;
+        }
+    }
+    /* g_debug( "PACK %s to %s", G_OBJECT_TYPE_NAME(child_widget), G_OBJECT_TYPE_NAME(parent) ); */
+    /* don't pack internal child */
+    if( !packing && child_widget && parent && !internal )
+    {
+        if( !gtk_widget_is_ancestor( child_widget, parent ) )
+            gtk_container_add( GTK_CONTAINER(parent), child_widget );
+    }
+}
+
+static void set_widget_accel( GtkWidget* parent, XmlNode* child )
+{
+#if 0
+    const char* key = xml_node_get_prop( child, "key" );
+    const char* mod = xml_node_get_prop( child, "modifiers" );
+    const char* signal = xml_node_get_prop( child, "signal" );
+/*
+    gtk_widget_add_accelerator( widget,
+                    signal,
+                    accel_group,
+                    stock_item.keyval,
+                    stock_item.modifier,
+                    GTK_ACCEL_VISIBLE);
+*/
+#endif
+}
+
+static GType load_type( const char* type_name )
+{
+    char func_name[ 256 ];
+    char* pname = func_name;
+    GType (*func)();
+    GType type = g_type_from_name( type_name );
+    if( type )
+        return type;
+
+    while( *type_name )
+    {
+        *pname = g_ascii_tolower(*type_name);
+        ++pname;
+        ++type_name;
+        if( g_ascii_isupper(*type_name) && !g_ascii_isupper(*(type_name-1)) )
+        {
+            *pname = '_';
+            ++pname;
+        }
+    }
+    strcpy( pname, "_get_type" );
+    if( g_module_symbol( this_mod, func_name, (gpointer*) (gpointer) &func ) )
+        return func();
+    return 0;
+}
+
+static GtkWidget* get_internal_child( GtkWidget* parent, const char* name )
+{
+    if( GTK_IS_DIALOG(parent) )
+    {
+        if( 0 == strcmp(name, "vbox") )
+            return GTK_DIALOG(parent)->vbox;
+        else if( 0 == strcmp(name, "action_area") )
+            return GTK_DIALOG(parent)->action_area;
+        if( G_UNLIKELY( GTK_IS_FONT_SELECTION_DIALOG(parent) ) )
+        {
+            if (0 == strcmp(name, "ok_button"))
+                return GTK_FONT_SELECTION_DIALOG(parent)->ok_button;
+            if (0 == strcmp(name, "cancel_button"))
+                return GTK_FONT_SELECTION_DIALOG(parent)->cancel_button;
+            if (0 == strcmp(name, "apply_button"))
+                return GTK_FONT_SELECTION_DIALOG(parent)->apply_button;
+            if (0 == strcmp(name, "font_selection"))
+                return GTK_FONT_SELECTION_DIALOG(parent)->fontsel;
+        }
+        else if( G_UNLIKELY( GTK_IS_FILE_SELECTION(parent) ) )
+        {
+            if (0 == strcmp(name, "ok_button"))
+                return GTK_FILE_SELECTION(parent)->ok_button;
+            if (0 == strcmp(name, "cancel_button"))
+                return GTK_FILE_SELECTION(parent)->cancel_button;
+            if (0 == strcmp(name, "help_button"))
+                return GTK_FILE_SELECTION(parent)->help_button;
+        }
+        else if( G_UNLIKELY( GTK_IS_COLOR_SELECTION_DIALOG(parent) ) )
+        {
+            if (0 == strcmp(name, "ok_button"))
+                return GTK_COLOR_SELECTION_DIALOG(parent)->ok_button;
+            if (0 == strcmp(name, "cancel_button"))
+                return GTK_COLOR_SELECTION_DIALOG(parent)->cancel_button;
+            if (0 == strcmp(name, "help_button"))
+                return GTK_COLOR_SELECTION_DIALOG(parent)->help_button;
+            if (0 == strcmp(name, "color_selection"))
+                return GTK_COLOR_SELECTION_DIALOG(parent)->colorsel;
+        }
+    }
+    else if( GTK_IS_SCROLLED_WINDOW(parent) )
+    {
+        if( 0 == strcmp(name, "vscrollbar") )
+            return GTK_SCROLLED_WINDOW(parent)->vscrollbar;
+        if( 0 == strcmp(name, "hscrollbar") )
+            return GTK_SCROLLED_WINDOW(parent)->hscrollbar;
+    }
+    else if( GTK_IS_COMBO_BOX_ENTRY(parent) )
+    {
+        if( 0 == strcmp(name, "entry") )
+            return gtk_bin_get_child(GTK_BIN(parent));
+    }
+    parent = gtk_widget_get_parent( parent );
+    return parent ? get_internal_child(parent, name) : NULL;
+}
+
+static int get_n_props( XmlNode* node )
+{
+    int n = 0;
+    GSList* l;
+    for( l = node->children; l; l = l->next )
+    {
+        XmlNode* child_node = (XmlNode*)l->data;
+        if( G_UNLIKELY( !child_node->name ) )
+            continue;
+        if( 0 == strcmp( "property", child_node->name ) )
+            ++n;
+    }
+    return n;
+}
+
+static gboolean delayed_unload_module( gpointer user_data )
+{
+    if( G_LIKELY(this_mod) )
+    {
+        g_module_close( this_mod );
+        this_mod = NULL;
+    }
+    return FALSE;
+}
+
+static gboolean is_id_meaningful( const char* class_name, const char* id )
+{
+    class_name += 3;    /* skip "Gtk" */
+    while( *class_name && *id )
+    {
+        if( g_ascii_tolower( *id ) != g_ascii_tolower( *class_name ) )
+            return TRUE;
+        ++id;
+        ++class_name;
+    }
+    if( ! *id || ! g_ascii_isdigit( *id ) )
+        return TRUE;
+    return FALSE;
+}
+
+static gboolean
+need_remove_from_hash( gpointer key, gpointer val, GtkWidget* widget )
+{
+    return (val == widget);
+}
+
+/* This is inefficient, but it's safer to do this */
+static void remove_widget_from_hash( PtkUIXml* xml, GtkWidget* widget )
+{
+    if( G_LIKELY(xml && xml->hash) )
+        g_hash_table_foreach_remove( xml->hash, (GHRFunc)need_remove_from_hash, widget );
+}
+
+GtkWidget* create_widget( GtkWidget* parent,
+                                 XmlNode* node,
+                                 const char* internal,
+                                 PtkUIXml* xml )
+{
+    GtkWidget* widget = NULL;
+    GSList* l, *special = NULL;
+    char **prop, **val;
+    char* class_name = NULL;
+    char* id = NULL;
+    GType type = 0;
+    gboolean visible = FALSE, has_default = FALSE, has_focus = FALSE;
+
+    if( G_UNLIKELY(!node->name || strcmp(node->name, "widget") ) )
+        return NULL;
+
+    if( G_UNLIKELY(internal) )  /* internal child */
+    {
+        widget = get_internal_child( parent, internal );
+        /* g_debug("INTERNAL: %s, %p", internal, widget);  */
+    }
+
+    if( G_LIKELY( !widget ) )
+    {
+        int n;
+        GParameter* params = NULL;
+        GObjectClass* objcls = NULL;
+
+        for( prop = node->props, val = node->vals; *prop; ++prop, ++val )
+        {
+            if( 0 == strcmp( "class", *prop ) )
+                class_name = *val;
+            else if( 0 == strcmp( "id", *prop ) )
+                id = *val;
+        }
+        /* g_debug("class_name: %s, id=%s", class_name, id); */
+        if( G_UNLIKELY(!class_name) )
+            return NULL;
+        type = load_type( class_name );
+        if( G_UNLIKELY(!type) )
+            return NULL;
+
+        objcls = g_type_class_ref(type);
+
+        if( G_UNLIKELY( ! objcls ) )
+            return NULL;
+
+        n = get_n_props( node );
+        params = g_new0( GParameter, n );
+        for( n = 0, l = node->children; l; l = l->next )
+        {
+            XmlNode* prop_node = (XmlNode*)l->data;
+            const char* prop_name;
+            if( ! prop_node->name || strcmp( prop_node->name, "property" ) )
+                continue;
+            prop_name = get_prop_name( prop_node );
+            if( ! prop_name )
+                continue;
+            if( G_UNLIKELY( strcmp( prop_name, "visible" ) == 0 ) )
+            {
+                visible = TRUE;
+                continue;
+            }
+            else if( G_UNLIKELY( strcmp( prop_name, "has_default" ) == 0 ) )
+            {
+                has_default = TRUE;
+                continue;
+            }
+            else if( G_UNLIKELY( strcmp( prop_name, "has_focus" ) == 0 ) )
+            {
+                has_focus = TRUE;
+                continue;
+            }            if( property_to_gparameter( objcls, prop_name, prop_node, &params[n] ) )
+                ++n;
+            else if( prop_node )
+                special = g_slist_prepend( special, prop_node );
+        }
+        widget = (GtkWidget*)g_object_newv( type, n, params );
+        while( n >=0 )
+        {
+            if( params[n].name )
+                g_value_unset( &params[n].value );
+            --n;
+        }
+        g_type_class_unref( objcls );
+        g_free( params );
+    }
+
+    if( G_UNLIKELY( !widget ) )
+    {
+        g_slist_free( special );
+        return NULL;
+    }
+
+    if( G_UNLIKELY( parent == NULL && ! xml->top_level ) )
+        xml->top_level = widget;
+
+    /* NOTE: Here is a little trick.
+     * is_id_meaningful() will check if the id is an meaningless id
+     *  automaitcally generated by glade.
+     *  meaningless names such as labal1, label2,...etc. will not be added.
+     */
+    if( G_LIKELY( id ) && G_UNLIKELY( is_id_meaningful(class_name, id) ) )
+    {
+        g_hash_table_insert( xml->hash, g_strdup(id), widget );
+        g_object_weak_ref( G_OBJECT(widget), (GWeakNotify)remove_widget_from_hash, xml);
+    }
+
+    /* create a simple text model for combo boxes */
+    if( GTK_IS_COMBO_BOX(widget))
+        init_combo_box( (GtkComboBox*)widget );
+
+    if( special )
+    {
+        set_widget_special_property( widget, special, xml );
+        g_slist_free( special );
+    }
+
+    for( l = node->children; l; l = l->next )
+    {
+        XmlNode* child_node = (XmlNode*)l->data;
+        if( G_UNLIKELY( ! child_node->name ) )
+            continue;
+        if( 0 == strcmp( "child", child_node->name ) )
+            load_child_widget( widget, child_node, xml );
+        else if( 0 == strcmp( "accelerator", child_node->name ) )
+            set_widget_accel( widget, child_node );
+    }
+
+    if( visible )
+        gtk_widget_show( widget );
+    if( has_default )
+        xml->def = widget;
+    if( has_focus )
+        xml->focus = widget;
+    return widget;
+}
+
+GtkWidget* ptk_ui_xml_create_widget( XmlNode* tree )
+{
+    GSList* l;
+    GtkWidget* widget;
+
+    if( !tree->children )
+        return NULL;
+
+    tree = (XmlNode*)tree->children->data;
+
+    if( !tree->children )
+        return NULL;
+
+    if( !tree->name || strcmp(tree->name, "glade-interface") )
+        return NULL;
+
+    if( G_LIKELY( ! this_mod ) )    /* load our own module for symbol lookup if it's not loaded */
+        this_mod = g_module_open( NULL, 0 );
+
+    widget = NULL;
+    for( l = tree->children; l; l = l->next )
+    {
+        XmlNode* node = (XmlNode*)l->data;
+        if( node->name && 0 == strcmp("widget", node->name) )
+        {
+            PtkUIXml* xml = ptk_ui_xml_new();
+            widget = create_widget( NULL, node, NULL, xml );
+
+            if( G_LIKELY(widget) )
+            {
+                ptk_ui_xml_ref( xml );
+                g_object_set_qdata_full( (GObject*)widget, ptk_ui_xml_id,
+                                     xml, (GDestroyNotify)ptk_ui_xml_unref );
+                if( xml->def )
+                    gtk_widget_grab_default( xml->def );
+                if( xml->focus )
+                    gtk_widget_grab_focus( xml->focus );
+            }
+            ptk_ui_xml_unref( xml );
+        }
+    }
+
+    /* Unload the module in idle handler. So if several widgets need to be created,
+        at the same time, we don't have to load/unload modules repeatedly. */
+    g_idle_add_full( G_PRIORITY_LOW, (GSourceFunc)delayed_unload_module, NULL, NULL );
+
+    return widget;
+}
+
+GtkWidget* ptk_ui_xml_create_widget_from_file( const char* file )
+{
+    XmlNode *tree;
+    GtkWidget* widget = NULL;
+
+    tree = xml_tree_load( file );
+    if( G_LIKELY(tree) )
+    {
+        widget = ptk_ui_xml_create_widget( tree );
+        xml_tree_free( tree );
+    }
+    return widget;
+}
+
+PtkUIXml* ptk_ui_xml_new()
+{
+    PtkUIXml* xml = g_slice_new0( PtkUIXml );
+    xml->hash = g_hash_table_new_full( g_str_hash,
+                                       g_str_equal,
+                                       g_free, NULL );
+    xml->n_ref = 1;
+
+    if( G_UNLIKELY( ptk_ui_xml_id == 0) )
+        ptk_ui_xml_id = g_quark_from_static_string("ptk_ui_xml_id");
+    return xml;
+}
+
+void ptk_ui_xml_free( PtkUIXml* xml )
+{
+    g_hash_table_destroy( xml->hash );
+    if( xml->tips )
+        g_object_unref( xml->tips );
+    g_slice_free( PtkUIXml, xml );
+    /* g_debug("ptk_ui_XML_FREE"); */
+}
+
+PtkUIXml* ptk_ui_xml_get( GtkWidget* widget )
+{
+    return (PtkUIXml*)g_object_get_qdata( (GObject*)widget,
+                                          ptk_ui_xml_id );
+}
+
+void ptk_ui_xml_ref( PtkUIXml* xml )
+{
+    g_atomic_int_inc( (gint *) &xml->n_ref );
+}
+
+void ptk_ui_xml_unref( PtkUIXml* xml )
+{
+    if( g_atomic_int_dec_and_test( (gint *) &xml->n_ref) )
+        ptk_ui_xml_free( xml );
+}
+
+GtkWidget* ptk_ui_xml_lookup( PtkUIXml* xml,
+                              const char* name )
+{
+    return GTK_WIDGET( g_hash_table_lookup( xml->hash, name ) );
+}
+
+GtkWidget* ptk_ui_xml_get_widget( GtkWidget* top_widget,
+                                     const char* name )
+{
+    PtkUIXml* xml = ptk_ui_xml_get( top_widget );
+    if( !xml )
+        return NULL;
+    return GTK_WIDGET( g_hash_table_lookup( xml->hash, name ) );
+}
+
diff --git a/src/ptk-ui-xml/ptk-ui-xml.h b/src/ptk-ui-xml/ptk-ui-xml.h
new file mode 100644 (file)
index 0000000..56ba1a8
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ *      ptk-ui-xml.h -Lightweight parser for *.glade
+ *
+ *      Copyright 2008 PCMan <pcman.tw@gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
+
+#ifndef _PTK_UI_XML_H_
+#define _PTK_UI_XML_H_
+
+#include <gtk/gtk.h>
+#include "ptk-xml-tree.h"
+
+G_BEGIN_DECLS
+
+typedef struct _PtkUIXml PtkUIXml;
+
+GtkWidget* ptk_ui_xml_create_widget( XmlNode* tree );
+GtkWidget* ptk_ui_xml_create_widget_from_file( const char* file );
+
+GtkWidget* ptk_ui_xml_get_widget( GtkWidget* top_widget, const char* name );
+
+PtkUIXml* ptk_ui_xml_get( GtkWidget* widget );
+PtkUIXml* ptk_ui_xml_destroy( PtkUIXml*xml );
+
+void ptk_ui_xml_ref( PtkUIXml* xml );
+void ptk_ui_xml_unref( PtkUIXml* xml );
+
+GtkWidget* ptk_ui_xml_lookup( PtkUIXml* xml,
+                              const char* name );
+
+
+G_END_DECLS
+
+#endif
diff --git a/src/ptk-ui-xml/ptk-xml-tree.c b/src/ptk-ui-xml/ptk-xml-tree.c
new file mode 100644 (file)
index 0000000..f1165a9
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ *      ptk-xml-tree.h - Over-simplified mini xml dom implementation
+ *
+ *      Copyright 2008 PCMan <pcman.tw@gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
+
+#include <string.h>
+#include "ptk-xml-tree.h"
+#include "glib-mem.h"
+
+typedef struct _ParseInfo ParseInfo;
+
+struct _ParseInfo
+{
+    XmlNode* tree;
+    GArray* parse_stack;
+};
+
+#define xml_node_new()    g_slice_new0(XmlNode);
+
+static void start_element( GMarkupParseContext *context,
+                    const gchar *element_name,
+                    const gchar **attribute_names,
+                    const gchar **attribute_values,
+                    gpointer user_data,
+                    GError **error )
+{
+    ParseInfo* info = (ParseInfo*)user_data;
+    XmlNode *cur_node, *parent;
+    if( info->parse_stack->len > 0 ) {
+        parent = g_array_index( info->parse_stack,
+                                XmlNode*,
+                                info->parse_stack->len - 1 );
+    } else {
+        parent = NULL;
+    }
+    cur_node = xml_node_new();
+    cur_node->name = g_strdup( element_name );
+    cur_node->props = g_strdupv( (gchar**)attribute_names );
+    cur_node->vals = g_strdupv( (gchar**)attribute_values );
+    if( parent )
+    {
+        cur_node->parent = parent;
+        parent->children = g_slist_prepend( parent->children, cur_node );
+    }
+    /* push current node to the stack */
+    g_array_append_val( info->parse_stack, cur_node );
+}
+
+static void end_element( GMarkupParseContext *context,
+                  const gchar *element_name,
+                  gpointer user_data,
+                  GError **error )
+{
+    ParseInfo* info = (ParseInfo*)user_data;
+    int i = info->parse_stack->len - 1;
+    XmlNode* cur_node = g_array_index( info->parse_stack,
+                                       XmlNode*, i );
+
+    if( cur_node->cdata )
+    {
+        GString* str = (GString*)cur_node->cdata;
+        cur_node->cdata = g_strdup( str->str );
+        g_string_free( str, TRUE );
+    }
+
+    if( cur_node->children )
+        cur_node->children = g_slist_reverse( cur_node->children );
+
+    /* begin tag is different from end tag, error! */
+    if( strcmp( cur_node->name, element_name ) )
+    {
+        g_markup_parse_context_end_parse( context, NULL );
+        return;
+    }
+
+    /* pop current node from the stack */
+    g_array_remove_index( info->parse_stack, i );
+}
+
+static void cdata( GMarkupParseContext *context,
+            const gchar *text,
+            gsize text_len,
+            gpointer user_data,
+            GError **error )
+{
+    ParseInfo* info = (ParseInfo*)user_data;
+    GString* str;
+    XmlNode* cur_node = g_array_index( info->parse_stack,
+                                       XmlNode*,
+                                       info->parse_stack->len - 1 );
+    if( !cur_node->cdata )
+    {
+        str = g_string_sized_new(256);
+        cur_node->cdata = (char*)str;
+    }
+    else
+        str = (GString*)cur_node->cdata;
+    g_string_append_len( str, text, text_len );
+}
+
+static void parse_error( GMarkupParseContext *context,
+                  GError *error, gpointer user_data )
+{
+    ParseInfo* info = (ParseInfo*)user_data;
+    XmlNode* cur_node = g_array_index( info->parse_stack,
+                                       XmlNode*,
+                                       info->parse_stack->len - 1 );
+    if( cur_node->cdata )
+    {
+        GString* str = (GString*)cur_node->cdata;
+        g_string_free( str, TRUE );
+        cur_node->cdata = NULL;
+    }
+    g_markup_parse_context_end_parse( context, NULL );
+}
+
+static GMarkupParser parser =
+    {
+        start_element,
+        end_element,
+        cdata,
+        NULL,
+        parse_error
+    };
+
+XmlNode* xml_tree_load( const char* filename )
+{
+    gsize data_len;
+    char* data;
+
+    if ( g_file_get_contents( filename, &data, &data_len, NULL ) )
+    {
+        GMarkupParseContext * ctx;
+        ParseInfo info;
+        info.tree = xml_node_new();
+        info.parse_stack = g_array_sized_new(FALSE, TRUE, sizeof(XmlNode*), 32);
+        g_array_append_val( info.parse_stack, info.tree );
+        ctx = g_markup_parse_context_new( &parser,
+                                          (GMarkupParseFlags)0,
+                                          &info, NULL );
+        if( !g_markup_parse_context_parse( ctx, data, data_len, NULL ) )
+        {
+            xml_tree_free( info.tree );
+            info.tree = NULL;
+        }
+        g_markup_parse_context_free( ctx );
+        g_array_free( info.parse_stack, TRUE );
+        return info.tree;
+    }
+    return NULL;
+}
+
+void xml_node_free( XmlNode* node )
+{
+    GSList* l;
+    XmlNode* child;
+
+    if( node->children )
+    {
+        for( l = node->children; l; l = l->next )
+        {
+            child = (XmlNode*)l->data;
+            /* break the linkage between parent and child,
+                or subsequent recursive call to xml_node_free on
+                the child node will try to remove it from the parent again. */
+            child->parent = NULL;
+            xml_node_free( child );
+        }
+        g_slist_free( node->children );
+    }
+
+    /* delete the child node from its parent, ifneeded */
+    if( G_LIKELY( node->parent && node->parent->children) )
+        node->parent->children = g_slist_remove( node->parent->children, node );
+
+    g_free( node->name );
+    g_free( node->cdata );
+    g_strfreev( node->props );
+    g_strfreev( node->vals );
+    g_slice_free( XmlNode, node );
+}
+
+const char* xml_node_get_prop( XmlNode* node, const char* name )
+{
+    char **prop, **val;
+    for( prop = node->props, val = node->vals; *prop; ++prop, ++val )
+    {
+        if( *prop && 0 == strcmp(name, *prop) )
+            return *val;
+    }
+    return NULL;
+}
diff --git a/src/ptk-ui-xml/ptk-xml-tree.h b/src/ptk-ui-xml/ptk-xml-tree.h
new file mode 100644 (file)
index 0000000..a1dea54
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ *      ptk-xml-tree.h - Over-simplified mini xml dom implementation
+ *
+ *      Copyright 2008 PCMan <pcman.tw@gmail.com>
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *      MA 02110-1301, USA.
+ */
+
+#ifndef _PTK_XML_TREE_H_
+#define _PTK_XML_TREE_H_
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef struct _XmlNode XmlNode;
+struct _XmlNode
+{
+    char* name;
+    char** props;
+    char** vals;
+    char* cdata;
+    XmlNode* parent;
+    GSList* children;
+};
+
+XmlNode* xml_tree_load( const char* filename );
+/*
+XmlNode* xml_node_get_from_path( XmlNode* tree, const char* path );
+GSList* xml_node_get_elements_by_name( XmlNode* node, const char* tag_name );
+*/
+
+void xml_node_free( XmlNode* tree );
+#define xml_tree_free( tree )   xml_node_free( tree )
+const char* xml_node_get_tag_name( XmlNode* node );
+const char* xml_node_get_prop( XmlNode* node, const char* name );
+
+G_END_DECLS
+
+#endif