diff options
author | Mike Fulbright <msf@redhat.com> | 2001-07-11 20:31:00 +0000 |
---|---|---|
committer | Mike Fulbright <msf@redhat.com> | 2001-07-11 20:31:00 +0000 |
commit | 197b5566ddbeeb590fb4e6ba87b8af4e3f68afb2 (patch) | |
tree | 88b9e31d71e8a3ae860d77e0e9a8a3185e7e5347 | |
parent | 76e59402a8d4bf4852cb9c5bd66146b442208550 (diff) | |
download | anaconda-197b5566ddbeeb590fb4e6ba87b8af4e3f68afb2.tar.gz anaconda-197b5566ddbeeb590fb4e6ba87b8af4e3f68afb2.tar.xz anaconda-197b5566ddbeeb590fb4e6ba87b8af4e3f68afb2.zip |
fix for not releasing parted objects and not being able to reread partition table in TUI
-rw-r--r-- | textw/partition_text.py | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/textw/partition_text.py b/textw/partition_text.py index e0f2c74eb..83c8ed5dc 100644 --- a/textw/partition_text.py +++ b/textw/partition_text.py @@ -497,6 +497,13 @@ class PartitionWindow: self.screen.popWindow() return (format, migrate, newfstype, badblocksCB.selected()) + def shutdownUI(self): + # XXX remove parted object refs + # need to put in clear() method for checkboxtree in snack + if self.drivelist: + self.drivelist.key2item = {} + self.drivelist.item2key = {} + def editPartitionRequest(self, origrequest): self.oldMount = None @@ -515,7 +522,7 @@ class PartitionWindow: subgrid.setField(fsgrid, 0, 0, anchorLeft = 1, anchorTop=1) if origrequest.start == None: - (drivelist, drivegrid) = self.makeDriveList(origrequest) + (self.drivelist, drivegrid) = self.makeDriveList(origrequest) subgrid.setField(drivegrid, 1, 0, (2,0,0,0), anchorRight=1, anchorTop=1) poplevel.add(subgrid, 0, row, (0,1,0,0), growx=1) @@ -531,6 +538,7 @@ class PartitionWindow: poplevel.add(allsize, 0, row, (0,1,0,0), growx=1) else: # explicit add via cylinder + self.drivelist = None poplevel.add(subgrid, 0, row, (0,1,0,0)) row = row + 1 @@ -641,11 +649,11 @@ class PartitionWindow: request.grow = grow request.maxSize = maxsize - if len(drivelist.getSelection()) == len(self.diskset.disks.keys()): + if len(self.drivelist.getSelection()) == len(self.diskset.disks.keys()): allowdrives = None else: allowdrives = [] - for i in drivelist.getSelection(): + for i in self.drivelist.getSelection(): allowdrives.append(i) request.drive = allowdrives else: @@ -702,8 +710,8 @@ class PartitionWindow: break # clean up + self.shutdownUI() self.screen.popWindow() -# self.refresh() def editRaidRequest(self, raidrequest): @@ -724,7 +732,7 @@ class PartitionWindow: row = row + 1 drivegrid = Grid(2, 1) - (drivelist, drivesubgrid) = self.makeRaidDriveList(raidrequest) + (self.drivelist, drivesubgrid) = self.makeRaidDriveList(raidrequest) drivegrid.setField(drivesubgrid, 0, 0, (0,0,4,0), anchorLeft = 1, anchorTop = 1) miscgrid = Grid(1, 2) @@ -763,7 +771,7 @@ class PartitionWindow: request.mountpoint = None raidmembers = [] - for drive in drivelist.getSelection(): + for drive in self.drivelist.getSelection(): id = self.partitions.getRequestByDeviceName(drive).uniqueID raidmembers.append(id) request.raidmembers = raidmembers @@ -801,8 +809,8 @@ class PartitionWindow: break # clean up + self.shutdownUI() self.screen.popWindow() -# self.refresh() def newCb(self): request = PartitionSpec(fileSystemTypeGetDefault(), REQUEST_NEW, 1) @@ -839,6 +847,9 @@ class PartitionWindow: self.partitions.setFromDisk(self.diskset) self.populate() + def shutdownMainUI(self): + self.lb.clear() + def __call__(self, screen, fsset, diskset, partitions, intf): self.screen = screen @@ -881,6 +892,9 @@ class PartitionWindow: elif res == "reset" or rc == "F5": self.resetCb() elif res == TEXT_BACK_CHECK: + # remove refs to parted objects + self.shutdownMainUI() + screen.popHelpLine() screen.popWindow() return INSTALL_BACK @@ -890,6 +904,9 @@ class PartitionWindow: _("Must have a / partition to install on.")) continue + # remove refs to parted objects + self.shutdownMainUI() + screen.popHelpLine() screen.popWindow() return INSTALL_OK @@ -902,6 +919,12 @@ class AutoPartitionWindow: if typebox.current() == CLEARPART_TYPE_NONE: flag = FLAGS_SET # XXX need a way to disable the checkbox tree + + def shutdownUI(self): + # XXX remove parted object refs + # need to put in clear() method for checkboxtree in snack + self.drivelist.key2item = {} + self.drivelist.item2key = {} def __call__(self, screen, diskset, partitions, intf, dispatch): if not partitions.useAutopartitioning: @@ -954,17 +977,22 @@ class AutoPartitionWindow: bb = ButtonBar(screen, [ TEXT_OK_BUTTON, TEXT_BACK_BUTTON ]) self.g.add(bb, 0, 4, (0,1,0,0)) + self.drivelist = drivelist while 1: rc = self.g.run() res = bb.buttonPressed(rc) if res == TEXT_BACK_CHECK: screen.popWindow() + self.shutdownUI() + return INSTALL_BACK partitions.autoClearPartType = typebox.current() - partitions.autoClearPartDrives = drivelist.getSelection() + partitions.autoClearPartDrives = self.drivelist.getSelection() if queryAutoPartitionOK(intf, diskset, partitions): + self.shutdownUI() + screen.popWindow() return INSTALL_OK |