Updated Menu()

* Added logic for disabled items
* Use 'Display Name' in _show()
This commit is contained in:
2Shirt 2019-08-20 21:49:42 -06:00
parent 8cedac738e
commit bd3440daa9
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C

View file

@ -79,15 +79,21 @@ class Menu():
def _get_display_name(self, name, details, index=None, no_checkboxes=True): def _get_display_name(self, name, details, index=None, no_checkboxes=True):
# pylint: disable=no-self-use # pylint: disable=no-self-use
"""Format display name based on details and args, returns str.""" """Format display name based on details and args, returns str."""
disabled = details.get('Disabled', False)
checkmark = '' if 'DISPLAY' in os.environ else '*' checkmark = '' if 'DISPLAY' in os.environ else '*'
display_name = f'{index if index else name[:1].upper()}: ' clear_code = COLORS['CLEAR']
color_code = COLORS['YELLOW'] if disabled else ''
display_name = f'{color_code}{index if index else name[:1].upper()}: '
# Add enabled status if necessary # Add enabled status if necessary
if not no_checkboxes: if not no_checkboxes:
display_name += f'[{checkmark if details["Enabled"] else " "}] ' display_name += f'[{checkmark if details["Enabled"] else " "}] '
# Add name # Add name
display_name += name if disabled:
display_name += f'{name} ({self.disabled_str}){clear_code}'
else:
display_name += name
# Done # Done
return display_name return display_name
@ -111,30 +117,27 @@ class Menu():
menu_lines = [self.title, separator_string] menu_lines = [self.title, separator_string]
# Sets & toggles # Sets & toggles
if self.sets: for section in (self.sets, self.toggles):
for items in self.sets.items(): for details in section.values():
menu_lines.append(items) menu_lines.append(details['Display Name'])
if self.toggles:
for items in self.toggles.items():
menu_lines.append(items)
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():
menu_lines.append(details['Display Name'])
if self.options: if self.options:
for items in self.options.items():
menu_lines.append(items)
menu_lines.append(separator_string) menu_lines.append(separator_string)
# Actions # Actions
for items in self.actions.items(): for details in self.actions.values():
menu_lines.append(items) menu_lines.append(details['Display Name'])
# Show menu # Show menu
menu_lines = [str(line) for line in menu_lines] menu_lines = [str(line) for line in menu_lines]
print('\n'.join(menu_lines)) print('\n'.join(menu_lines))
def _update_menu(self, single_selection=True): def _update(self, single_selection=True):
"""Update menu items in preparation for printing to screen.""" """Update menu items in preparation for printing to screen."""
index = 0 index = 0