Skip to content
Snippets Groups Projects
Commit a24ba137 authored by dos's avatar dos Committed by dos
Browse files

py,st3m: Support custom categories

This allows us to gracefully handle new categories being introduced
in the future. Categories are still being validated by the app store's
backend.
parent 00900372
No related branches found
No related tags found
No related merge requests found
from st3m.reactor import Reactor, Responder from st3m.reactor import Reactor, Responder
from st3m.goose import List, Optional from st3m.goose import List, Set, Optional
from st3m.ui.menu import ( from st3m.ui.menu import (
MenuItem, MenuItem,
MenuItemBack, MenuItemBack,
...@@ -95,6 +95,13 @@ class ApplicationMenu(SimpleMenu): ...@@ -95,6 +95,13 @@ class ApplicationMenu(SimpleMenu):
leds.update() leds.update()
def _get_bundle_menu_kinds(mgr: BundleManager) -> Set[str]:
kinds: Set[str] = set()
for bundle in mgr.bundles.values():
kinds.update(bundle.menu_kinds())
return kinds
def _get_bundle_menu_entries(mgr: BundleManager, kind: str) -> List[MenuItem]: def _get_bundle_menu_entries(mgr: BundleManager, kind: str) -> List[MenuItem]:
entries: List[MenuItem] = [] entries: List[MenuItem] = []
ids = sorted(mgr.bundles.keys(), key=str.lower) ids = sorted(mgr.bundles.keys(), key=str.lower)
...@@ -244,9 +251,16 @@ def run_main() -> None: ...@@ -244,9 +251,16 @@ def run_main() -> None:
MenuItemAction("Reboot", machine.reset), MenuItemAction("Reboot", machine.reset),
], ],
) )
app_kinds = _get_bundle_menu_kinds(bundles)
menu_categories = ["Badge", "Music", "Media", "Apps", "Games"]
for kind in app_kinds:
if kind not in ["Hidden", "System"] and kind not in menu_categories:
menu_categories.append(kind)
categories = [ categories = [
MenuItemForeground(kind, ApplicationMenu([MenuItemBack()] + entries)) MenuItemForeground(kind, ApplicationMenu([MenuItemBack()] + entries))
for kind in ["Badge", "Music", "Media", "Apps", "Games"] for kind in menu_categories
if (entries := _get_bundle_menu_entries(bundles, kind)) if (entries := _get_bundle_menu_entries(bundles, kind))
] ]
categories.append(MenuItemForeground("System", menu_system)) categories.append(MenuItemForeground("System", menu_system))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment