Skip to content
Snippets Groups Projects
Verified Commit 77db36a4 authored by dos's avatar 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 1c8bbf37
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