diff options
-rw-r--r-- | iw/partition_gui.py | 57 |
1 files changed, 39 insertions, 18 deletions
diff --git a/iw/partition_gui.py b/iw/partition_gui.py index fb1576d49..a00140456 100644 --- a/iw/partition_gui.py +++ b/iw/partition_gui.py @@ -865,22 +865,37 @@ class PartitionWindow(InstallWindow): parent=self.parent) dialog.set_position(WIN_POS_CENTER) dialog.run() + return + elif type(partition) == type("RAID"): + # XXXX evil way to reference RAID device requests!! + request = self.partitions.getRequestByDeviceName(partition) + if request: + self.partitions.removeRequest(request) + else: # shouldn't happen + raise ValueError, "Deleting a non-existenent partition" elif partition.type & parted.PARTITION_FREESPACE: dialog = GnomeWarningDialog(_("You cannot remove free space."), parent=self.parent) dialog.set_position(WIN_POS_CENTER) dialog.run() + return else: # see if device is in our partition requests, remove request = self.partitions.getRequestByDeviceName(get_partition_name(partition)) - if request: + if self.partitions.isRaidMember(request): + dialog = GnomeWarningDialog(_("You cannot remove this " + "partition, as it is part of a RAID device.")) + dialog.set_position(WIN_POS_CENTER) + dialog.run() + return + self.partitions.removeRequest(request) if request.type == REQUEST_PREEXIST: # get the drive drive = partition.geom.disk.dev.path[5:] delete = DeleteSpec(drive, partition.geom.start, partition.geom.end) - self.partitions.addDelete(delete) + self.partitions.addDelete(delete) else: # shouldn't happen raise ValueError, "Deleting a non-existenent partition" @@ -913,24 +928,19 @@ class PartitionWindow(InstallWindow): doPartitioning(self.diskset, self.partitions) rc = 0 except PartitioningError, msg: - self.intf.messageWindow(_("Error Partitioning"), _("Could not allocated requested partitions: %s.") % (msg)) + self.intf.messageWindow(_("Error Partitioning"), + _("Could not allocated requested partitions: %s.") % (msg)) rc = -1 self.populate() self.tree.thaw() self.checkNextConditions() -# for r in self.partitions.requests: -# print "--------------------------" -# print r -# print "--------------------------" -# -# print "\n\n" return rc def editCb(self, widget): node = self.tree.selection[0] partition = self.tree.node_get_row_data (node) - print "editcb->", partition, type(partition), type("RAID") + if partition == None: dialog = GnomeWarningDialog(_("You must first select an existing " "partition to edit."), @@ -939,12 +949,13 @@ class PartitionWindow(InstallWindow): dialog.run() return elif type(partition) == type("RAID"): - print "edit ",partition # XXXX evil way to reference RAID device requests!! - req = self.partitions.getRequestByDeviceName(partition) - print "request is", req - self.editRaidDevice(req) - return + request = self.partitions.getRequestByDeviceName(partition) + if request: + self.editRaidDevice(request) + return + else: + raise ValueError, "Editting a non-existenent partition" elif partition.type & parted.PARTITION_FREESPACE: dialog = GnomeWarningDialog (_("You may only add partitions to " "free spaces. You can only add " @@ -955,11 +966,21 @@ class PartitionWindow(InstallWindow): return elif partition.type & parted.PARTITION_EXTENDED: return - + + # otherwise this is a "normal" partition to edit request = self.partitions.getRequestByDeviceName(get_partition_name(partition)) - print request - self.editPartitionRequest(request) + if request: + if self.partitions.isRaidMember(request): + dialog = GnomeWarningDialog(_("You cannot edit this " + "partition, as it is part of a RAID device.")) + dialog.set_position(WIN_POS_CENTER) + dialog.run() + return + else: + self.editPartitionRequest(request) + else: + raise ValueError, "Editting a non-existenent partition" def editRaidDevice(self, raidrequest): # |