Merge pull request #796 from alvroble/auto_detect_screenshot_generator

[Refactor] Enable auto-detection of screenshot generator renderer
This commit is contained in:
Nick Klockenga
2025-10-23 15:21:19 -04:00
committed by GitHub
5 changed files with 18 additions and 13 deletions
+5
View File
@@ -20,6 +20,11 @@ class Renderer(ConfigurableSingleton):
lock = Lock()
@property
def is_screenshot_generator(self) -> bool:
return False
@classmethod
def configure_instance(cls):
# Instantiate the one and only Renderer instance
+5 -8
View File
@@ -43,21 +43,18 @@ class LogoScreen(BaseScreen):
@dataclass
class OpeningSplashView(View):
is_screenshot_renderer: bool = False
force_partner_logos: bool|None = None
def run(self):
self.run_screen(
OpeningSplashScreen,
is_screenshot_renderer=self.is_screenshot_renderer,
force_partner_logos=self.force_partner_logos
)
class OpeningSplashScreen(LogoScreen):
def __init__(self, is_screenshot_renderer=False, force_partner_logos=None):
self.is_screenshot_renderer = is_screenshot_renderer
def __init__(self, force_partner_logos=None):
self.force_partner_logos = force_partner_logos
super().__init__()
@@ -85,7 +82,7 @@ class OpeningSplashScreen(LogoScreen):
logo_offset_y = 0
background = Image.new("RGBA", size=self.logo.size, color="black")
if not self.is_screenshot_renderer:
if not self.renderer.is_screenshot_generator:
# Fade in alpha
for i in range(250, -1, -25):
self.logo.putalpha(255 - i)
@@ -108,11 +105,11 @@ class OpeningSplashScreen(LogoScreen):
version_y = int(self.canvas_height/2) + int(logo_height/2) + logo_offset_y + GUIConstants.COMPONENT_PADDING
self.renderer.draw.text(xy=(version_x, version_y), text=version, font=font, fill=GUIConstants.ACCENT_COLOR, anchor="mt")
if not self.is_screenshot_renderer:
if not self.renderer.is_screenshot_generator:
self.renderer.show_image()
if show_partner_logos:
if not self.is_screenshot_renderer:
if not self.renderer.is_screenshot_generator:
# Hold on the version num for a moment
time.sleep(1)
@@ -136,7 +133,7 @@ class OpeningSplashScreen(LogoScreen):
self.renderer.show_image()
if not self.is_screenshot_renderer:
if not self.renderer.is_screenshot_generator:
# Hold on the splash screen for a moment
time.sleep(2)
+1 -2
View File
@@ -248,12 +248,11 @@ class PowerOptionsView(View):
@dataclass
class RestartView(View):
is_screenshot_renderer: bool = False
def run(self):
from seedsigner.gui.screens.screen import ResetScreen
if not self.is_screenshot_renderer:
if not self.renderer.is_screenshot_generator:
# We don't want the screenshot generator to actually try to do the restart
RestartView.DoResetThread().start()
+3 -3
View File
@@ -285,8 +285,8 @@ def generate_screenshots(locale):
screenshot_sections = {
"Main Menu Views": [
ScreenshotConfig(OpeningSplashView, dict(is_screenshot_renderer=True, force_partner_logos=True)),
ScreenshotConfig(OpeningSplashView, dict(is_screenshot_renderer=True, force_partner_logos=False), screenshot_name="OpeningSplashView_no_partner_logos"),
ScreenshotConfig(OpeningSplashView, dict(force_partner_logos=True)),
ScreenshotConfig(OpeningSplashView, dict(force_partner_logos=False), screenshot_name="OpeningSplashView_no_partner_logos"),
ScreenshotConfig(MainMenuView),
ScreenshotConfig(MainMenuView, screenshot_name='MainMenuView_SDCardStateChangeToast_removed', toast_thread=SDCardStateChangeToastManagerThread(action=MicroSD.ACTION__REMOVED, activation_delay=0, duration=0)),
ScreenshotConfig(MainMenuView, screenshot_name='MainMenuView_SDCardStateChangeToast_inserted', toast_thread=SDCardStateChangeToastManagerThread(action=MicroSD.ACTION__INSERTED, activation_delay=0, duration=0)),
@@ -298,7 +298,7 @@ def generate_screenshots(locale):
ScreenshotConfig(MainMenuView, screenshot_name='MainMenuView_DireWarningToast', toast_thread=DireWarningToast("This is a dire warning toast!", activation_delay=0, duration=0)),
ScreenshotConfig(MainMenuView, screenshot_name='MainMenuView_ErrorToast', toast_thread=ErrorToast("This is an error toast!", activation_delay=0, duration=0)),
ScreenshotConfig(PowerOptionsView),
ScreenshotConfig(RestartView, dict(is_screenshot_renderer=True)),
ScreenshotConfig(RestartView),
ScreenshotConfig(PowerOffView),
],
"Seed Views": [
+4
View File
@@ -22,6 +22,10 @@ class ScreenshotRenderer(Renderer):
screenshot_path: str = None
screenshot_filename: str = None
@property
def is_screenshot_generator(self) -> bool:
return True
@classmethod
def configure_instance(cls):
# Instantiate the one and only Renderer instance