diff options
| author | troido <troido@protonmail.com> | 2019-09-18 00:32:35 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2019-09-18 00:32:35 +0200 |
| commit | 64a5b6d7c732ed108e5705cbbb41b0addd18b510 (patch) | |
| tree | 8f10440be617497acceb73c9cb919804547c79c8 /asciifarm/client/listselector.py | |
| parent | a0e86c082e8565a48ef14319ee3197abb71e533f (diff) | |
switched curses to ratuil
Diffstat (limited to 'asciifarm/client/listselector.py')
| -rw-r--r-- | asciifarm/client/listselector.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/asciifarm/client/listselector.py b/asciifarm/client/listselector.py new file mode 100644 index 0000000..b88b967 --- /dev/null +++ b/asciifarm/client/listselector.py @@ -0,0 +1,49 @@ + +from asciifarm.common import utils + + +class ListSelector: + + def __init__(self, widget): + self.widget = widget + self.items = [] + self.selector = 0 + + def getSelected(self): + return self.selector + + def select(self, value, relative=False, modular=False): + invLen = len(self.items) + if relative: + value += self.selector + if modular and invLen: + value %= invLen + if value < 0: + value = 0 + if value >= invLen: + value = invLen-1 + if value in range(invLen): + self.doSelect(value) + + def doSelect(self, value): + self.selector = value + self.widget.select(value) + + def setItems(self, items): + self.items = items + self.selector = utils.clamp(self.selector, 0, len(items)-1) + self.widget.set_items([self.itemName(item) for item in self.items]) + self.widget.select(self.selector) + + def getItem(self, num): + return self.items[num] + + def getSelectedItem(self): + return self.getItem(self.getSelected()) + + def getNumItems(self): + return len(self.items) + + def itemName(self, item): + return item + |
