#!/usr/bin/env python3 import os import sys import signal from KI18n import KLocalizedContext, KLocalizedString from PySide6.QtGui import QGuiApplication from PySide6.QtCore import QUrl, QByteArray from PySide6.QtQml import QQmlApplicationEngine, qmlRegisterType from kodereviewer.models.file import FileModel from kodereviewer.network_manager import NetworkManager from kodereviewer.models import CommentModel, LabelModel, LineModel, PullRequestModel, ProjectModel import logging from rich.logging import RichHandler FORMAT = "%(message)s" logging.basicConfig( level="INFO", format=FORMAT, datefmt="[%X]", handlers=[RichHandler()] ) def main(): """Initializes and manages the application execution""" app = QGuiApplication(sys.argv) engine = QQmlApplicationEngine() # KLocalizedString::setApplicationDomain("tutorial"); KLocalizedString.setApplicationDomain(QByteArray(b"kodereviewer")) app.setOrganizationName("Deprecated") app.setOrganizationDomain("deprecated.org") app.setApplicationName("Kode Reviewer") app.setDesktopFileName("kodereviewer") """Needed to close the app with Ctrl+C""" signal.signal(signal.SIGINT, signal.SIG_DFL) """Needed to get proper KDE style outside of Plasma""" if not os.environ.get("QT_QUICK_CONTROLS_STYLE"): os.environ["QT_QUICK_CONTROLS_STYLE"] = "org.kde.desktop" qmlRegisterType(ProjectModel, "org.deprecated.kodereviewer", 1, 0, "ProjectModel") qmlRegisterType(CommentModel, "org.deprecated.kodereviewer", 1, 0, "CommentModel") qmlRegisterType(FileModel, "org.deprecated.kodereviewer", 1, 0, "FileModel") qmlRegisterType(LabelModel, "org.deprecated.kodereviewer", 1, 0, "LabelModel") qmlRegisterType(LineModel, "org.deprecated.kodereviewer", 1, 0, "LineModel") qmlRegisterType(PullRequestModel, "org.deprecated.kodereviewer", 1, 0, "PullRequestModel") qmlRegisterType(NetworkManager, "org.deprecated.kodereviewer", 1, 0, "NetworkManager") localized_context = KLocalizedContext() engine.rootContext().setContextObject(localized_context) base_path = os.path.abspath(os.path.dirname(__file__)) engine.addImportPath(f"file://{base_path}/qml") engine.addImportPath(f"file://{base_path}/qml/delegates") url = QUrl(f"file://{base_path}/qml/Main.qml") engine.load(url) if len(engine.rootObjects()) == 0: quit() app.exec() if __name__ == "__main__": main()