Fix bug in menu so that first item in submenus gets read automatically.

This commit is contained in:
Storm Dragon
2026-04-23 12:46:09 -04:00
parent 6801613c99
commit a9387ddd6a
+18 -10
View File
@@ -97,6 +97,14 @@ def build_game_actions(entry):
return actions return actions
def submenu_command(callback):
def wrapped():
return callback()
wrapped.opensSubmenu = True
return wrapped
def run_service_action(action, serviceName, helper=SERVICE_STATE_HELPER, logPath=SERVICE_ACTION_LOG): def run_service_action(action, serviceName, helper=SERVICE_STATE_HELPER, logPath=SERVICE_ACTION_LOG):
command = ["sudo", "-n", str(helper), action, serviceName] command = ["sudo", "-n", str(helper), action, serviceName]
result = subprocess.run(command, capture_output=True, text=True, check=False) result = subprocess.run(command, capture_output=True, text=True, check=False)
@@ -785,9 +793,7 @@ class VoicedMenu:
self.currentItemIndices = {sectionName: 0} self.currentItemIndices = {sectionName: 0}
self.menuSections = {sectionName: actions + [("Back", self.restore_saved_menu)]} self.menuSections = {sectionName: actions + [("Back", self.restore_saved_menu)]}
self.draw_menu() self.draw_menu()
self.announce_current_section() self.announce_current_item()
time.sleep(0.5)
self.announce_current_item(interrupt=False)
def show_game_actions(self, gameEntry): def show_game_actions(self, gameEntry):
"""Show available actions for a game.""" """Show available actions for a game."""
@@ -996,14 +1002,16 @@ class VoicedMenu:
if 0 <= index < len(items): if 0 <= index < len(items):
name, command = items[index] name, command = items[index]
# Announce we're launching the program
self.speak(f"Launching {name}")
# Check if command is a function (for service toggles and other functions) # Check if command is a function (for service toggles and other functions)
if callable(command): if callable(command):
if not getattr(command, "opensSubmenu", False):
self.speak(f"Launching {name}")
command() command()
return return
# Announce we're launching the program
self.speak(f"Launching {name}")
# Save current terminal state before any changes # Save current terminal state before any changes
savedTerminalState = None savedTerminalState = None
try: try:
@@ -1373,9 +1381,9 @@ class VoicedMenu:
def configure_system_menu(menu): def configure_system_menu(menu):
"""Add the nested System menu.""" """Add the nested System menu."""
menu.add_section("System") menu.add_section("System")
menu.add_item("System", "Settings", menu.show_settings_menu) menu.add_item("System", "Settings", submenu_command(menu.show_settings_menu))
menu.add_item("System", "Services", menu.show_services_menu) menu.add_item("System", "Services", submenu_command(menu.show_services_menu))
menu.add_item("System", "Power", menu.show_power_menu) menu.add_item("System", "Power", submenu_command(menu.show_power_menu))
# Example usage # Example usage
@@ -1387,7 +1395,7 @@ if __name__ == "__main__":
menu.add_item( menu.add_item(
gameEntry.section, gameEntry.section,
gameEntry.name, gameEntry.name,
lambda entry=gameEntry: menu.show_game_actions(entry), submenu_command(lambda entry=gameEntry: menu.show_game_actions(entry)),
) )
menu.add_section("Emulators") menu.add_section("Emulators")