diff options
author | Janar Sööt <janar.soot@gmail.com> | 2020-08-18 22:04:53 +0300 |
---|---|---|
committer | KevinOConnor <kevin@koconnor.net> | 2020-08-18 21:39:15 -0400 |
commit | ccfcc3789b2b368703135fbf1511c015e9bdb53a (patch) | |
tree | 3837b4e462302bc44fab4c050055ab119cea2854 /klippy/extras/display | |
parent | 2a27093f696e16f7a2ef29efd3fc2b38e2147615 (diff) | |
download | kutter-ccfcc3789b2b368703135fbf1511c015e9bdb53a.tar.gz kutter-ccfcc3789b2b368703135fbf1511c015e9bdb53a.tar.xz kutter-ccfcc3789b2b368703135fbf1511c015e9bdb53a.zip |
menu: optimize container populate
- don't populate all items at once
- populate items when container is pushed to stack
- precreate List back item, don't create it during populate.
- don't update items during populate
Signed-off-by: Janar Sööt <janar.soot@gmail.com>
Diffstat (limited to 'klippy/extras/display')
-rw-r--r-- | klippy/extras/display/menu.py | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/klippy/extras/display/menu.py b/klippy/extras/display/menu.py index f565529b..c0c86028 100644 --- a/klippy/extras/display/menu.py +++ b/klippy/extras/display/menu.py @@ -328,7 +328,6 @@ class MenuContainer(MenuElement): item.add_parents(self._parents) item.add_parents(self) item.assert_recursive_relation() - item.populate() if index is None: self._allitems.append((item, name)) else: @@ -346,7 +345,6 @@ class MenuContainer(MenuElement): self._populate() # send populate event self.send_event('populate', self) - self.update_items() def update_items(self): _a = [(item, name) for item, name in self._allitems @@ -553,7 +551,12 @@ class MenuInput(MenuCommand): class MenuList(MenuContainer): def __init__(self, manager, config): super(MenuList, self).__init__(manager, config) - self._show_title = True + # create back item + self._itemBack = self.manager.menuitem_from({ + 'type': 'command', + 'name': '..', + 'gcode': '{menu.back()}' + }) def _names_aslist(self): return self.manager.lookup_children(self.get_ns()) @@ -561,15 +564,7 @@ class MenuList(MenuContainer): def _populate(self): super(MenuList, self)._populate() # add back as first item - name = '..' - if self._show_title: - name += ' %s' % str(self._name()) - item = self.manager.menuitem_from({ - 'type': 'command', - 'name': self.manager.asliteral(name), - 'gcode': '{menu.back()}' - }) - self.insert_item(item, 0) + self.insert_item(self._itemBack, 0) def render_container(self, eventtime): rows = [] @@ -702,7 +697,6 @@ class MenuManager: self.update_context(eventtime) if isinstance(self.root, MenuContainer): self.root.init_selection() - self.root.populate() self.stack_push(self.root) self.running = True return @@ -748,6 +742,7 @@ class MenuManager: def stack_push(self, container): if not isinstance(container, MenuContainer): raise error("Wrong type, expected MenuContainer") + container.populate() top = self.stack_peek() if top is not None: if isinstance(top, MenuList): |