From 3e7374cd1151fdf2524d58ab5472449be1a59fba Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 1 Dec 2021 18:48:42 +0000 Subject: [PATCH] menus: Drop sub-menu class Menus can now be stacked Signed-off-by: Michael Tremer --- src/westferry/handlers/analytics.py | 4 +- src/westferry/ui/menu.py | 77 +++++++++-------------------- 2 files changed, 26 insertions(+), 55 deletions(-) diff --git a/src/westferry/handlers/analytics.py b/src/westferry/handlers/analytics.py index 5afd429..5c74549 100644 --- a/src/westferry/handlers/analytics.py +++ b/src/westferry/handlers/analytics.py @@ -103,7 +103,7 @@ class AnalyticsNetworkConnectionsBaseHandler(AnalyticsBaseHandler): m.add_handler(AnalyticsNetworkConnectionsOverviewHandler, title=_("Overview")) # Protocol States - s = m.add_submenu(_("Procotol States")) + s = m.add_menu(_("Procotol States")) s.add_handler(AnalyticsNetworkConnectionsStatesTCPHandler) s.add_handler(AnalyticsNetworkConnectionsStatesSCTPHandler) s.add_handler(AnalyticsNetworkConnectionsStatesDCCPHandler) @@ -202,7 +202,7 @@ class AnalyticsSystemBaseHandler(AnalyticsBaseHandler): m.add_handler(AnalyticsSystemTemperaturesHandler) # Others - s = m.add_submenu(_("More")) + s = m.add_menu(_("More")) s.add_handler(AnalyticsSystemEntropyHandler) s.add_handler(AnalyticsSystemContextSwitchesHandler) s.add_handler(AnalyticsSystemInterruptsHandler) diff --git a/src/westferry/ui/menu.py b/src/westferry/ui/menu.py index 81a5d51..a0ca571 100644 --- a/src/westferry/ui/menu.py +++ b/src/westferry/ui/menu.py @@ -58,9 +58,24 @@ class MenuLink(MenuItem): return isinstance(self.menu.handler, self.handler) -class MenuMixin(object): +class Menu(object): + """ + The main menu object that creates a little menu on the side + """ type = "menu" + def __init__(self, handler, title=None, parent=None): + self.handler = handler + self.title = title + self.parent = parent + + @property + def locale(self): + """ + Shortcut to access the user's locale + """ + return self.handler.locale + @property def items(self): if not hasattr(self, "_items"): @@ -74,6 +89,9 @@ class MenuMixin(object): """ return iter(self.items) + def is_active(self): + return False + def add_handler(self, handler, title=None, **kwargs): """ Automatically adds a handler to the menu @@ -101,61 +119,14 @@ class MenuMixin(object): return link - def add_submenu(self, *args, **kwargs): - """ - Adds a submenu to the menu - """ - kwargs.update({ - "menu" : self, - }) - - submenu = SubMenu(*args, **kwargs) - self.items.append(submenu) - - return submenu - - -class Menu(MenuMixin): - """ - The main menu object that creates a little menu on the side - """ - def __init__(self, handler, title=None): - self.handler = handler - self.title = title - - @property - def locale(self): - """ - Shortcut to access the user's locale - """ - return self.handler.locale - - - -class SubMenu(MenuItem, MenuMixin): - """ - A sub menu in the side menu - """ - - type = "menu" - - def __init__(self, title, menu=None): - self.title = title - self.menu = menu - - @property - def locale(self): + def add_menu(self, title, **kwargs): """ - Shortcut to access the user's locale + Adds a sub-menu to the menu """ - return self.menu.locale + menu = Menu(self.handler, parent=self, title=title, **kwargs) + self.items.append(menu) - @property - def handler(self): - """ - Shortcut to the handler of the main menu - """ - return self.menu.handler + return menu class SidebarMenuModule(base.BaseUIModule): -- 2.47.3