diff --git a/screens/setting/dev_screen.py b/screens/setting/dev_screen.py index deb2d17..7fbfaac 100644 --- a/screens/setting/dev_screen.py +++ b/screens/setting/dev_screen.py @@ -1,4 +1,10 @@ -from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton +from pathlib import Path + +from PySide6.QtCore import Qt +from PySide6.QtGui import QFont +from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel + +import build_info def build_dev_screen(on_exit) -> QWidget: @@ -7,6 +13,8 @@ def build_dev_screen(on_exit) -> QWidget: layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(12) + layout.addWidget(_build_persist_toggle()) + hdr = QHBoxLayout() hdr.setContentsMargins(0, 0, 0, 0) hdr.setSpacing(12) @@ -20,3 +28,45 @@ def build_dev_screen(on_exit) -> QWidget: layout.addWidget(exit_btn) layout.addStretch(1) return screen + + +def _build_persist_toggle() -> QWidget: + row = QWidget() + layout = QHBoxLayout(row) + layout.setContentsMargins(12, 6, 12, 6) + layout.setSpacing(12) + + lbl = QLabel("Показывать после перезагрузки") + lbl.setFont(QFont("", 14, 600)) + + btn = QPushButton("Выкл") + btn.setObjectName("SoundToggle") + btn.setCheckable(True) + btn.setChecked(_dev_flag_path().exists()) + btn.setMinimumHeight(40) + btn.setMinimumWidth(110) + btn.setFont(QFont("", 12, 700)) + + def _sync_text(is_checked: bool): + btn.setText("Вкл" if is_checked else "Выкл") + + def _persist_flag(is_checked: bool): + flag_path = _dev_flag_path() + if is_checked: + flag_path.touch(exist_ok=True) + else: + if flag_path.exists(): + flag_path.unlink() + + btn.toggled.connect(_sync_text) + btn.toggled.connect(_persist_flag) + _sync_text(btn.isChecked()) + + layout.addWidget(lbl) + layout.addStretch(1) + layout.addWidget(btn) + return row + + +def _dev_flag_path() -> Path: + return Path(build_info.__file__).resolve().parent / "dev_mode_enable"