Re: [PATCH 16/30] Display bar view for the selected device only.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Looks fine.

On Wed, 16 Sep 2009, Joel Granados Moreno wrote:

* iw/partition_gui.py (__init__): Add variable to track the displayed
storage element.
(getDisplayed, setDisplayed): New functions that manage the
varialbe holding the current displayed storage element.
(display): New function that handles the display of a disk.
(populate): Show only one disk in the bar view.
(treeSelectCB): When the user clicks on one of the disks or the
partitions, modify the bar view if needed.
(getScreen): A vertical Pane is not needed anymore.
---
iw/partition_gui.py |   75 ++++++++++++++++++++++++++++++---------------------
1 files changed, 44 insertions(+), 31 deletions(-)

diff --git a/iw/partition_gui.py b/iw/partition_gui.py
index 55bb008..1d70ba5 100644
--- a/iw/partition_gui.py
+++ b/iw/partition_gui.py
@@ -249,10 +249,34 @@ class DiskStripeGraph:
        self.tree = tree
        self.editCB = editCB
        self.next_ypos = 0.0
+        self.currentShown = None

    def __del__(self):
        self.shutDown()
-
+
+    def getDisplayed(self):
+        return self.currentShown
+
+    def setDisplayed(self, disk):
+        self.shutDown()
+        self.display(disk)
+        self.currentShown = disk
+
+    def display(self, disk):
+        stripe = self.add(disk.name, disk.format.partedDisk)
+        part = disk.format.firstPartition
+        while part:
+            if part.type & parted.PARTITION_METADATA \
+                    or part.getSize(unit="MB") <= 1.0:
+                part = part.nextPartition()
+                continue
+
+            stripe.add(part)
+            part = part.nextPartition()
+
+        # Trying to center the picture.
+        apply(self.canvas.set_scroll_region, self.canvas.root().get_bounds())
+
    def shutDown(self):
        # remove any circular references so we can clean up
        while self.diskStripes:
@@ -677,7 +701,7 @@ class PartitionWindow(InstallWindow):
		    iter = self.tree.append(vgparent)
		    self.tree[iter]['Device'] = lv.lvname
		    if format.mountable and format.mountpoint:
-			self.tree[iter]['Mount Point'] = format.mountpoint
+                            self.tree[iter]['Mount Point'] = format.mountpoint
		    else:
			self.tree[iter]['Mount Point'] = ""
		    self.tree[iter]['Size (MB)'] = "%Ld" % lv.size
@@ -768,8 +792,8 @@ class PartitionWindow(InstallWindow):
	drvparent = self.tree.append(None)
	self.tree[drvparent]['Device'] = _("Hard Drives")
        for disk in disks:
-            # add a disk stripe to the graph
-            stripe = self.diskStripeGraph.add(disk.name, disk.format.partedDisk)
+            if not self.diskStripeGraph.getDisplayed():
+                self.diskStripeGraph.setDisplayed(disk)

            # add a parent node to the tree
            parent = self.tree.append(drvparent)
@@ -795,13 +819,6 @@ class PartitionWindow(InstallWindow):
                        part = part.nextPartition()
                        continue

-                # If this is a freespace "partition", there's no device so
-                # don't add it.
-                if device:
-                    stripe.add(device)
-                else:
-                    stripe.add(part)
-
                if device and device.isExtended:
                    if extendedParent:
                        raise RuntimeError, ("can't handle more than "
@@ -920,8 +937,6 @@ class PartitionWindow(InstallWindow):

                part = part.nextPartition()

-        canvas = self.diskStripeGraph.getCanvas()
-        apply(canvas.set_scroll_region, canvas.root().get_bounds())
        self.treeView.expand_all()

    def treeActivateCB(self, view, path, col):
@@ -933,13 +948,22 @@ class PartitionWindow(InstallWindow):
        model, iter = selection.get_selected()
        if not iter:
            return
+
        device = model[iter]['PyObject']
-        if device:
-            if not isinstance(device, PartitionDevice):
-                return
+        if not device:
+            return

+        # See if we need to change what is in the canvas.
+        displayed = self.diskStripeGraph.getDisplayed()
+        if isinstance(device, storage.DiskDevice) and device != displayed:
+            self.diskStripeGraph.setDisplayed(device)
+
+        elif isinstance(device, storage.PartitionDevice) \
+                and device.parents[0] != displayed:
+            self.diskStripeGraph.setDisplayed(device.parents[0])
            self.diskStripeGraph.selectSlice(device)

+
    def deleteCB(self, widget):
        """ Right now we can say that if the device is partitioned we
            want to delete all of the devices it contains. At some point
@@ -1436,7 +1460,7 @@ class PartitionWindow(InstallWindow):
        actionbox.pack_start(buttonBox)
        actionbox.set_spacing(10)

-        # Create the disk tree
+        # Create the disk tree (Fills the tree and the Bar View)
        self.tree = DiskTreeModel()
        self.treeView = self.tree.getTreeView()
        self.treeView.connect('row-activated', self.treeActivateCB)
@@ -1446,6 +1470,7 @@ class PartitionWindow(InstallWindow):
        self.populate(initial = 1)

        # Create the top scroll window
+        # We don't actually need a *scroll* window but nuthing else worked.
        hadj = gtk.Adjustment(step_incr = 5.0)
        vadj = gtk.Adjustment(step_incr = 5.0)
        swt = gtk.ScrolledWindow(hadjustment = hadj, vadjustment = vadj)
@@ -1453,10 +1478,6 @@ class PartitionWindow(InstallWindow):
        swt.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        swt.set_shadow_type(gtk.SHADOW_IN)

-        # Add the top scroll window to a frame
-        tframe = gtk.Frame()
-        tframe.add(swt)
-
        # Create the bottom scroll window
        swb = gtk.ScrolledWindow()
        swb.add(self.treeView)
@@ -1465,17 +1486,9 @@ class PartitionWindow(InstallWindow):

        # Create main vertical box and add everything.
        MVbox = gtk.VBox(False, 5)
-        MVbox.pack_start(swt, True)
+        MVbox.pack_start(swt, False, False)
        MVbox.pack_start(swb, True)
        MVbox.pack_start(actionbox, False, False)
        MVbox.pack_start(gtk.HSeparator(), False)

-        # Create Vpaned and add the top frame and main vertical box.
-        vpaned = gtk.VPaned()
-        vpaned.add1(tframe)
-        vpaned.add2(MVbox)
-
-        # XXX should probably be set according to height
-        vpaned.set_position(175)
-
-        return vpaned
+        return MVbox


- -- David Cantrell <dcantrell@xxxxxxxxxx>
Red Hat / Honolulu, HI

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAkq9UtYACgkQ5hsjjIy1Vkl1vACcCWsbqpwpVsTujFFYMBCbfPRY
4b4AnjlRJv9+lh2TXHssezJFUB9GA+6j
=8+YH
-----END PGP SIGNATURE-----

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux