summaryrefslogtreecommitdiff
path: root/asciifarm/client/listselector.py
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2019-09-18 00:32:35 +0200
committertroido <troido@protonmail.com>2019-09-18 00:32:35 +0200
commit64a5b6d7c732ed108e5705cbbb41b0addd18b510 (patch)
tree8f10440be617497acceb73c9cb919804547c79c8 /asciifarm/client/listselector.py
parenta0e86c082e8565a48ef14319ee3197abb71e533f (diff)
switched curses to ratuil
Diffstat (limited to 'asciifarm/client/listselector.py')
-rw-r--r--asciifarm/client/listselector.py49
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
+