def act(self): logging.info("Entered FindProject state.") settings_service = locator.get_static("SettingsService") if settings_service.has_cached_project(): locator.get_static("StateMachine").transition("Loading") else: locator.get_static("StateMachine").transition("SelectProject")
def run(self): locator.clear_scoped_services() try: locator.register_scoped("Driver", Driver(self.project)) locator.register_scoped("OpenFilesService", OpenFilesService(self.project.filesystem)) locator.register_scoped("ModuleDataService", ModuleDataService()) locator.register_scoped("ModuleService", ModuleService(self.project)) locator.register_scoped("CommonModuleService", CommonModuleService()) locator.register_scoped("DedicatedEditorsService", DedicatedEditorsService(self.project.game)) locator.get_scoped("ModuleService").load_files_and_generate_model() locator.get_static("SettingsService").save(self.project) self.over.emit() except Exception as e: logging.exception(e) self.failed.emit()
def __init__(self): super().__init__() self.setupUi(self) self.setWindowTitle("Project Select") self.setWindowIcon(QIcon("paragon.ico")) self.create_project_dialog = None self.current_project = None settings_service = locator.get_static("SettingsService") self.model: ProjectModel = settings_service.get_project_model() self.table_view.setModel(self.model) self.table_view.verticalHeader().hide() self.table_view.setSelectionBehavior(QTableView.SelectRows) self.table_view.horizontalHeader().setSectionResizeMode( 0, QHeaderView.Stretch) self.table_view.setEditTriggers(QAbstractItemView.NoEditTriggers) self.remember_check_box.setChecked( settings_service.should_remember_last_project()) self.action_create.triggered.connect(self._on_create_project_clicked) self.action_remove.triggered.connect(self._on_remove_clicked) self.action_move_up.triggered.connect(self._on_move_up_clicked) self.action_move_down.triggered.connect(self._on_move_down_clicked) self.remember_check_box.stateChanged.connect( self._on_remember_project_checked) self.table_view.activated.connect(self._on_project_activated) self.table_view.selectionModel().currentRowChanged.connect( self._on_selected_row_changed)
def _populate_themes_menu(self): self.theme_menu = self.menuOptions.addMenu("Theme") current_theme = locator.get_static("SettingsService").get_theme() for theme in QStyleFactory.keys(): action = self.theme_menu.addAction(theme) action.setCheckable(True) if theme == current_theme: action.setChecked(True) action.setActionGroup(self.theme_action_group) action.changed.connect( lambda a=action, t=theme: self._on_theme_changed(a, t))
def closeEvent(self, event: QtGui.QCloseEvent): locator.get_static("SettingsService").save_settings() event.accept()
def _on_theme_changed(self, action: QAction, new_theme: str): if action.isChecked(): locator.get_static("SettingsService").set_theme(new_theme) self.theme_info_dialog.exec_()
def reload_project(self): logging.info("Reload project triggered.") self.proxy_model.setSourceModel(None) self.hide() state_machine = locator.get_static("StateMachine") state_machine.transition("Loading")
def close(self): self.proxy_model.setSourceModel(None) self.hide() state_machine = locator.get_static("StateMachine") state_machine.transition("SelectProject")
def closeEvent(self, event: QtGui.QCloseEvent): locator.get_static("SettingsService").save_settings() if self.create_project_dialog: self.create_project_dialog.hide() event.accept()
def apply(self, _: State, ending_state: State): loading_state = typing.cast(LoadingState, ending_state) settings_service: SettingsService = locator.get_static( "SettingsService") loading_state.project = settings_service.get_cached_project()
def save_selected_items_tree(self): project = locator.get_scoped("Driver").get_project() if locator.get_static("SettingsService").get_remember_exports(): project.export_selections = self._recursive_get_selected_items_tree(self.invisibleRootItem())
def restore_selections_from_project(self): project = locator.get_scoped("Driver").get_project() if project.export_selections and locator.get_static("SettingsService").get_remember_exports(): self._recursive_restore_selections_from_project(self.invisibleRootItem(), project.export_selections)
def _on_remember_project_checked(new_state: int): locator.get_static("SettingsService").set_remember_last_project( new_state != 0)
def _on_project_activated(self, index: QModelIndex): true_index = self.model.index(index.row(), 0) item = self.model.itemFromIndex(true_index) self.current_project = item.data() self.hide() locator.get_static("StateMachine").transition("Loading")
def _on_create_project_accepted(self): if self.create_project_dialog: self.current_project = self.create_project_dialog.project self.model.add_project(self.current_project) self.hide() locator.get_static("StateMachine").transition("Loading")
def _set_remember_checkbox_state_from_settings(self): settings_service = locator.get_static("SettingsService") if settings_service.get_remember_exports(): self.remember_selections_checkbox.setCheckState(QtCore.Qt.Checked)
def _on_remember_selections_state_changed(state: int): should_remember = state == QtCore.Qt.Checked locator.get_static("SettingsService").set_remember_exports( should_remember)
def _on_loading_success(self): self.progress_dialog.hide() locator.get_static("StateMachine").transition("Main")
def _load_theme_from_settings(app: QApplication): theme = locator.get_static("SettingsService").get_theme() if theme and theme in QStyleFactory.keys(): app.setStyle(theme)
def _on_error_dialog_closed(_result): locator.get_static("StateMachine").transition("SelectProject")