summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Fulbright <msf@redhat.com>2001-07-11 20:31:00 +0000
committerMike Fulbright <msf@redhat.com>2001-07-11 20:31:00 +0000
commit197b5566ddbeeb590fb4e6ba87b8af4e3f68afb2 (patch)
tree88b9e31d71e8a3ae860d77e0e9a8a3185e7e5347
parent76e59402a8d4bf4852cb9c5bd66146b442208550 (diff)
downloadanaconda-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.py44
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