-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Comments below.
On Wed, 16 Sep 2009, Joel Granados Moreno wrote:
* iw/partition_gui.py (treeSelectCB): Make sure that the graph is being
painted by the right StripeGraph class. We decide which graph to use
based on the device we receive.
(resetCB, refresh, viewButtonCB, getScreen, populate): Change the custom
screen graph name from diskStripeGraph to stripeGraph.
---
iw/partition_gui.py | 87 ++++++++++++++++++++++++++++++++++----------------
1 files changed, 59 insertions(+), 28 deletions(-)
diff --git a/iw/partition_gui.py b/iw/partition_gui.py
index ab6bd43..94e1631 100644
--- a/iw/partition_gui.py
+++ b/iw/partition_gui.py
@@ -797,14 +797,13 @@ class PartitionWindow(InstallWindow):
if rc != 1:
raise gui.StayOnScreen
-
- self.diskStripeGraph.shutDown()
+ self.stripeGraph.shutDown()
self.tree.clear()
del self.parent
return None
def getPrev(self):
- self.diskStripeGraph.shutDown()
+ self.stripeGraph.shutDown()
self.storage.clearPartType = None
self.storage.reset()
self.tree.clear()
@@ -937,9 +936,6 @@ class PartitionWindow(InstallWindow):
drvparent = self.tree.append(None)
self.tree[drvparent]['Device'] = _("Hard Drives")
for disk in disks:
- if not self.diskStripeGraph.getDisplayed():
- self.diskStripeGraph.setDisplayed(disk)
-
# add a parent node to the tree
parent = self.tree.append(drvparent)
@@ -1104,22 +1100,58 @@ class PartitionWindow(InstallWindow):
return
device = model[iter]['PyObject']
- if not device:
- return
- # See if we need to change what is in the canvas.
- if isinstance(device, storage.DiskDevice):
- self.diskStripeGraph.setDisplayed(device)
-
- elif isinstance(device, storage.PartitionDevice):
- self.diskStripeGraph.setDisplayed(device.parents[0])
- self.diskStripeGraph.selectSliceFromObj(device)
-
- elif device == None: # User clicks on a "Free" row.
+ # See if we need to change what is in the canvas. In all possibilities
+ # we must make sure we have the correct StripeGraph class.
+ if not device:
iparent = model.iter_parent(iter)
+ if not iparent:
+ # This is a root row.
+ return
+
+ # This is free space. Only Disks have "Free" space.
parent = self.tree[iparent]["PyObject"]
if isinstance(parent, storage.DiskDevice):
- self.diskStripeGraph.setDisplayed(parent)
+ if not isinstance(self.stripeGraph, DiskStripeGraph):
+ self.stripeGraph.shutDown()
+ self.stripeGraph = DiskStripeGraph(self.tree, self.editCB, self.storage, parent)
+ self.stripeGraph.setDisplayed(parent)
+
+ elif isinstance(device, storage.DiskDevice):
+ if not isinstance(self.stripeGraph, DiskStripeGraph):
+ self.stripeGraph.shutDown()
+ self.stripeGraph = DiskStripeGraph(self.tree, self.editCB, self.storage, device)
+ self.stripeGraph.setDisplayed(device)
+
+ elif isinstance(device, storage.PartitionDevice):
+ if not isinstance(self.stripeGraph, DiskStripeGraph):
+ self.stripeGraph.shutDown()
+ self.stripeGraph = DiskStripeGraph(self.tree, self.editCB, self.storage, device.parents[0])
+ self.stripeGraph.setDisplayed(device.parents[0])
+ self.stripeGraph.selectSliceFromObj(device)
+
+ elif isinstance(device, storage.LVMVolumeGroupDevice):
+ if not isinstance(self.stripeGraph, LVMStripeGraph):
+ self.stripeGraph.shutDown()
+ self.stripeGraph = LVMStripeGraph(self.tree, self.editCB, self.storage, device)
+ self.stripeGraph.setDisplayed(device)
+
+ elif isinstance(device, storage.LVMLogicalVolumeDevice):
+ if not isinstance(self.stripeGraph, LVMStripeGraph):
+ self.stripeGraph.shutDown()
+ self.stripeGraph = LVMStripeGraph(self.tree, self.editCB, self.storage, device.vg)
+ self.stripeGraph.setDisplayed(device.vg)
+ self.stripeGraph.selectSliceFromObj(device)
+
+ elif isinstance(device, storage.MDRaidArrayDevice):
+ if not isinstance(self.stripeGraph, MDRaidArrayStripeGraph):
+ self.stripeGraph.shutDown()
+ self.stripeGraph = MDRaidArrayStripeGraph(self.tree, self.editCB, self.storage, device)
+ self.stripeGraph.setDisplayed(device)
Is there a way to accomplish this stuff without using isinstance()?
+
+ else:
+ # Don't really want to do anything in this case.
+ return
def deleteCB(self, widget):
""" Right now we can say that if the device is partitioned we
@@ -1367,15 +1399,15 @@ class PartitionWindow(InstallWindow):
def resetCB(self, *args):
if not confirmResetPartitionState(self.intf):
return
-
- self.diskStripeGraph.shutDown()
+
+ self.stripeGraph.shutDown()
self.storage.reset()
self.tree.clear()
self.populate()
def refresh(self, justRedraw=None):
log.debug("refresh: justRedraw=%s" % justRedraw)
- self.diskStripeGraph.shutDown()
+ self.stripeGraph.shutDown()
self.tree.clear()
if justRedraw:
@@ -1575,10 +1607,10 @@ class PartitionWindow(InstallWindow):
vgeditor.destroy()
def viewButtonCB(self, widget):
- self.show_uneditable = not widget.get_active()
- self.diskStripeGraph.shutDown()
- self.tree.clear()
- self.populate()
+ self.show_uneditable = not widget.get_active()
+ self.stripeGraph.shutDown()
+ self.tree.clear()
+ self.populate()
def getScreen(self, anaconda):
self.anaconda = anaconda
@@ -1623,8 +1655,7 @@ class PartitionWindow(InstallWindow):
self.treeView.connect('row-activated', self.treeActivateCB)
self.treeViewSelection = self.treeView.get_selection()
self.treeViewSelection.connect("changed", self.treeSelectCB)
- self.diskStripeGraph = DiskStripeGraph(self.tree, self.editCB,
- storage = self.storage)
+ self.stripeGraph = StripeGraph(self.tree, self.editCB)
self.populate(initial = 1)
# Create the top scroll window
@@ -1632,7 +1663,7 @@ class PartitionWindow(InstallWindow):
hadj = gtk.Adjustment(step_incr = 5.0)
vadj = gtk.Adjustment(step_incr = 5.0)
swt = gtk.ScrolledWindow(hadjustment = hadj, vadjustment = vadj)
- swt.add(self.diskStripeGraph.getCanvas())
+ swt.add(self.stripeGraph.getCanvas())
swt.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
swt.set_shadow_type(gtk.SHADOW_IN)
The rest looks fine.
- --
David Cantrell <dcantrell@xxxxxxxxxx>
Red Hat / Honolulu, HI
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkq9WF4ACgkQ5hsjjIy1VkmurwCglDcx+3pqOH4HuXxU3HnZaqEL
cs8AoMzwwXq/4AYHHfjFsE59k/GuwXPs
=UvnX
-----END PGP SIGNATURE-----
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list