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)
class TableMenu:
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.

TableMenu(options: list, selection=0)
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)
def select_down(self):
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.

def select_up(self):
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.

def add_selection(self):
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).

def rm_selection(self):
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.