Add Dispatch_V0.1.1

This commit is contained in:
2026-04-29 08:18:54 +04:00
commit a7ede6ded4
404 changed files with 39167 additions and 0 deletions

118
Dispatch_V0.1.1/main.py Normal file
View File

@@ -0,0 +1,118 @@
# -*- coding: utf-8 -*-
# dispatch/main.py
"""Точка входа независимого приложения Dispatch.
Назначение модуля:
Минимальная процедура запуска отдельного приложения, которое
переиспользует модуль `hub.ticket` без копирования его логики.
Последовательность инициализации:
1. Подготовка диагностики и кодировок до тяжёлых импортов GUI.
2. Создание `QApplication` и применение системной темы.
3. Создание `DispatchMainWindow` и эмиссия текущей темы.
4. Запуск цикла событий `QApplication`.
"""
import sys
from error_logger import install_interpreter_hooks, log_exception, setup_error_logging
def _configure_console_encoding() -> None:
"""Настроить кодировку консоли для корректного вывода кириллицы."""
import os
try:
if sys.platform.startswith("win"):
import ctypes
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleOutputCP(65001)
kernel32.SetConsoleCP(65001)
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8")
if hasattr(sys.stderr, "reconfigure"):
sys.stderr.reconfigure(encoding="utf-8")
os.environ["PYTHONIOENCODING"] = "utf-8"
except Exception as exc:
log_exception(__name__, "_configure_console_encoding", exc)
def _bootstrap_runtime_diagnostics() -> None:
"""Включить журнал и перехват исключений до тяжёлых импортов."""
_configure_console_encoding()
setup_error_logging()
install_interpreter_hooks()
def _setup_theme(app) -> str:
"""Определить системную тему и применить базовую палитру окна."""
from PySide6.QtCore import Qt
from PySide6.QtGui import QColor, QPalette
theme = "dark"
color_scheme = Qt.ColorScheme.Unknown
if hasattr(app.styleHints(), "preferredColorScheme"):
color_scheme = app.styleHints().preferredColorScheme()
if color_scheme == Qt.ColorScheme.Unknown:
window_color = app.palette().color(QPalette.ColorRole.Window)
color_scheme = (
Qt.ColorScheme.Light
if window_color.lightness() >= 128
else Qt.ColorScheme.Dark
)
if color_scheme == Qt.ColorScheme.Dark:
theme = "dark"
palette = app.palette()
palette.setColor(QPalette.ColorRole.Window, QColor("#232323"))
palette.setColor(QPalette.ColorRole.WindowText, Qt.GlobalColor.white)
palette.setColor(QPalette.ColorRole.Base, QColor("#3C3C3C"))
palette.setColor(QPalette.ColorRole.Text, Qt.GlobalColor.white)
palette.setColor(QPalette.ColorRole.Button, Qt.GlobalColor.darkGray)
palette.setColor(QPalette.ColorRole.ButtonText, Qt.GlobalColor.white)
palette.setColor(QPalette.ColorRole.Highlight, QColor("#5B9FFF"))
palette.setColor(QPalette.ColorRole.HighlightedText, Qt.GlobalColor.black)
app.setPalette(palette)
else:
theme = "light"
palette = app.palette()
palette.setColor(QPalette.ColorRole.Window, QColor("#F8F9FB"))
palette.setColor(QPalette.ColorRole.WindowText, QColor("#172B4D"))
palette.setColor(QPalette.ColorRole.Base, QColor("#F8F9FB"))
palette.setColor(QPalette.ColorRole.Text, QColor("#172B4D"))
palette.setColor(QPalette.ColorRole.Button, QColor("#FFFFFF"))
palette.setColor(QPalette.ColorRole.ButtonText, QColor("#172B4D"))
palette.setColor(QPalette.ColorRole.Highlight, QColor("#0C66E4"))
palette.setColor(QPalette.ColorRole.HighlightedText, QColor("#FFFFFF"))
app.setPalette(palette)
return theme
def main() -> None:
"""Запустить независимое приложение Dispatch."""
_bootstrap_runtime_diagnostics()
from PySide6.QtWidgets import QApplication
from gui.theme_bus import theme_bus
from window import DispatchMainWindow
app = QApplication(sys.argv)
app.setStyle("Fusion")
app.setApplicationName("Dispatch")
current_theme = _setup_theme(app)
window = DispatchMainWindow()
theme_bus.theme_changed.emit(current_theme)
window.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()