createvol: Bunch of misc improvements

- Hide backing store for formats that don't support it
- Hide allocation for qcow2 since it doesn't do anything
- Automatically select the storage format as specified in prefs
This commit is contained in:
Cole Robinson 2013-10-01 14:49:19 -04:00
parent 37350859ce
commit 7009bd2560
2 changed files with 42 additions and 19 deletions

View File

@ -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>

View File

@ -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