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
Branches
Tags
1 merge request!571BundleMetadata: Rename "menu" to "category"; support custom categories
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