easy_tui.menu
1class Menu: 2 """ 3Creates a simple "menu" object which may be used in your Windows. 4 5To create a new menu, call `Menu(options)`, where `options` is a list of strings 6that serve as menu items. 7 8Logging may be enabled on the debug level with `self.do_logging()` 9 10Call `self.select_down()` and `self.select_up()` to change which item is selected. 11 12See examples for implementation. 13 14Attributes 15---------- 16`self.options` - List of options. 17`self.selection` - Index of current item. 18 """ 19 20 logs = False 21 def __init__(self, options: list, selection: int = 0): 22 """ 23Initialize new menu. 24 25`options` - List of strings to serve as menu options. 26`selection` - Menu item selected. Defaults to 0. 27 """ 28 29 if self.logs: logging.debug("::easy_tui::Menu - Initialized") 30 self.options = options 31 self.selection = selection 32 self.num_options = len(self.options) 33 34 def select_down(self): 35 """Increments menu selection index with wrapping.""" 36 37 if self.logs: logging.debug("::easy_tui::Menu - select_down() called") 38 self.selection = (self.selection + 1) % self.num_options 39 40 def select_up(self): 41 """Decrements menu selection index with wrapping.""" 42 43 if self.logs: logging.debug("::easy_tui::Menu - select_up() called") 44 self.selection = (self.selection + (self.num_options - 1)) % self.num_options 45 46 def do_logging(self): 47 """Enable logging on object.""" 48 self.logs = True 49 50class TableMenu: 51 """ 52Creates a simple "menu" object, as above, which permits multiple selections. 53The index of a menu item may be added or removed 54 55Attributes 56---------- 57`self.options` - List of options. 58`self.selection` - Index of current item. 59`self.selections` - Set of indices of all selected items. 60 """ 61 62 logs = False 63 def __init__(self, options: list, selection=0): 64 if self.logs: logging.debug("::easy_tui::TableMenu - Initialized") 65 self.options = options 66 self.selection: int = selection 67 self.selections: set[int] = set() 68 self.num_options = len(self.options) 69 70 def select_down(self): 71 """Increments menu selection index with wrapping.""" 72 73 if self.logs: logging.debug("::easy_tui::TableMenu - select_down() called") 74 self.selection = (self.selection + 1) % self.num_options 75 76 def select_up(self): 77 """Decrements menu selection index with wrapping.""" 78 79 if self.logs: logging.debug("::easy_tui::TableMenu - select_up() called") 80 self.selection = (self.selection + (self.num_options - 1)) % self.num_options 81 82 def add_selection(self): 83 """Adds selected item (index = self.selection) to list of selected items (self.selections).""" 84 85 if self.logs: logging.debug(f"::easy_tui::TableMenu - selection added: {i}") 86 self.selections.add(self.selection) 87 88 def rm_selection(self): 89 """ 90Removes selected item (index = self.selection) from list of selected items (self.selections). 91Can throw KeyError if selected item is not in `self.selections` already. 92 """ 93 if self.logs: logging.debug(f"::easy_tui::TableMenu - selection removed: {i}") 94 self.selections.remove(self.selection)
2class Menu: 3 """ 4Creates a simple "menu" object which may be used in your Windows. 5 6To create a new menu, call `Menu(options)`, where `options` is a list of strings 7that serve as menu items. 8 9Logging may be enabled on the debug level with `self.do_logging()` 10 11Call `self.select_down()` and `self.select_up()` to change which item is selected. 12 13See examples for implementation. 14 15Attributes 16---------- 17`self.options` - List of options. 18`self.selection` - Index of current item. 19 """ 20 21 logs = False 22 def __init__(self, options: list, selection: int = 0): 23 """ 24Initialize new menu. 25 26`options` - List of strings to serve as menu options. 27`selection` - Menu item selected. Defaults to 0. 28 """ 29 30 if self.logs: logging.debug("::easy_tui::Menu - Initialized") 31 self.options = options 32 self.selection = selection 33 self.num_options = len(self.options) 34 35 def select_down(self): 36 """Increments menu selection index with wrapping.""" 37 38 if self.logs: logging.debug("::easy_tui::Menu - select_down() called") 39 self.selection = (self.selection + 1) % self.num_options 40 41 def select_up(self): 42 """Decrements menu selection index with wrapping.""" 43 44 if self.logs: logging.debug("::easy_tui::Menu - select_up() called") 45 self.selection = (self.selection + (self.num_options - 1)) % self.num_options 46 47 def do_logging(self): 48 """Enable logging on object.""" 49 self.logs = True
Creates a simple "menu" object which may be used in your Windows.
To create a new menu, call Menu(options)
, where options
is a list of strings
that serve as menu items.
Logging may be enabled on the debug level with self.do_logging()
Call self.select_down()
and self.select_up()
to change which item is selected.
See examples for implementation.
Attributes
self.options
- List of options.
self.selection
- Index of current item.
22 def __init__(self, options: list, selection: int = 0): 23 """ 24Initialize new menu. 25 26`options` - List of strings to serve as menu options. 27`selection` - Menu item selected. Defaults to 0. 28 """ 29 30 if self.logs: logging.debug("::easy_tui::Menu - Initialized") 31 self.options = options 32 self.selection = selection 33 self.num_options = len(self.options)
Initialize new menu.
options
- List of strings to serve as menu options.
selection
- Menu item selected. Defaults to 0.
35 def select_down(self): 36 """Increments menu selection index with wrapping.""" 37 38 if self.logs: logging.debug("::easy_tui::Menu - select_down() called") 39 self.selection = (self.selection + 1) % self.num_options
Increments menu selection index with wrapping.
41 def select_up(self): 42 """Decrements menu selection index with wrapping.""" 43 44 if self.logs: logging.debug("::easy_tui::Menu - select_up() called") 45 self.selection = (self.selection + (self.num_options - 1)) % self.num_options
Decrements menu selection index with wrapping.
51class TableMenu: 52 """ 53Creates a simple "menu" object, as above, which permits multiple selections. 54The index of a menu item may be added or removed 55 56Attributes 57---------- 58`self.options` - List of options. 59`self.selection` - Index of current item. 60`self.selections` - Set of indices of all selected items. 61 """ 62 63 logs = False 64 def __init__(self, options: list, selection=0): 65 if self.logs: logging.debug("::easy_tui::TableMenu - Initialized") 66 self.options = options 67 self.selection: int = selection 68 self.selections: set[int] = set() 69 self.num_options = len(self.options) 70 71 def select_down(self): 72 """Increments menu selection index with wrapping.""" 73 74 if self.logs: logging.debug("::easy_tui::TableMenu - select_down() called") 75 self.selection = (self.selection + 1) % self.num_options 76 77 def select_up(self): 78 """Decrements menu selection index with wrapping.""" 79 80 if self.logs: logging.debug("::easy_tui::TableMenu - select_up() called") 81 self.selection = (self.selection + (self.num_options - 1)) % self.num_options 82 83 def add_selection(self): 84 """Adds selected item (index = self.selection) to list of selected items (self.selections).""" 85 86 if self.logs: logging.debug(f"::easy_tui::TableMenu - selection added: {i}") 87 self.selections.add(self.selection) 88 89 def rm_selection(self): 90 """ 91Removes selected item (index = self.selection) from list of selected items (self.selections). 92Can throw KeyError if selected item is not in `self.selections` already. 93 """ 94 if self.logs: logging.debug(f"::easy_tui::TableMenu - selection removed: {i}") 95 self.selections.remove(self.selection)
Creates a simple "menu" object, as above, which permits multiple selections. The index of a menu item may be added or removed
Attributes
self.options
- List of options.
self.selection
- Index of current item.
self.selections
- Set of indices of all selected items.
71 def select_down(self): 72 """Increments menu selection index with wrapping.""" 73 74 if self.logs: logging.debug("::easy_tui::TableMenu - select_down() called") 75 self.selection = (self.selection + 1) % self.num_options
Increments menu selection index with wrapping.
77 def select_up(self): 78 """Decrements menu selection index with wrapping.""" 79 80 if self.logs: logging.debug("::easy_tui::TableMenu - select_up() called") 81 self.selection = (self.selection + (self.num_options - 1)) % self.num_options
Decrements menu selection index with wrapping.
83 def add_selection(self): 84 """Adds selected item (index = self.selection) to list of selected items (self.selections).""" 85 86 if self.logs: logging.debug(f"::easy_tui::TableMenu - selection added: {i}") 87 self.selections.add(self.selection)
Adds selected item (index = self.selection) to list of selected items (self.selections).
89 def rm_selection(self): 90 """ 91Removes selected item (index = self.selection) from list of selected items (self.selections). 92Can throw KeyError if selected item is not in `self.selections` already. 93 """ 94 if self.logs: logging.debug(f"::easy_tui::TableMenu - selection removed: {i}") 95 self.selections.remove(self.selection)
Removes selected item (index = self.selection) from list of selected items (self.selections).
Can throw KeyError if selected item is not in self.selections
already.