Files
onepilot/tsk/c3/tsk_manager.py
T
2026-04-10 13:49:54 -07:00

67 lines
1.7 KiB
Python

# tsk/c3/tsk_manager.py
"""
TSK Manager main application.
"""
import pyray as rl
from tsk.c3.reboot_menu.ui import RebootMenuUI
from tsk.c3.tools_menu.ui import ToolsMenuUI
from tsk.c3.ui.header import TSKHeader
from tsk.c3.ui.layout import Theme
from tsk.common.widget import TSKWidget
class TSKManager(TSKWidget):
"""
Main TSK Manager application widget for C3X devices.
This is the top-level widget that manages:
- Header with navigation
- Menu switching
- Overall layout
For C3X devices only (tici/tizi).
"""
def __init__(self):
super().__init__()
self._current_menu = Theme.menu_tools
# Create child widgets
self.header = TSKHeader()
self.tools_menu = ToolsMenuUI()
self.reboot_menu = RebootMenuUI()
def _render(self, rect: rl.Rectangle):
"""Render the TSK Manager UI."""
# Clear background
rl.clear_background(rl.BLACK)
# Render header
header_height = self.header.get_height()
header_rect = rl.Rectangle(rect.x, rect.y, rect.width, header_height)
# Update header's current menu
self.header.set_current_menu(self._current_menu)
# Render header and get navigation result
nav_result = self.header.render(header_rect)
if nav_result is not None:
self._current_menu = nav_result
# Render current menu
menu_rect = rl.Rectangle(
rect.x,
rect.y + header_height,
rect.width,
rect.height - header_height
)
if self._current_menu == Theme.menu_tools:
self.tools_menu.render_with_header_height(menu_rect, header_height)
elif self._current_menu == Theme.menu_reboot:
self.reboot_menu.render_with_header_height(menu_rect, header_height)
return True