Source code for simvx.core.file_state

"""File lifecycle signals shared between Editor and IDE state objects."""


from __future__ import annotations

import logging

from .descriptors import Signal

log = logging.getLogger(__name__)


[docs] class FileStateMixin: """Mixin providing file lifecycle signals for editor/IDE state objects. Both EditorState and IDEState inherit from this to share the same signal interface. When the IDE is embedded in the editor, IDEState can accept external Signal instances to share with EditorState, eliminating the need for manual signal forwarding. """ def _init_file_signals( self, *, file_opened: Signal | None = None, file_closed: Signal | None = None, file_saved: Signal | None = None, active_file_changed: Signal | None = None, ): """Initialize file lifecycle signals, optionally sharing external instances.""" self.file_opened = file_opened or Signal() self.file_closed = file_closed or Signal() self.file_saved = file_saved or Signal() self.active_file_changed = active_file_changed or Signal()