66 lines
2.7 KiB
Python
66 lines
2.7 KiB
Python
# tsk/tools_menu/ui.py
|
|
import pyray as rl
|
|
|
|
from openpilot.system.ui.lib.application import gui_app
|
|
from tsk.tools_menu.actions import tsk_extractor_action, tsk_guide_action, tsk_uninstaller_action # Import actions
|
|
from tsk.tools_menu.keyboard import KeyboardDialog
|
|
from tsk.ui.button import Button
|
|
from tsk.ui.header import Header
|
|
from tsk.ui.layout import Layout, Theme # Import Theme
|
|
|
|
|
|
class ToolsMenuUI:
|
|
"""Renders the Tools Menu with buttons for TSK actions."""
|
|
|
|
def __init__(self):
|
|
"""Initializes the Tools Menu."""
|
|
self.header = Header()
|
|
header_height = self.header._calculate_height()
|
|
key_status_height = Theme.key_status_font_size * 1.5 # Approximate height
|
|
combined_header_height = header_height + key_status_height
|
|
|
|
rect = rl.Rectangle(0, 0, gui_app.width, gui_app.height) # Dummy rectangle for initial calculations
|
|
button_height = Layout.calculate_button_dimensions(rect.height, combined_header_height)
|
|
|
|
# --- Calculate Positions for the Three Main Buttons ---
|
|
start_x, start_y = Layout.calculate_button_positions(rect, combined_header_height, 3)
|
|
|
|
button1_x = start_x
|
|
button2_x = start_x + (600 + 80)
|
|
button3_x = start_x + 2 * (600 + 80)
|
|
|
|
button_y = start_y
|
|
|
|
# --- Create the Three Main Buttons ---
|
|
self.extractor_button = Button(tsk_extractor_action,
|
|
[{"text": "TSK Extractor", "x_offset": 55, "y_offset": (button_height / 2) - 45}],
|
|
600, button_height, button1_x, button_y, 90)
|
|
self.keyboard_button = Button(KeyboardDialog.ask,
|
|
[{"text": "TSK Keyboard", "x_offset": 45, "y_offset": (button_height / 2) - 45}], 600,
|
|
button_height, button2_x, button_y, 90)
|
|
self.uninstaller_button = Button(tsk_uninstaller_action, [
|
|
{"text": "TSK Uninstaller", "x_offset": 25, "y_offset": (button_height / 2) - 45}], 600, button_height, button3_x,
|
|
button_y, 90)
|
|
|
|
# --- Create the "Tell me what to do next" Button ---
|
|
guide_button_width = (3 * 600) + (2 * 80)
|
|
guide_button_height = 200
|
|
guide_button_x = start_x
|
|
guide_button_y = button_y + button_height + 80
|
|
|
|
self.guide_button = Button(tsk_guide_action, [
|
|
{
|
|
"text": "Tell me what to do next",
|
|
"x_offset": (guide_button_width - rl.measure_text_ex(gui_app.font(), "Tell me what to do next", 90, 1.0).x) / 2,
|
|
"y_offset": 60,
|
|
}
|
|
], guide_button_width, guide_button_height, guide_button_x, guide_button_y, 90)
|
|
|
|
def render(self, rect: rl.Rectangle) -> None:
|
|
"""Renders the Tools Menu."""
|
|
|
|
self.extractor_button.render()
|
|
self.keyboard_button.render()
|
|
self.uninstaller_button.render()
|
|
self.guide_button.render()
|