# HG changeset patch
# User "Cole Robinson <crobinso@redhat.com>"
# Date 1218416200 14400
# Node ID 145e007589cadd31bbdbd12b2b6cad4a35a47ba3
# Parent  97b86e27b9e540f67f677907e253462b70caeef4
Add storage manager to connection details section.

diff -r 97b86e27b9e5 -r 145e007589ca src/virtManager/host.py
--- a/src/virtManager/host.py	Thu Aug 07 17:37:16 2008 -0400
+++ b/src/virtManager/host.py	Sun Aug 10 20:56:40 2008 -0400
@@ -25,8 +25,13 @@
 import sparkline
 import logging
 import os
+import traceback
+
+from virtinst import Storage
 
 from virtManager.createnet import vmmCreateNetwork
+from virtManager.createpool import vmmCreatePool
+from virtManager.createvol import vmmCreateVolume
 from virtManager.error import vmmErrorDialog
 
 class vmmHost(gobject.GObject):
@@ -39,6 +44,9 @@
         self.window = gtk.glade.XML(config.get_glade_dir() + "/vmm-host.glade", "vmm-host", domain="virt-manager")
         self.config = config
         self.conn = conn
+
+        self.PIXBUF_STATE_RUNNING = gtk.gdk.pixbuf_new_from_file_at_size(self.config.get_icon_dir() + "/state_running.png", 18, 18)
+        self.PIXBUF_STATE_SHUTOFF = gtk.gdk.pixbuf_new_from_file_at_size(self.config.get_icon_dir() + "/state_shutoff.png", 18, 18)
 
         topwin = self.window.get_widget("vmm-host")
         topwin.hide()
@@ -60,7 +68,16 @@
         self.window.get_widget("net-list").set_model(netListModel)
         self.populate_networks(netListModel)
 
+        poolListModel = gtk.ListStore(str, str, float)
+        self.window.get_widget("pool-list").set_model(poolListModel)
+        self.populate_storage_pools(poolListModel)
+
+        volListModel = gtk.ListStore(str, str, str, str)
+        self.window.get_widget("vol-list").set_model(volListModel)
+
         self.window.get_widget("net-list").get_selection().connect("changed", self.net_selected)
+        self.window.get_widget("pool-list").get_selection().connect("changed", self.pool_selected)
+        self.window.get_widget("vol-list").get_selection().connect("changed", self.vol_selected)
 
         netCol = gtk.TreeViewColumn("Networks")
         net_txt = gtk.CellRendererText()
@@ -73,6 +90,35 @@
         self.window.get_widget("net-list").append_column(netCol)
         self.window.get_widget("net-details").set_sensitive(False)
 
+        poolCol = gtk.TreeViewColumn("Pools")
+        pool_txt = gtk.CellRendererText()
+        pool_prg = gtk.CellRendererProgress()
+        poolCol.pack_start(pool_txt, True)
+        poolCol.pack_start(pool_prg, False)
+        poolCol.add_attribute(pool_txt, 'text', 1)
+        poolCol.add_attribute(pool_prg, 'value', 2)
+        self.window.get_widget("pool-list").append_column(poolCol)
+
+        volCol = gtk.TreeViewColumn("Volumes")
+        vol_txt1 = gtk.CellRendererText()
+        volCol.pack_start(vol_txt1, True)
+        volCol.add_attribute(vol_txt1, 'text', 1)
+        self.window.get_widget("vol-list").append_column(volCol)
+
+        volSizeCol = gtk.TreeViewColumn("Size")
+        vol_txt2 = gtk.CellRendererText()
+        volSizeCol.pack_start(vol_txt2, False)
+        volSizeCol.add_attribute(vol_txt2, 'text', 2)
+        self.window.get_widget("vol-list").append_column(volSizeCol)
+
+        volFormatCol = gtk.TreeViewColumn("Format")
+        vol_txt3 = gtk.CellRendererText()
+        volFormatCol.pack_start(vol_txt3, False)
+        volFormatCol.add_attribute(vol_txt3, 'text', 3)
+        self.window.get_widget("vol-list").append_column(volFormatCol)
+
+        self.window.get_widget("pool-details").set_sensitive(False)
+
         self.cpu_usage_graph = sparkline.Sparkline()
         self.cpu_usage_graph.show()
         self.window.get_widget("performance-table").attach(self.cpu_usage_graph, 1, 2, 0, 1)
@@ -81,11 +127,19 @@
         self.memory_usage_graph.show()
         self.window.get_widget("performance-table").attach(self.memory_usage_graph, 1, 2, 1, 2)
 
-        self.add = None
-        self.window.get_widget("details-tabs").get_nth_page(2).hide()
+        self.addnet = None
+        self.addpool = None
+        self.addvol = None
 
         self.conn.connect("net-added", self.repopulate_networks)
         self.conn.connect("net-removed", self.repopulate_networks)
+        self.conn.connect("net-started", self.refresh_network)
+        self.conn.connect("net-stopped", self.refresh_network)
+
+        self.conn.connect("pool-added", self.repopulate_storage_pools)
+        self.conn.connect("pool-removed", self.repopulate_storage_pools)
+        self.conn.connect("pool-started", self.refresh_storage_pool)
+        self.conn.connect("pool-stopped", self.refresh_storage_pool)
 
         # XXX not technically correct once we enable remote management
         if (os.getuid() != 0 and not self.conn.is_remote()) \
@@ -101,13 +155,20 @@
             "on_net_delete_clicked": self.delete_network,
             "on_net_stop_clicked": self.stop_network,
             "on_net_start_clicked": self.start_network,
+            "on_pool_add_clicked" : self.add_pool,
+            "on_vol_add_clicked" : self.add_vol,
+            "on_pool_stop_clicked": self.stop_pool,
+            "on_pool_start_clicked": self.start_pool,
+            "on_pool_delete_clicked": self.delete_pool,
+            "on_pool_autostart_toggled": self.pool_autostart_changed,
+            "on_vol_delete_clicked": self.delete_vol,
+            "on_pool_apply_clicked": self.pool_apply,
             "on_config_autoconnect_toggled": self.toggle_autoconnect,
             })
 
         self.conn.connect("resources-sampled", self.refresh_resources)
-        self.conn.connect("net-started", self.refresh_network)
-        self.conn.connect("net-stopped", self.refresh_network)
         self.refresh_resources()
+        self.reset_pool_state()
 
     def show(self):
         # Update autostart value
@@ -140,9 +201,9 @@
             self.err.val_err(_("Creating new networks on remote connections is not yet supported"))
             return
 
-        if self.add is None:
-            self.add = vmmCreateNetwork(self.config, self.conn)
-        self.add.show()
+        if self.addnet is None:
+            self.addnet = vmmCreateNetwork(self.config, self.conn)
+        self.addnet.show()
 
     def toggle_autoconnect(self, ignore=None):
         if self.conn.get_autoconnect() != \
@@ -169,6 +230,9 @@
         memory_vector = self.conn.current_memory_vector()
         memory_vector.reverse()
         self.memory_usage_graph.set_property("data_array", memory_vector)
+
+
+    # Virtual Network functions
 
     def current_network(self):
         sel = self.window.get_widget("net-list").get_selection()
@@ -202,7 +266,7 @@
                     self.window.get_widget("net-device").set_text(net.get_bridge_device())
                     self.window.get_widget("net-device").set_sensitive(True)
                     self.window.get_widget("net-state").set_text(_("Active"))
-                    self.window.get_widget("net-state-icon").set_from_pixbuf(gtk.gdk.pixbuf_new_from_file_at_size(self.config.get_icon_dir() + "/state_running.png", 18, 18))
+                    self.window.get_widget("net-state-icon").set_from_pixbuf(self.PIXBUF_STATE_RUNNING)
                     self.window.get_widget("net-start").set_sensitive(False)
                     self.window.get_widget("net-stop").set_sensitive(True)
                     self.window.get_widget("net-delete").set_sensitive(False)
@@ -210,17 +274,12 @@
                     self.window.get_widget("net-device").set_text("")
                     self.window.get_widget("net-device").set_sensitive(False)
                     self.window.get_widget("net-state").set_text(_("Inactive"))
-                    self.window.get_widget("net-state-icon").set_from_pixbuf(gtk.gdk.pixbuf_new_from_file_at_size(self.config.get_icon_dir() + "/state_shutoff.png", 18, 18))
+                    self.window.get_widget("net-state-icon").set_from_pixbuf(self.PIXBUF_STATE_SHUTOFF)
                     self.window.get_widget("net-start").set_sensitive(True)
                     self.window.get_widget("net-stop").set_sensitive(False)
                     self.window.get_widget("net-delete").set_sensitive(True)
 
-                autostart = True
-                try:
-                    autostart = net.get_autostart()
-                except:
-                    # Hack, libvirt 0.2.1 is missing python binding for the autostart method
-                    pass
+                autostart = net.get_autostart()
                 if autostart:
                     self.window.get_widget("net-autostart").set_text(_("On boot"))
                     self.window.get_widget("net-autostart-icon").set_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_MENU)
@@ -258,4 +317,211 @@
             model.append([uuid, net.get_name(), gtk.STOCK_NETWORK])
 
 
+    # ------------------------------
+    # Storage Manager methods
+    # ------------------------------
+
+
+    def add_pool(self, src):
+        if self.addpool is None:
+            self.addpool = vmmCreatePool(self.config, self.conn)
+        self.addpool.show()
+
+    def add_vol(self, src):
+        pool = self.current_pool()
+        if pool is None:
+            return
+        if self.addvol is None:
+            self.addvol = vmmCreateVolume(self.config, self.conn, pool)
+            self.addvol.connect("vol-created", self.refresh_current_pool)
+        else:
+            self.addvol.set_parent_pool(pool)
+        self.addvol.show()
+
+    def refresh_current_pool(self, ignore1=None):
+        cp = self.current_pool()
+        if cp is None:
+            return
+        self.refresh_storage_pool(None, None, cp.get_uuid())
+
+    def current_pool(self):
+        sel = self.window.get_widget("pool-list").get_selection()
+        active = sel.get_selected()
+        if active[1] != None:
+            curruuid = active[0].get_value(active[1], 0)
+            return self.conn.get_pool(curruuid)
+        return None
+
+    def current_vol(self):
+        pool = self.current_pool()
+        if not pool:
+            return None
+        sel = self.window.get_widget("vol-list").get_selection()
+        active = sel.get_selected()
+        if active[1] != None:
+            curruuid = active[0].get_value(active[1], 0)
+            return pool.get_volume(curruuid)
+        return None
+
+    def stop_pool(self, src):
+        pool = self.current_pool()
+        if pool is not None:
+            pool.stop()
+
+    def start_pool(self, src):
+        pool = self.current_pool()
+        if pool is not None:
+            pool.start()
+
+    def delete_pool(self, src):
+        pool = self.current_pool()
+        if pool is None:
+            return
+
+        result = self.err.yes_no(_("This will permanently delete the volume "
+                                   "'%s,' are you sure?") % pool.get_name())
+        if not result:
+            return
+        try:
+            pool.delete()
+        except Exception, e:
+            self.err.show_err(_("Error deleting pool: %s") % str(e),
+                              "".join(traceback.format_exc()))
+            return
+
+    def delete_vol(self, src):
+        vol = self.current_vol()
+        if vol is None:
+            return
+
+        result = self.err.yes_no(_("This will permanently delete the volume "
+                                   "'%s,' are you sure?") % vol.get_name())
+        if not result:
+            return
+
+        try:
+            vol.delete()
+        except Exception, e:
+            self.err.show_err(_("Error deleting volume: %s") % str(e),
+                              "".join(traceback.format_exc()))
+            return
+
+        self.populate_storage_volumes()
+
+    def pool_apply(self, src):
+        pool = self.current_pool()
+        if pool is None:
+            return
+
+        try:
+            pool.set_autostart(self.window.get_widget("pool-autostart").get_active())
+        except Exception, e:
+            self.err.show_err(_("Error setting pool autostart: %s") % str(e),
+                              "".join(traceback.format_exc()))
+            return
+        self.window.get_widget("pool-apply").set_sensitive(False)
+
+    def pool_autostart_changed(self, src):
+        auto = self.window.get_widget("pool-autostart").get_active()
+        self.window.get_widget("pool-autostart").set_label(auto and \
+                                                           _("On Boot") or \
+                                                           _("Never"))
+        self.window.get_widget("pool-apply").set_sensitive(True)
+
+    def pool_selected(self, src):
+        selected = src.get_selected()
+        if selected[1] is None or \
+           selected[0].get_value(selected[1], 0) is None:
+            self.reset_pool_state()
+            return
+
+        uuid = selected[0].get_value(selected[1], 0)
+        pool = self.conn.get_pool(uuid)
+        auto = pool.get_autostart()
+        active = pool.is_active()
+
+        # Set pool details state
+        self.window.get_widget("pool-details").set_sensitive(True)
+        self.window.get_widget("pool-name").set_markup("<b>%s:</b>" % \
+                                                       pool.get_name())
+        self.window.get_widget("pool-sizes").set_markup("""<span size="large">%s Free</span> / <i>%s In Use</i>""" % (pool.get_pretty_available(), pool.get_pretty_allocation()))
+        self.window.get_widget("pool-type").set_text(Storage.StoragePool.get_pool_type_desc(pool.get_type()))
+        self.window.get_widget("pool-location").set_text(pool.get_target_path())
+        self.window.get_widget("pool-state-icon").set_from_pixbuf((active and self.PIXBUF_STATE_RUNNING) or self.PIXBUF_STATE_SHUTOFF)
+        self.window.get_widget("pool-state").set_text((active and _("Active")) or _("Inactive"))
+        self.window.get_widget("pool-autostart").set_label((auto and _("On boot")) or _("Never"))
+        self.window.get_widget("pool-autostart").set_active(auto)
+
+        self.window.get_widget("vol-list").set_sensitive(active)
+        self.populate_storage_volumes()
+
+        self.window.get_widget("pool-delete").set_sensitive(not active)
+        self.window.get_widget("pool-stop").set_sensitive(active)
+        self.window.get_widget("pool-start").set_sensitive(not active)
+        self.window.get_widget("pool-apply").set_sensitive(False)
+        self.window.get_widget("vol-add").set_sensitive(active)
+        self.window.get_widget("vol-delete").set_sensitive(False)
+
+    def refresh_storage_pool(self, src, uri, uuid):
+        sel = self.window.get_widget("pool-list").get_selection()
+        active = sel.get_selected()
+        if active[1] != None:
+            curruuid = active[0].get_value(active[1], 0)
+            if curruuid == uuid:
+                self.pool_selected(sel)
+
+    def reset_pool_state(self):
+        self.window.get_widget("pool-details").set_sensitive(False)
+        self.window.get_widget("pool-name").set_text("")
+        self.window.get_widget("pool-sizes").set_text("")
+        self.window.get_widget("pool-type").set_text("")
+        self.window.get_widget("pool-location").set_text("")
+        self.window.get_widget("pool-state-icon").set_from_pixbuf(self.PIXBUF_STATE_SHUTOFF)
+        self.window.get_widget("pool-state").set_text(_("Inactive"))
+        self.window.get_widget("vol-list").get_model().clear()
+        self.window.get_widget("pool-autostart").set_label(_("Never"))
+        self.window.get_widget("pool-autostart").set_active(False)
+
+        self.window.get_widget("pool-delete").set_sensitive(False)
+        self.window.get_widget("pool-stop").set_sensitive(False)
+        self.window.get_widget("pool-start").set_sensitive(False)
+        self.window.get_widget("pool-apply").set_sensitive(False)
+        self.window.get_widget("vol-add").set_sensitive(False)
+        self.window.get_widget("vol-delete").set_sensitive(False)
+        self.window.get_widget("vol-list").set_sensitive(False)
+
+    def vol_selected(self, src):
+        selected = src.get_selected()
+        if selected[1] is None or \
+           selected[0].get_value(selected[1], 0) is None:
+            self.window.get_widget("vol-delete").set_sensitive(False)
+            return
+
+        self.window.get_widget("vol-delete").set_sensitive(True)
+
+    def repopulate_storage_pools(self, src, uri, uuid):
+        self.populate_storage_pools(self.window.get_widget("pool-list").get_model())
+
+    def populate_storage_pools(self, model):
+        model.clear()
+        for uuid in self.conn.list_pool_uuids():
+            pool = self.conn.get_pool(uuid)
+            cap = pool.get_capacity()
+            all = pool.get_allocation()
+            if not cap or all is None:
+                per = 0
+            else:
+                per = int(((float(all) / float(cap)) * 100))
+            model.append([uuid, pool.get_name(), per])
+
+    def populate_storage_volumes(self):
+        pool = self.current_pool()
+        model = self.window.get_widget("vol-list").get_model()
+        model.clear()
+        vols = pool.get_volumes()
+        for key in vols.keys():
+            vol = vols[key]
+            model.append([key, vol.get_name(), vol.get_pretty_capacity(),
+                          vol.get_format() or ""])
+
 gobject.type_register(vmmHost)
diff -r 97b86e27b9e5 -r 145e007589ca src/vmm-host.glade
--- a/src/vmm-host.glade	Thu Aug 07 17:37:16 2008 -0400
+++ b/src/vmm-host.glade	Sun Aug 10 20:56:40 2008 -0400
@@ -9,7 +9,7 @@
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_NONE</property>
   <property name="modal">False</property>
-  <property name="default_width">600</property>
+  <property name="default_width">650</property>
   <property name="default_height">450</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
@@ -1714,23 +1714,21 @@
 	  </child>
 
 	  <child>
-	    <widget class="GtkHBox" id="hbox2">
+	    <widget class="GtkVBox" id="vbox5">
+	      <property name="border_width">3</property>
 	      <property name="visible">True</property>
 	      <property name="homogeneous">False</property>
 	      <property name="spacing">0</property>
 
 	      <child>
-		<widget class="GtkScrolledWindow" id="scrolledwindow2">
-		  <property name="border_width">6</property>
+		<widget class="GtkHPaned" id="hpaned1">
+		  <property name="border_width">3</property>
 		  <property name="visible">True</property>
 		  <property name="can_focus">True</property>
-		  <property name="hscrollbar_policy">GTK_POLICY_NEVER</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="treeview1">
+		    <widget class="GtkTreeView" id="pool-list">
+		      <property name="width_request">134</property>
 		      <property name="visible">True</property>
 		      <property name="can_focus">True</property>
 		      <property name="headers_visible">False</property>
@@ -1741,61 +1739,248 @@
 		      <property name="hover_selection">False</property>
 		      <property name="hover_expand">False</property>
 		    </widget>
+		    <packing>
+		      <property name="shrink">True</property>
+		      <property name="resize">False</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="GtkVBox" id="vbox3">
-		  <property name="border_width">6</property>
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">3</property>
 
 		  <child>
-		    <widget class="GtkFrame" id="frame5">
+		    <widget class="GtkVBox" id="pool-details">
 		      <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>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">3</property>
 
 		      <child>
-			<widget class="GtkAlignment" id="alignment5">
+			<widget class="GtkTable" id="table5">
+			  <property name="border_width">6</property>
 			  <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">12</property>
-			  <property name="right_padding">0</property>
+			  <property name="n_rows">5</property>
+			  <property name="n_columns">2</property>
+			  <property name="homogeneous">False</property>
+			  <property name="row_spacing">3</property>
+			  <property name="column_spacing">8</property>
 
 			  <child>
-			    <widget class="GtkTable" id="table5">
-			      <property name="border_width">6</property>
+			    <widget class="GtkLabel" id="label73">
 			      <property name="visible">True</property>
-			      <property name="n_rows">2</property>
-			      <property name="n_columns">2</property>
+			      <property name="label" translatable="yes">Pool Type:</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="pool-type">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Pool Type</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">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="GtkLabel" id="pool-name">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">&lt;b&gt;Poolname:&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</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="pool-sizes">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">&lt;span size=&quot;large&quot;&gt;1234 GB Free&lt;/span&gt; / &lt;i&gt;6000 GB In Use&lt;/i&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</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">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="GtkLabel" id="label60">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Location:</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="pool-location">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="editable">False</property>
+			      <property name="visibility">True</property>
+			      <property name="max_length">0</property>
+			      <property name="text" translatable="yes"></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>
+
+			  <child>
+			    <widget class="GtkLabel" id="label75">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">State:</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">3</property>
+			      <property name="bottom_attach">4</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox7">
+			      <property name="visible">True</property>
 			      <property name="homogeneous">False</property>
-			      <property name="row_spacing">3</property>
-			      <property name="column_spacing">3</property>
+			      <property name="spacing">3</property>
 
 			      <child>
-				<widget class="GtkLabel" id="label59">
+				<widget class="GtkImage" id="pool-state-icon">
 				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">Location:</property>
+				  <property name="xalign">0</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="pool-state">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">Active</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">1</property>
+				  <property name="xalign">0.5</property>
 				  <property name="yalign">0.5</property>
 				  <property name="xpad">0</property>
 				  <property name="ypad">0</property>
@@ -1805,115 +1990,467 @@
 				  <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>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
 				</packing>
 			      </child>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">3</property>
+			      <property name="bottom_attach">4</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options">fill</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label76">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Autostart:</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">4</property>
+			      <property name="bottom_attach">5</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkCheckButton" id="pool-autostart">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">Some label</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>
+			      <signal name="toggled" handler="on_pool_autostart_toggled" last_modification_time="Thu, 07 Aug 2008 01:27:28 GMT"/>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">4</property>
+			      <property name="bottom_attach">5</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></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="GtkVBox" id="vbox6">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">3</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="label77">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">&lt;b&gt;Volumes&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</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="GtkScrolledWindow" id="scrolledwindow5">
+			      <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="GtkEntry" id="storage-location">
+				<widget class="GtkTreeView" id="vol-list">
 				  <property name="visible">True</property>
 				  <property name="can_focus">True</property>
-				  <property name="editable">False</property>
-				  <property name="visibility">True</property>
-				  <property name="max_length">0</property>
-				  <property name="text" translatable="yes"></property>
-				  <property name="has_frame">True</property>
-				  <property name="invisible_char">•</property>
-				  <property name="activates_default">False</property>
-				  <accessibility>
-				    <atkproperty name="AtkObject::accessible_name" translatable="yes">Storage Location</atkproperty>
-				  </accessibility>
+				  <property name="headers_visible">True</property>
+				  <property name="rules_hint">False</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>
-				<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>
+			    </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">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="shrink">True</property>
+		      <property name="resize">True</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="GtkHBox" id="hbox9">
+		  <property name="border_width">3</property>
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox10">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkButton" id="pool-add">
+			  <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>
+			  <signal name="clicked" handler="on_pool_add_clicked" last_modification_time="Thu, 07 Aug 2008 01:22:11 GMT"/>
+
+			  <child>
+			    <widget class="GtkImage" id="image4">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-add</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="pool-start">
+			  <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>
+			  <signal name="clicked" handler="on_pool_start_clicked" last_modification_time="Thu, 07 Aug 2008 01:24:39 GMT"/>
+
+			  <child>
+			    <widget class="GtkImage" id="someicon">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-media-play</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="pool-stop">
+			  <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>
+			  <signal name="clicked" handler="on_pool_stop_clicked" last_modification_time="Thu, 07 Aug 2008 01:24:56 GMT"/>
+
+			  <child>
+			    <widget class="GtkImage" id="image6">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-cancel</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="pool-delete">
+			  <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>
+			  <signal name="clicked" handler="on_pool_delete_clicked" last_modification_time="Thu, 07 Aug 2008 01:25:09 GMT"/>
+
+			  <child>
+			    <widget class="GtkImage" id="image7">
+			      <property name="visible">True</property>
+			      <property name="stock">gtk-delete</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">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox11">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkButton" id="vol-add">
+			  <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>
+			  <signal name="clicked" handler="on_vol_add_clicked" last_modification_time="Thu, 07 Aug 2008 03:19:43 GMT"/>
+
+			  <child>
+			    <widget class="GtkAlignment" id="alignment9">
+			      <property name="visible">True</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xscale">0</property>
+			      <property name="yscale">0</property>
+			      <property name="top_padding">0</property>
+			      <property name="bottom_padding">0</property>
+			      <property name="left_padding">0</property>
+			      <property name="right_padding">0</property>
 
 			      <child>
-				<widget class="GtkLabel" id="label68">
+				<widget class="GtkHBox" id="hbox13">
 				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">Name:</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">1</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>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
+
+				  <child>
+				    <widget class="GtkImage" id="image8">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-new</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>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="somelabel">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">New Volume</property>
+				      <property name="use_underline">True</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>
 				</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="GtkEntry" id="storage-name">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="editable">False</property>
-				  <property name="visibility">True</property>
-				  <property name="max_length">0</property>
-				  <property name="text" translatable="yes"></property>
-				  <property name="has_frame">True</property>
-				  <property name="invisible_char">•</property>
-				  <property name="activates_default">False</property>
-				  <accessibility>
-				    <atkproperty name="AtkObject::accessible_name" translatable="yes">Storage Name</atkproperty>
-				  </accessibility>
-				</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>
 			    </widget>
 			  </child>
 			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
 		      </child>
 
 		      <child>
-			<widget class="GtkLabel" id="label62">
+			<widget class="GtkButton" id="vol-delete">
 			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">&lt;b&gt;Basic details&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>
+			  <property name="can_focus">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <signal name="clicked" handler="on_vol_delete_clicked" last_modification_time="Thu, 07 Aug 2008 01:26:50 GMT"/>
+
+			  <child>
+			    <widget class="GtkAlignment" id="alignment10">
+			      <property name="visible">True</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xscale">0</property>
+			      <property name="yscale">0</property>
+			      <property name="top_padding">0</property>
+			      <property name="bottom_padding">0</property>
+			      <property name="left_padding">0</property>
+			      <property name="right_padding">0</property>
+
+			      <child>
+				<widget class="GtkHBox" id="hbox14">
+				  <property name="visible">True</property>
+				  <property name="homogeneous">False</property>
+				  <property name="spacing">2</property>
+
+				  <child>
+				    <widget class="GtkImage" id="image9">
+				      <property name="visible">True</property>
+				      <property name="stock">gtk-delete</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>
+				    <packing>
+				      <property name="padding">0</property>
+				      <property name="expand">False</property>
+				      <property name="fill">False</property>
+				    </packing>
+				  </child>
+
+				  <child>
+				    <widget class="GtkLabel" id="label82">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">Delete Volume</property>
+				      <property name="use_underline">True</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>
+				</widget>
+			      </child>
+			    </widget>
+			  </child>
 			</widget>
 			<packing>
-			  <property name="type">label_item</property>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkButton" id="pool-apply">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label">gtk-apply</property>
+			  <property name="use_stock">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <signal name="clicked" handler="on_pool_apply_clicked" last_modification_time="Fri, 08 Aug 2008 01:11:49 GMT"/>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
 			</packing>
 		      </child>
 		    </widget>
@@ -1923,47 +2460,10 @@
 		      <property name="fill">True</property>
 		    </packing>
 		  </child>
-
-		  <child>
-		    <widget class="GtkHSeparator" id="hseparator2">
-		      <property name="visible">True</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkHButtonBox" id="hbuttonbox2">
-		      <property name="border_width">6</property>
-		      <property name="visible">True</property>
-		      <property name="layout_style">GTK_BUTTONBOX_END</property>
-		      <property name="spacing">3</property>
-
-		      <child>
-			<widget class="GtkButton" id="storage-apply">
-			  <property name="visible">True</property>
-			  <property name="can_default">True</property>
-			  <property name="can_focus">True</property>
-			  <property name="label">gtk-apply</property>
-			  <property name="use_stock">True</property>
-			  <property name="relief">GTK_RELIEF_NORMAL</property>
-			  <property name="focus_on_click">True</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">True</property>
+		  <property name="expand">False</property>
 		  <property name="fill">True</property>
 		</packing>
 	      </child>
