Reworked UI for easier workflow.
This commit is contained in:
119
ptlinux/ui/components/action_panel.py
Normal file
119
ptlinux/ui/components/action_panel.py
Normal file
@@ -0,0 +1,119 @@
|
||||
"""Primary game and launcher action controls."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ActionPanel:
|
||||
container: Any
|
||||
game_actions: Any
|
||||
system_actions: Any
|
||||
update_button: Any
|
||||
repair_button: Any
|
||||
import_button: Any
|
||||
doctor_button: Any
|
||||
settings_button: Any
|
||||
launcher_update_button: Any
|
||||
launcher_update_badge: Any
|
||||
|
||||
@property
|
||||
def operation_buttons(self) -> tuple[Any, ...]:
|
||||
return (
|
||||
self.update_button,
|
||||
self.repair_button,
|
||||
self.doctor_button,
|
||||
self.settings_button,
|
||||
self.import_button,
|
||||
self.launcher_update_button,
|
||||
)
|
||||
|
||||
@property
|
||||
def mutation_buttons(self) -> tuple[Any, ...]:
|
||||
return (
|
||||
self.update_button,
|
||||
self.repair_button,
|
||||
self.import_button,
|
||||
self.launcher_update_button,
|
||||
)
|
||||
|
||||
|
||||
def build_action_panel(parent: Any, *, ttk: Any, launcher_version: str) -> ActionPanel:
|
||||
controls = ttk.Frame(parent, style="Root.TFrame")
|
||||
controls.pack(fill="x", pady=(8, 8))
|
||||
controls.columnconfigure(0, weight=1, uniform="actions")
|
||||
controls.columnconfigure(1, weight=1, uniform="actions")
|
||||
game_actions = ttk.Frame(controls, style="Surface.TFrame", padding=12)
|
||||
game_actions.grid(row=0, column=0, sticky="nsew", padx=(0, 4))
|
||||
ttk.Label(game_actions, text="GAME FILES", style="Section.TLabel").pack(anchor="w")
|
||||
game_button_row = ttk.Frame(game_actions, style="Surface.TFrame")
|
||||
game_button_row.pack(anchor="w", fill="x", pady=(6, 0))
|
||||
update_button = ttk.Button(
|
||||
game_button_row,
|
||||
text="UPDATE",
|
||||
style="Secondary.TButton",
|
||||
underline=0,
|
||||
)
|
||||
update_button.pack(side="left")
|
||||
repair_button = ttk.Button(
|
||||
game_button_row,
|
||||
text="REPAIR",
|
||||
style="Secondary.TButton",
|
||||
underline=0,
|
||||
)
|
||||
repair_button.pack(side="left", padx=(8, 0))
|
||||
import_button = ttk.Button(
|
||||
game_button_row,
|
||||
text="IMPORT GAME",
|
||||
style="Secondary.TButton",
|
||||
underline=0,
|
||||
)
|
||||
import_button.pack(side="left", padx=(8, 0))
|
||||
|
||||
system_actions = ttk.Frame(controls, style="Surface.TFrame", padding=12)
|
||||
system_actions.grid(row=0, column=1, sticky="nsew", padx=(4, 0))
|
||||
system_heading = ttk.Frame(system_actions, style="Surface.TFrame")
|
||||
system_heading.pack(fill="x")
|
||||
ttk.Label(system_heading, text="LAUNCHER", style="Section.TLabel").pack(side="left")
|
||||
launcher_update_badge = ttk.Label(
|
||||
system_heading,
|
||||
text="",
|
||||
style="UpdateBadge.TLabel",
|
||||
)
|
||||
system_button_row = ttk.Frame(system_actions, style="Surface.TFrame")
|
||||
system_button_row.pack(anchor="w", fill="x", pady=(6, 0))
|
||||
doctor_button = ttk.Button(
|
||||
system_button_row,
|
||||
text="SYSTEM CHECK",
|
||||
style="Secondary.TButton",
|
||||
underline=7,
|
||||
)
|
||||
doctor_button.pack(side="left")
|
||||
settings_button = ttk.Button(
|
||||
system_button_row,
|
||||
text="OPEN SETTINGS",
|
||||
style="Secondary.TButton",
|
||||
underline=5,
|
||||
)
|
||||
settings_button.pack(side="left", padx=(8, 0))
|
||||
launcher_update_button = ttk.Button(
|
||||
system_button_row,
|
||||
text=f"LAUNCHER {launcher_version}",
|
||||
style="Secondary.TButton",
|
||||
underline=0,
|
||||
)
|
||||
launcher_update_button.pack(side="left", padx=(8, 0))
|
||||
return ActionPanel(
|
||||
container=controls,
|
||||
game_actions=game_actions,
|
||||
system_actions=system_actions,
|
||||
update_button=update_button,
|
||||
repair_button=repair_button,
|
||||
import_button=import_button,
|
||||
doctor_button=doctor_button,
|
||||
settings_button=settings_button,
|
||||
launcher_update_button=launcher_update_button,
|
||||
launcher_update_badge=launcher_update_badge,
|
||||
)
|
||||
Reference in New Issue
Block a user