Allow passing an item to each option

This commit is contained in:
Sebastian Lohff 2019-02-01 18:17:19 +01:00
parent 6655fd097a
commit b18372e3b8
1 changed files with 13 additions and 4 deletions

View File

@ -19,9 +19,10 @@ class CliMenuHeader:
class CliMenuOption: class CliMenuOption:
"""Hold a menu option""" """Hold a menu option"""
def __init__(self, text, num): def __init__(self, text, num, item=None):
self.text = text self.text = text
self.num = num self.num = num
self.item = item
self.focusable = True self.focusable = True
@ -100,15 +101,23 @@ class CliMenu:
for text in title.split('\n'): for text in title.split('\n'):
self._items.append(CliMenuHeader(text)) self._items.append(CliMenuHeader(text))
def add_option(self, text): def add_option(self, text, item=None):
self._items.append(CliMenuOption(text, self._item_num)) self._items.append(CliMenuOption(text, self._item_num, item=item))
self._item_num += 1 self._item_num += 1
def get_selection(self): def get_selection(self):
if not self._ran: if not self._ran:
self._run() self._run()
return self._items[self._pos].num item = self._items[self._pos]
return (item.num, item.item)
def get_selection_num(self):
return self.get_selection()[0]
def get_selection_item(self):
return self.get_selection()[1]
def cursor(self): def cursor(self):
return '{} '.format(self._cursor) return '{} '.format(self._cursor)