summaryrefslogtreecommitdiffstats
path: root/iw/driveorderwidget.py
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2002-06-20 07:42:20 +0000
committerJeremy Katz <katzj@redhat.com>2002-06-20 07:42:20 +0000
commitddcbf07b9bc9301c999100f59b291ef8330b277d (patch)
treef741b0ca5e395ad2c6c74b89241b5539d71521b7 /iw/driveorderwidget.py
parentdee4f9a817c3375f4865d540a36846147903db57 (diff)
downloadanaconda-ddcbf07b9bc9301c999100f59b291ef8330b277d.tar.gz
anaconda-ddcbf07b9bc9301c999100f59b291ef8330b277d.tar.xz
anaconda-ddcbf07b9bc9301c999100f59b291ef8330b277d.zip
rework bootloader screens into something that makes more sense. move a lot
of the pieces out into their own objects so that if we want to move them around a little more, it's relatively painless
Diffstat (limited to 'iw/driveorderwidget.py')
-rw-r--r--iw/driveorderwidget.py129
1 files changed, 129 insertions, 0 deletions
diff --git a/iw/driveorderwidget.py b/iw/driveorderwidget.py
new file mode 100644
index 000000000..9d6c6698c
--- /dev/null
+++ b/iw/driveorderwidget.py
@@ -0,0 +1,129 @@
+#
+# driveorderwidget.py: widget for reordering drives into BIOS order
+#
+# Jeremy Katz <katzj@redhat.com>
+#
+# Copyright 2001-2002 Red Hat, Inc.
+#
+# This software may be freely redistributed under the terms of the GNU
+# library public license.
+#
+# You should have received a copy of the GNU Library Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+import gtk
+import gobject
+import iutil
+import partedUtils
+import gui
+from rhpl.translate import _, N_
+
+
+class DriveOrderWidget:
+ """Widget to reorder drives according to BIOS drive order."""
+
+
+ def __init__(self, driveorder, diskset):
+ self.driveOrder = driveorder
+ self.diskset = diskset
+
+ hbox = gtk.HBox(gtk.FALSE, 5)
+
+ # different widget for this maybe?
+ self.driveOrderStore = gtk.ListStore(gobject.TYPE_STRING,
+ gobject.TYPE_STRING,
+ gobject.TYPE_STRING)
+ sw = gtk.ScrolledWindow()
+ sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
+ sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+
+ self.driveOrderView = gtk.TreeView(self.driveOrderStore)
+ i = 0
+ for columnName in [ N_("Drive"), N_("Size"), N_("Model") ]:
+ renderer = gtk.CellRendererText()
+ column = gtk.TreeViewColumn(columnName, renderer, text = i)
+ i = i + 1
+ column.set_clickable(gtk.FALSE)
+ self.driveOrderView.append_column(column)
+
+
+ self.driveOrderView.set_rules_hint(gtk.FALSE)
+ self.driveOrderView.set_headers_visible(gtk.FALSE)
+ self.driveOrderView.set_enable_search(gtk.FALSE)
+
+ self.makeDriveOrderStore()
+
+ sw.add(self.driveOrderView)
+ self.driveOrderView.set_size_request(375, 80)
+ hbox.pack_start(sw, gtk.FALSE)
+
+ arrowbox = gtk.VBox(gtk.FALSE, 5)
+ arrowButton = gtk.Button()
+ arrow = gtk.Arrow(gtk.ARROW_UP, gtk.SHADOW_ETCHED_IN)
+ arrowButton.add(arrow)
+ arrowButton.connect("clicked", self.arrowClicked, gtk.ARROW_UP)
+ arrowbox.pack_start(arrowButton, gtk.FALSE)
+
+ spacer = gtk.Label("")
+ spacer.set_size_request(10, 1)
+ arrowbox.pack_start(spacer, gtk.FALSE)
+
+ arrowButton = gtk.Button()
+ arrow = gtk.Arrow(gtk.ARROW_DOWN, gtk.SHADOW_ETCHED_IN)
+ arrowButton.add(arrow)
+ arrowButton.connect("clicked", self.arrowClicked, gtk.ARROW_DOWN)
+ arrowbox.pack_start(arrowButton, gtk.FALSE)
+
+ alignment = gtk.Alignment()
+ alignment.set(0, 0.5, 0, 0)
+ alignment.add(arrowbox)
+ hbox.pack_start(alignment, gtk.FALSE)
+
+ self.widget = hbox
+
+
+ def getWidget(self):
+ return self.widget
+
+
+ def getOrder(self):
+ return self.driveOrder
+
+
+ def arrowClicked(self, widget, direction, *args):
+ selection = self.driveOrderView.get_selection()
+ (model, iter) = selection.get_selected()
+ if not iter:
+ return
+
+ # there has got to be a better way to do this =\
+ drive = model.get_value(iter, 0)[5:]
+ index = self.driveOrder.index(drive)
+ if direction == gtk.ARROW_DOWN:
+ self.driveOrder.remove(drive)
+ self.driveOrder.insert(index + 1, drive)
+ elif direction == gtk.ARROW_UP:
+ self.driveOrder.remove(drive)
+ self.driveOrder.insert(index - 1, drive)
+ self.makeDriveOrderStore()
+
+ # make the store for the drive order
+ def makeDriveOrderStore(self):
+ disks = self.diskset.disks
+
+ self.driveOrderStore.clear()
+ iter = self.driveOrderStore.append()
+ for drive in self.driveOrder:
+ self.driveOrderStore.set_value(iter, 0, "/dev/%s" % (drive,))
+ # if we have it in the diskset, get the size and type of drive
+ if disks.has_key(drive):
+ size = partedUtils.getDeviceSizeMB(disks[drive].dev)
+ sizestr = "%8.0f MB" %(size,)
+
+ self.driveOrderStore.set_value(iter, 1, sizestr)
+ self.driveOrderStore.set_value(iter, 2, disks[drive].dev.model)
+
+
+ iter = self.driveOrderStore.append()