diff options
Diffstat (limited to 'asciifarm/client/display/inventorypad.py')
| -rw-r--r-- | asciifarm/client/display/inventorypad.py | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/asciifarm/client/display/inventorypad.py b/asciifarm/client/display/inventorypad.py index 0ee9ca0..595313c 100644 --- a/asciifarm/client/display/inventorypad.py +++ b/asciifarm/client/display/inventorypad.py @@ -29,10 +29,27 @@ class InventoryPad: def update(self): win = self.widget.getWin() height, width = win.getmaxyx() + height -= 1 + selected = self.selector.getValue() + start = min(selected - height//2, len(self.items)-height) + start = max(start, 0) + end = start + height win.erase() win.addstr(0,0, (self.title + ":")[:width]) - for i, item in enumerate(self.items[:height-1]): - if i == self.selector.getValue(): + for i, item in enumerate(self.items[start:end]): + if i + start == selected: win.addstr(i+1, 0, '*') win.addstr(i+1, 1, item) + if end < len(self.items): + try: + win.addstr(height, width-1, "+") + except curses.error: + # ncurses has a weird problem: + # it always raises an error when drawing to the last character in the window + # it draws first and then raises the error + # therefore to draw in the last place of the window the last character needs to be ingored + # other solutions might be possible, but are more hacky + pass + if start > 0: + win.addstr(1, width-1, "-") win.noutrefresh() |
