2
0
Fork 0

Always use text as item if no item was specified

When an option is passed without an item attached we now always use the
label as item. This was the behaviour for __init__() and is now also the
behaviour of add_option().
cursorless
Sebastian Lohff 4 anos atrás
commit 22307bc4ae

@ -70,6 +70,10 @@ class CliMenuTheme:
BOLD_HIGHLIGHT = CliMenuStyle(header_style='bold', highlight_style='bold fg:black bg:white')
class _EmptyParameter:
pass
class CliMenu:
default_style = CliMenuTheme.BASIC
default_cursor = CliMenuCursor.TRIANGLE
@ -110,7 +114,7 @@ class CliMenu:
elif isinstance(option, dict):
self.add_option(**option)
elif isinstance(option, str):
self.add_option(option, option)
self.add_option(option)
else:
raise ValueError("Option needs to be either tuple, dict or string, found '{}' of type {}"
.format(option, type(option)))
@ -122,7 +126,9 @@ class CliMenu:
for text in title.split('\n'):
self._items.append(_CliMenuHeader(text, indent=indent))
def add_option(self, text, item=None):
def add_option(self, text, item=_EmptyParameter):
if item == _EmptyParameter:
item = text
self._items.append(_CliMenuOption(text, self._item_num, item=item))
self._item_num += 1
@ -334,7 +340,7 @@ class CliMultiMenu(CliMenu):
self._selection_icons = selection_icons if selection_icons is not None else self.default_selection_icons
super().__init__(*args, **kwargs)
def add_option(self, text, item=None, selected=False):
def add_option(self, text, item=_EmptyParameter, selected=False):
super().add_option(text, item)
if selected:
self._multi_selected.append(len(self._items) - 1)

Carregando…
Cancelar
Salvar