diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2007-12-27 12:56:32 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2007-12-27 12:56:32 +0000 |
commit | dc5719607e68ff5519b76362ac265cf9df225cfd (patch) | |
tree | c80bf974168b279cdc3eb9d87f1a8a8f950e3a21 | |
parent | fa56aa1711ef1a57d66cf99b599129459a808ef5 (diff) | |
download | xen-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/pygrub | 16 |
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: |