示例#1
0
    def __init__(self, parent=None):
        super(Dice, self).__init__(parent)

        self.application_dir = QCoreApplication.applicationDirPath()

        self.__project = Project(
            self
        )  # used as an empty default project, replaced by load_project()
        self.__desk = None
        self.__settings = None
        self.__home = None
        qmlRegisterType(Project, "DICE", 1, 0, "Project")

        self.__theme = Theme(self)
        self.__memory = MemoryInfo(self)
        self.__error = ErrorHandler(self)
        qmlRegisterType(MemoryInfo, "DICE", 1, 0, "MemoryInfo")
        qmlRegisterType(ErrorHandler, "DICE", 1, 0, "ErrorHandler")
        qmlRegisterType(BasicWrapper, "DICE", 1, 0, "BasicWrapper")
        qmlRegisterType(Camera, "DICE", 1, 0, "Camera")

        self.__app_log_buffer = {}
        self.__app_log_write_interval = 500
        self.__app_log_writer = self.__init_log_writer()

        self.__qml_engine = None
        self.__qml_context = None
        self.__app_window = None
        self.__main_window = None

        self.__core_apps = CoreAppListModel(self)

        qmlRegisterType(CoreApp, "DICE", 1, 0, "CoreApp")
        qmlRegisterType(BasicApp, "DICE", 1, 0, "BasicApp")

        self.executor = ThreadPoolExecutor(
            max_workers=2)  # TODO: set the max_workers from a configuration

        self.core_app_loaded.connect(self.__insert_core_app,
                                     Qt.QueuedConnection)
        self.__app_candidates = None
        self.__current_loading_core_app_index = 0
        self.__load_next_core_app(
        )  # load the first core app in this thread, but the other in the executor