"""@file app.py @brief Точка входа графического приложения каталогизатора. Собирает QApplication и главное окно. С ключом ``--check`` окно строится, но не показывается: так проверяется собранный exe, где traceback показать некому. """ from __future__ import annotations import sys from pathlib import Path from PySide6.QtCore import Qt from PySide6.QtWidgets import QApplication from .ui.main_window import MainWindow def _set_windows_app_id() -> None: """@brief Закрепляет собственную группу приложения на панели задач Windows.""" if sys.platform != "win32": return try: import ctypes ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID( "SET.Catalogizer") except (AttributeError, OSError): pass def main(argv: list[str] | None = None) -> int: """@brief Запускает окно каталогизатора. @param argv Аргументы без имени программы: путь к папке и/или ``--check``. @return Код выхода приложения. """ argv = list(sys.argv[1:] if argv is None else argv) check = "--check" in argv folders = [a for a in argv if not a.startswith("-")] _set_windows_app_id() QApplication.setHighDpiScaleFactorRoundingPolicy( Qt.HighDpiScaleFactorRoundingPolicy.PassThrough) application = QApplication(sys.argv[:1]) application.setApplicationName("Каталогизатор") application.setOrganizationName("SET") window = MainWindow(Path(folders[0]) if folders else None) if check: # Самопроверка сборки: окно строится целиком и приложение выходит. application.processEvents() titles = [window.tabs.tabText(i) for i in range(window.tabs.count())] print("Каталогизатор: вкладок", len(titles), "-", ", ".join(titles)) return 0 window.show() return application.exec()