On Mon, 2013-03-04 at 10:49 -0500, Chris Lumens wrote:
We don't like GtkSpinButton, and this makes the widget the same
as the one
on the Add Mount Point dialog. That means it accepts Sizes as well. Leaving
the size blank should result in the mount point expanding to take up all
available free space.
---
anaconda.spec.in | 2 +-
pyanaconda/ui/gui/spokes/custom.glade | 16 ++-----
pyanaconda/ui/gui/spokes/custom.py | 84 +++++++++++++++++++----------------
3 files changed, 50 insertions(+), 52 deletions(-)
+ # If no size was specified, we just want to grow to
+ # the maximum. But resizeDevice doesn't take None for
+ # a value.
Shouldn't this (in future) be changed in
blivet now that it accepts
size=None in device factories?
+ if not size:
+ if hasattr(device, "vg"):
+ size = device.size + device.vg.freeSpace
+ else:
+ size = device.maxSize
+
self.__storage.resizeDevice(device, size)
except StorageError as e:
log.error("failed to schedule device resize: %s" % e)
@@ -1307,6 +1322,11 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
device_type = self._get_current_device_type()
log.debug("populate_raid: %s, %s" % (device_type, raid_level))
+ # If size comes in as a Size, convert it to a number. A None is
+ # fine, though.
+ if size and isinstance(size, Size):
+ size = int(size.convertTo(spec="MB"))
+
raid_label = self.builder.get_object("raidLevelLabel")
raid_combo = self.builder.get_object("raidLevelCombo")
@@ -1389,7 +1409,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
nameEntry = self.builder.get_object("nameEntry")
selectedDeviceLabel = self.builder.get_object("selectedDeviceLabel")
selectedDeviceDescLabel =
self.builder.get_object("selectedDeviceDescLabel")
- sizeSpinner = self.builder.get_object("sizeSpinner")
+ sizeEntry = self.builder.get_object("sizeEntry")
typeCombo = self.builder.get_object("deviceTypeCombo")
fsCombo = self.builder.get_object("fileSystemTypeCombo")
expander = self.builder.get_object("customizeExpander")
@@ -1439,23 +1459,13 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
else:
labelEntry.set_tooltip_text(_("This file system does not support
labels."))
- if device.exists:
- min_size = device.minSize
- max_size = device.maxSize
- else:
- min_size = max(device.format.minSize, 1.0)
- max_size = device.size +
float(self._free_space.convertTo(spec="mb")) # FIXME
-
- log.debug("min: %s max: %s current: %s" % (min_size, max_size,
device.size))
- sizeSpinner.set_range(min_size,
- max_size)
- sizeSpinner.set_value(device.size)
- sizeSpinner.set_sensitive(device.resizable or not device.exists)
+ sizeEntry.set_text(str(Size(spec="%d MB" % device.size)))
+ sizeEntry.set_sensitive(device.resizable or not device.exists)
- if sizeSpinner.get_sensitive():
- sizeSpinner.props.has_tooltip = False
+ if sizeEntry.get_sensitive():
+ sizeEntry.props.has_tooltip = False
else:
- sizeSpinner.set_tooltip_text(_("This file system may not be
resized."))
+ sizeEntry.set_tooltip_text(_("This file system may not be
resized."))
self._reformatCheckbox.set_active(not device.format.exists)
self._reformatCheckbox.set_sensitive(not device.protected and
@@ -1942,8 +1952,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
return
self._device_disks = disks
- self._populate_raid(self._get_raid_level(),
-
self.builder.get_object("sizeSpinner").get_value())
+ self._populate_raid(self._get_raid_level(),
size_from_entry(self.builder.get_object("sizeEntry")))
I think using
something self._size_entry would be better than using
'self.builder.get_object...' in multiple places, but I guess it's just a
matter of opinion.
--
Vratislav Podzimek
Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic