summaryrefslogtreecommitdiff
path: root/asciifarmclient/listselector.py
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-03-06 11:26:59 +0100
committertroido <troido@protonmail.com>2020-03-06 11:26:59 +0100
commitdd07ff4d686f07cdc9736627dd0ef099ef5e4e4f (patch)
treef43310b3779a95efd74a40ba8139cf146ad49051 /asciifarmclient/listselector.py
parentc9366616079240cd7ee3d243c9f6897d40b4267d (diff)
new directory structure for the separate client repo
Diffstat (limited to 'asciifarmclient/listselector.py')
-rw-r--r--asciifarmclient/listselector.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/asciifarmclient/listselector.py b/asciifarmclient/listselector.py
new file mode 100644
index 0000000..65e6e8c
--- /dev/null
+++ b/asciifarmclient/listselector.py
@@ -0,0 +1,49 @@
+
+from asciifarmclient.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
+