# HG changeset patch # User Ian Campbell # Date 1258917181 0 # Node ID 69d318d58ed3e4266bfb76f514d90b69270aed9a # Parent d641f06a4889748dc7efec62398b5d333ad0df87 pygrub: track the title of an item as an independant field separate to the other fields. This makes the list of lines within a GrubImage 0 based rather than 1 based therefore adjust the user interface parts to suit. This is in preparation for grub2 support where the syntax for the item title does not fit the existing usage. Signed-off-by: Ian Campbell diff -r d641f06a4889 -r 69d318d58ed3 tools/pygrub/src/GrubConf.py --- a/tools/pygrub/src/GrubConf.py Sun Nov 22 19:13:01 2009 +0000 +++ b/tools/pygrub/src/GrubConf.py Sun Nov 22 19:13:01 2009 +0000 @@ -79,8 +79,9 @@ part = property(get_part, set_part) class _GrubImage(object): - def __init__(self, lines): + def __init__(self, title, lines): self.reset(lines) + self.title = title.strip() def __repr__(self): return ("title: %s\n" @@ -94,7 +95,6 @@ def reset(self, lines): self._root = self._initrd = self._kernel = self._args = None - self.title = "" self.lines = [] self._parse(lines) @@ -126,8 +126,8 @@ initrd = property(get_initrd, set_initrd) class GrubImage(_GrubImage): - def __init__(self, lines): - _GrubImage.__init__(self, lines) + def __init__(self, title, lines): + _GrubImage.__init__(self, title, lines) def set_from_line(self, line, replace = None): (com, arg) = grub_exact_split(line, 2) @@ -148,8 +148,7 @@ self.lines.insert(replace, line) # set up command handlers - commands = { "title": "title", - "root": "root", + commands = { "root": "root", "rootnoverify": "root", "kernel": "kernel", "initrd": "initrd", @@ -262,7 +261,8 @@ else: lines = buf.split("\n") - img = [] + img = None + title = "" for l in lines: l = l.strip() # skip blank lines @@ -273,12 +273,13 @@ continue # new image if l.startswith("title"): - if len(img) > 0: - self.add_image(GrubImage(img)) - img = [l] + if img is not None: + self.add_image(GrubImage(title, img)) + img = [] + title = l[6:] continue - if len(img) > 0: + if img is not None: img.append(l) continue @@ -291,8 +292,8 @@ else: logging.warning("Unknown directive %s" %(com,)) - if len(img) > 0: - self.add_image(GrubImage(img)) + if img: + self.add_image(GrubImage(title, img)) if self.hasPassword(): self.setPasswordAccess(False) diff -r d641f06a4889 -r 69d318d58ed3 tools/pygrub/src/pygrub --- a/tools/pygrub/src/pygrub Sun Nov 22 19:13:01 2009 +0000 +++ b/tools/pygrub/src/pygrub Sun Nov 22 19:13:01 2009 +0000 @@ -259,13 +259,13 @@ self.text_win.move(y - 1, x - 1) self.text_win.noutrefresh() - curline = 1 + curline = 0 img = copy.deepcopy(origimg) while 1: draw() self.entry_win.erase() self.entry_win.box() - for idx in range(1, len(img.lines)): + for idx in range(0, len(img.lines)): # current line should be highlighted if idx == curline: self.entry_win.attron(curses.A_REVERSE) @@ -275,7 +275,7 @@ if len(l) > 70: l = l[:69] + ">" - self.entry_win.addstr(idx, 2, l) + self.entry_win.addstr(idx + 1, 2, l) if idx == curline: self.entry_win.attroff(curses.A_REVERSE) self.entry_win.noutrefresh() @@ -308,8 +308,8 @@ return # bound at the top and bottom - if curline < 1: - curline = 1 + if curline < 0: + curline = 0 elif curline >= len(img.lines): curline = len(img.lines) - 1