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

[Xen-changelog] [xen-unstable] Fix pygrub handling of many kernels



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1198760192 0
# Node ID 50bd5d2c15cf1ee8f62962fd7a8bbe0fe4ba9fd3
# Parent  9bf8b152df9fb6b5fa6400927b0e0ad2e4813ea9
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@xxxxxxxxxx>
---
 tools/pygrub/src/pygrub |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff -r 9bf8b152df9f -r 50bd5d2c15cf tools/pygrub/src/pygrub
--- a/tools/pygrub/src/pygrub   Thu Dec 27 12:53:57 2007 +0000
+++ b/tools/pygrub/src/pygrub   Thu Dec 27 12:56:32 2007 +0000
@@ -27,7 +27,7 @@ import grub.GrubConf
 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: 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.