Source code for simvx.editor.about_dialog

"""About dialog for the SimVX editor — minimal modal overlay."""

from simvx.core import Control

_W = 360.0
_H = 160.0
_BG = (0.16, 0.16, 0.18, 1.0)
_BORDER = (0.35, 0.35, 0.38, 1.0)
_OVERLAY = (0.0, 0.0, 0.0, 0.4)
_TEXT = (0.92, 0.92, 0.94, 1.0)
_DIM = (0.55, 0.55, 0.58, 1.0)


[docs] class AboutDialog(Control): """Minimal modal about dialog for the SimVX editor.""" def __init__(self, **kwargs): super().__init__(**kwargs) self.visible = False self.z_index = 2000
[docs] def show_dialog(self): self.visible = True self.set_focus() if self._tree: self._tree.push_popup(self)
[docs] def hide_dialog(self): if not self.visible: return self.visible = False self.release_focus() if self._tree: self._tree.pop_popup(self)
[docs] def is_popup_point_inside(self, point) -> bool: return self.visible
[docs] def popup_input(self, event): if not self.visible: return if hasattr(event, "key") and event.key and event.pressed: if event.key in ("escape", "enter"): self.hide_dialog() return if getattr(event, "button", 0) == 1 and event.pressed: self.hide_dialog()
[docs] def dismiss_popup(self): self.hide_dialog()
[docs] def draw(self, renderer): pass
[docs] def draw_popup(self, renderer): if not self.visible: return ss = self._get_parent_size() sw, sh = ss.x, ss.y renderer.draw_rect((0, 0), (sw, sh), colour=_OVERLAY, filled=True) dx = (sw - _W) / 2 dy = (sh - _H) / 2 renderer.draw_rect((dx, dy), (_W, _H), colour=_BG, filled=True) renderer.draw_rect((dx, dy), (_W, _H), colour=_BORDER) renderer.draw_text("SimVX Engine", (dx + 20, dy + 18), colour=_TEXT, scale=1.3) renderer.draw_text( "A Godot-inspired game engine in pure Python.", (dx + 20, dy + 54), colour=_DIM, scale=0.85, ) renderer.draw_text( "Node-based scene hierarchy with Vulkan rendering.", (dx + 20, dy + 76), colour=_DIM, scale=0.85, ) renderer.draw_text( "GPU-driven forward renderer, multi-draw indirect.", (dx + 20, dy + 98), colour=_DIM, scale=0.85, ) renderer.draw_text( "Click or press Escape to close.", (dx + 20, dy + 130), colour=_DIM, scale=0.75, )