summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ui/createvol.ui3
-rw-r--r--virtManager/createvol.py58
2 files changed, 42 insertions, 19 deletions
diff --git a/ui/createvol.ui b/ui/createvol.ui
index c8b3eaf1..1c5ae1b7 100644
--- a/ui/createvol.ui
+++ b/ui/createvol.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.16.0 on Mon Sep 30 14:03:36 2013 -->
+<!-- Generated with glade 3.16.0 on Tue Oct 1 14:33:00 2013 -->
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkAdjustment" id="adjustment1">
@@ -179,6 +179,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
+ <signal name="changed" handler="on_vol_format_changed" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
diff --git a/virtManager/createvol.py b/virtManager/createvol.py
index 1cd53f0a..d959cced 100644
--- a/virtManager/createvol.py
+++ b/virtManager/createvol.py
@@ -53,9 +53,10 @@ class vmmCreateVolume(vmmGObjectUI):
"on_vol_create_clicked" : self.finish,
"on_vol_name_changed" : self.vol_name_changed,
+ "on_vol_format_changed" : self.vol_format_changed,
+ "on_backing_store_changed" : self._show_alloc,
"on_vol_allocation_value_changed" : self.vol_allocation_changed,
"on_vol_capacity_value_changed" : self.vol_capacity_changed,
- "on_backing_store_changed" : self.backing_store_changed,
"on_backing_browse_clicked" : self.browse_backing,
})
self.bind_escape_key_close()
@@ -134,9 +135,30 @@ class vmmCreateVolume(vmmGObjectUI):
self.vol.pool = self.parent_pool.get_backend()
def _can_alloc(self):
- # Sparse LVM volumes don't auto grow, so alloc=0 is useless
- islogical = (self.parent_pool.get_type() == "logical")
- return not islogical
+ if self.parent_pool.get_type() == "logical":
+ # Sparse LVM volumes don't auto grow, so alloc=0 is useless
+ return False
+ if self.get_config_format() == "qcow2":
+ return False
+ if (self.widget("backing-store").is_visible() and
+ self.widget("backing-store").get_text()):
+ return False
+ return True
+ def _show_alloc(self, *args, **kwargs):
+ ignore = args
+ ignore = kwargs
+ uihelpers.set_grid_row_visible(
+ self.widget("vol-allocation"), self._can_alloc())
+
+ def _can_backing(self):
+ if self.parent_pool.get_type() == "logical":
+ return True
+ if self.get_config_format() == "qcow2":
+ return True
+ return False
+ def _show_backing(self):
+ uihelpers.set_grid_row_visible(
+ self.widget("backing-expander"), self._can_backing())
def reset_state(self):
self._make_stub_vol()
@@ -149,28 +171,29 @@ class vmmCreateVolume(vmmGObjectUI):
hasformat = bool(len(self.vol.list_formats()))
uihelpers.set_grid_row_visible(self.widget("vol-format"), hasformat)
if hasformat:
+ # Select the default storage format
self.widget("vol-format").set_active(0)
+ default = self.config.get_storage_format()
+ for row in self.widget("vol-format").get_model():
+ if row[0] == default:
+ self.widget("vol-format").set_active_iter(row.iter)
+ break
default_alloc = 0
default_cap = 8
+ self.widget("backing-store").set_text("")
alloc = default_alloc
if not self._can_alloc():
alloc = default_cap
- uihelpers.set_grid_row_visible(self.widget("vol-allocation"),
- self._can_alloc())
-
- canbacking = (self.parent_pool.get_type() == "logical"
- or self.vol.TYPE_FILE == self.vol.TYPE_FILE)
- uihelpers.set_grid_row_visible(self.widget("backing-expander"),
- canbacking)
+ self._show_alloc()
+ self._show_backing()
self.widget("backing-expander").set_expanded(False)
- self.widget("backing-store").set_text("")
self.widget("vol-allocation").set_range(0,
int(self.parent_pool.get_available() / 1024 / 1024 / 1024))
self.widget("vol-allocation").set_value(alloc)
- self.widget("vol-capacity").set_range(1,
+ self.widget("vol-capacity").set_range(0.1,
int(self.parent_pool.get_available() / 1024 / 1024 / 1024))
self.widget("vol-capacity").set_value(default_cap)
@@ -235,11 +258,10 @@ class vmmCreateVolume(vmmGObjectUI):
if cap < alloc:
alloc_widget.set_value(cap)
- def backing_store_changed(self, src):
- if not self._can_alloc():
- return
- uihelpers.set_grid_row_visible(self.widget("vol-allocation"),
- not bool(src.get_text()))
+ def vol_format_changed(self, src):
+ ignore = src
+ self._show_alloc()
+ self._show_backing()
def browse_backing(self, src):
ignore = src