aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2007-12-27 12:56:32 +0000
committerKeir Fraser <keir.fraser@citrix.com>2007-12-27 12:56:32 +0000
commitdc5719607e68ff5519b76362ac265cf9df225cfd (patch)
treec80bf974168b279cdc3eb9d87f1a8a8f950e3a21
parentfa56aa1711ef1a57d66cf99b599129459a808ef5 (diff)
downloadxen-dc5719607e68ff5519b76362ac265cf9df225cfd.tar.gz
xen-dc5719607e68ff5519b76362ac265cf9df225cfd.tar.bz2
xen-dc5719607e68ff5519b76362ac265cf9df225cfd.zip
Fix pygrub handling of many kernels
If there are a large number of kernel images configured in grub.conf there will be too many to fit in the limited size pygrub display. This patch fixes this so that the list of kernels scrolls as needed. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
-rw-r--r--tools/pygrub/src/pygrub16
1 files changed, 12 insertions, 4 deletions
diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index 22b2707c5c..51a4220647 100644
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -27,7 +27,7 @@ import fsimage
import grub.GrubConf
import grub.LiloConf
-PYGRUB_VER = 0.5
+PYGRUB_VER = 0.6
def enable_cursor(ison):
if ison:
@@ -228,15 +228,22 @@ class Grub:
def fill_entry_list(self):
self.entry_win.clear()
self.entry_win.box()
- for y in range(0, len(self.cf.images)):
+
+ maxy = self.entry_win.getmaxyx()[0]-3 # maxy - 2 for the frame + index
+ if self.selected_image > self.start_image + maxy:
+ self.start_image = self.selected_image
+ if self.selected_image < self.start_image:
+ self.start_image = self.selected_image
+
+ for y in range(self.start_image, len(self.cf.images)):
i = self.cf.images[y]
- if (0, y) > self.entry_win.getmaxyx():
+ if y > self.start_image + maxy:
break
if y == self.selected_image:
attr = curses.A_REVERSE
else:
attr = 0
- self.entry_win.addstr(y + 1, 2, i.title.ljust(70), attr)
+ self.entry_win.addstr(y + 1 - self.start_image, 2, i.title.ljust(70), attr)
self.entry_win.refresh()
def edit_entry(self, origimg):
@@ -416,6 +423,7 @@ class Grub:
# now loop until we hit the timeout or get a go from the user
mytime = 0
+ self.start_image = 0
while (timeout == -1 or mytime < int(timeout)):
draw()
if timeout != -1 and mytime != -1: