Added support for hidden menu entries
This commit is contained in:
parent
f1a1a158ba
commit
9da19f3702
1 changed files with 19 additions and 1 deletions
|
|
@ -84,18 +84,24 @@ class Menu():
|
||||||
# Sets & toggles
|
# Sets & toggles
|
||||||
for section in (self.sets, self.toggles):
|
for section in (self.sets, self.toggles):
|
||||||
for details in section.values():
|
for details in section.values():
|
||||||
|
if details.get('Hidden', False):
|
||||||
|
continue
|
||||||
menu_lines.append(details['Display Name'])
|
menu_lines.append(details['Display Name'])
|
||||||
if self.sets or self.toggles:
|
if self.sets or self.toggles:
|
||||||
menu_lines.append(separator_string)
|
menu_lines.append(separator_string)
|
||||||
|
|
||||||
# Options
|
# Options
|
||||||
for details in self.options.values():
|
for details in self.options.values():
|
||||||
|
if details.get('Hidden', False):
|
||||||
|
continue
|
||||||
menu_lines.append(details['Display Name'])
|
menu_lines.append(details['Display Name'])
|
||||||
if self.options:
|
if self.options:
|
||||||
menu_lines.append(separator_string)
|
menu_lines.append(separator_string)
|
||||||
|
|
||||||
# Actions
|
# Actions
|
||||||
for details in self.actions.values():
|
for details in self.actions.values():
|
||||||
|
if details.get('Hidden', False):
|
||||||
|
continue
|
||||||
menu_lines.append(details['Display Name'])
|
menu_lines.append(details['Display Name'])
|
||||||
|
|
||||||
# Show menu
|
# Show menu
|
||||||
|
|
@ -135,6 +141,9 @@ class Menu():
|
||||||
# Loop over all item names
|
# Loop over all item names
|
||||||
for section in (self.actions, self.options, self.sets, self.toggles):
|
for section in (self.actions, self.options, self.sets, self.toggles):
|
||||||
for details in section.values():
|
for details in section.values():
|
||||||
|
if details.get('Hidden', False):
|
||||||
|
# Skip hidden lines
|
||||||
|
continue
|
||||||
line = strip_colors(details['Display Name'])
|
line = strip_colors(details['Display Name'])
|
||||||
separator_length = max(separator_length, len(line))
|
separator_length = max(separator_length, len(line))
|
||||||
separator_length += 1
|
separator_length += 1
|
||||||
|
|
@ -150,6 +159,9 @@ class Menu():
|
||||||
index = 0
|
index = 0
|
||||||
for section in (self.sets, self.toggles, self.options):
|
for section in (self.sets, self.toggles, self.options):
|
||||||
for details in section.values():
|
for details in section.values():
|
||||||
|
if details.get('Hidden', False):
|
||||||
|
# Don't increment counter or add to valid_answers
|
||||||
|
continue
|
||||||
index += 1
|
index += 1
|
||||||
if not details.get('Disabled', False):
|
if not details.get('Disabled', False):
|
||||||
valid_answers.append(str(index))
|
valid_answers.append(str(index))
|
||||||
|
|
@ -164,6 +176,7 @@ class Menu():
|
||||||
|
|
||||||
def _resolve_selection(self, selection):
|
def _resolve_selection(self, selection):
|
||||||
"""Get menu item based on user selection, returns tuple."""
|
"""Get menu item based on user selection, returns tuple."""
|
||||||
|
offset = 1
|
||||||
resolved_selection = None
|
resolved_selection = None
|
||||||
if selection.isnumeric():
|
if selection.isnumeric():
|
||||||
# Enumerate over numbered entries
|
# Enumerate over numbered entries
|
||||||
|
|
@ -173,7 +186,9 @@ class Menu():
|
||||||
*self.options.items(),
|
*self.options.items(),
|
||||||
]
|
]
|
||||||
for _i, details in enumerate(entries):
|
for _i, details in enumerate(entries):
|
||||||
if str(_i+1) == selection:
|
if details[1].get('Hidden', False):
|
||||||
|
offset -= 1
|
||||||
|
elif str(_i+offset) == selection:
|
||||||
resolved_selection = (details)
|
resolved_selection = (details)
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
|
|
@ -193,6 +208,9 @@ class Menu():
|
||||||
# Numbered sections
|
# Numbered sections
|
||||||
for section in (self.sets, self.toggles, self.options):
|
for section in (self.sets, self.toggles, self.options):
|
||||||
for name, details in section.items():
|
for name, details in section.items():
|
||||||
|
if details.get('Hidden', False):
|
||||||
|
# Skip hidden lines and don't increment index
|
||||||
|
continue
|
||||||
index += 1
|
index += 1
|
||||||
details['Display Name'] = self._get_display_name(
|
details['Display Name'] = self._get_display_name(
|
||||||
name,
|
name,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue