|
|
|
@ -19,9 +19,10 @@ class CliMenuHeader:
|
|
|
|
|
|
|
|
|
|
class CliMenuOption:
|
|
|
|
|
"""Hold a menu option"""
|
|
|
|
|
def __init__(self, text, num):
|
|
|
|
|
def __init__(self, text, num, item=None):
|
|
|
|
|
self.text = text
|
|
|
|
|
self.num = num
|
|
|
|
|
self.item = item
|
|
|
|
|
self.focusable = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -100,15 +101,23 @@ class CliMenu:
|
|
|
|
|
for text in title.split('\n'):
|
|
|
|
|
self._items.append(CliMenuHeader(text))
|
|
|
|
|
|
|
|
|
|
def add_option(self, text):
|
|
|
|
|
self._items.append(CliMenuOption(text, self._item_num))
|
|
|
|
|
def add_option(self, text, item=None):
|
|
|
|
|
self._items.append(CliMenuOption(text, self._item_num, item=item))
|
|
|
|
|
self._item_num += 1
|
|
|
|
|
|
|
|
|
|
def get_selection(self):
|
|
|
|
|
if not self._ran:
|
|
|
|
|
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):
|
|
|
|
|
return '{} '.format(self._cursor)
|
|
|
|
|