Exemple #1
0
def getProject() -> _ccl.MaybeCancelled[Project]:
    createOpenMaybeCancelled = _askUserWhetherToCreateNewProjectOrOpenExisting(
    )

    while not _ccl.isCancelled(createOpenMaybeCancelled):
        createOpen = _ccl.value(createOpenMaybeCancelled)

        projectMaybeCancelled = _getProjectInternal(createOpen)
        if not _ccl.isCancelled(projectMaybeCancelled):
            project = _ccl.value(projectMaybeCancelled)
            return _tp.cast(Project,
                            project)  # Don't know why mypy requires this cast

        createOpenMaybeCancelled = _askUserWhetherToCreateNewProjectOrOpenExisting(
        )

    return _ccl.CANCELLED
Exemple #2
0
def getCreateProject(
    startingDirectoryPath: _tp.Optional[_pl.Path] = None
) -> _ccl.MaybeCancelled[CreateProject]:
    projectFolderPathMaybeCancelled = getExistingEmptyDirectory(
        startingDirectoryPath)
    if _ccl.isCancelled(projectFolderPathMaybeCancelled):
        return _ccl.CANCELLED
    projectFolderPath = _ccl.value(projectFolderPathMaybeCancelled)

    jsonFilePath = projectFolderPath / f"{projectFolderPath.name}.json"

    return CreateProject(jsonFilePath)
Exemple #3
0
def main():
    arguments = args.getArgsOrExit()

    logger = log.setup_custom_logger("root", arguments.logLevel)
    app = QApplication(sys.argv)
    app.setApplicationName("Diagram Creator")

    maybeCancelled = _prj.getProject()
    if _ccl.isCancelled(maybeCancelled):
        return
    project = _ccl.value(maybeCancelled)

    form = _MainWindow(logger, project)
    form.showMaximized()
    form.show()
    form.ensureSettingsExist()
    form.loadTrnsysPath()

    tracer = trc.createTracer(arguments.shallTrace)
    tracer.run(lambda: app.exec())
Exemple #4
0
    def openFile(self):
        self.logger.info("Opening diagram")
        qmb = QMessageBox()
        qmb.setText(
            "Are you sure you want to open another project? Unsaved progress on the current one will be lost."
        )
        qmb.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel)
        qmb.setDefaultButton(QMessageBox.Cancel)
        ret = qmb.exec()

        if ret == QMessageBox.Cancel:
            return

        maybeCancelled = _prj.getLoadOrMigrateProject()
        if _ccl.isCancelled(maybeCancelled):
            return
        project = _ccl.value(maybeCancelled)

        self.centralWidget = self._createDiagramEditor(project)
        self.setCentralWidget(self.centralWidget)
Exemple #5
0
    def copyToNew(self):
        currentProjectFolderPath = _pl.Path(self.projectFolder)

        startingDirectoryPath = currentProjectFolderPath.parent

        maybeCancelled = _prj.getExistingEmptyDirectory(startingDirectoryPath)
        if _ccl.isCancelled(maybeCancelled):
            return
        newProjectFolderPath = _ccl.value(maybeCancelled)

        oldProjectFolderPath = _pl.Path(self.projectFolder)

        self._copyContents(oldProjectFolderPath, newProjectFolderPath)
        newJsonFilePath = self._changeAndGetNewJsonFileName(
            newProjectFolderPath, oldProjectFolderPath)

        loadProject = _prj.LoadProject(newJsonFilePath)

        self.centralWidget = self._createDiagramEditor(loadProject)
        self.setCentralWidget(self.centralWidget)
        self.centralWidget.save(showWarning=False)
Exemple #6
0
    def newDia(self):
        messageBox = QMessageBox()
        messageBox.setText(
            "Are you sure you want to start a new project? Unsaved progress on the current one will be lost."
        )
        messageBox.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel)
        messageBox.setDefaultButton(QMessageBox.Cancel)

        result = messageBox.exec()
        if result == QMessageBox.Cancel:
            return

        startingDirectoryPath = _pl.Path(self.projectFolder).parent

        createProjectMaybeCancelled = _prj.getCreateProject(
            startingDirectoryPath)
        if _ccl.isCancelled(createProjectMaybeCancelled):
            return
        createProject = _ccl.value(createProjectMaybeCancelled)

        self.centralWidget = self._createDiagramEditor(createProject)
        self.setCentralWidget(self.centralWidget)
Exemple #7
0
def getLoadOrMigrateProject(
) -> _ccl.MaybeCancelled[_tp.Union[LoadProject, MigrateProject]]:
    projectFolderPathString, _ = _qtw.QFileDialog.getOpenFileName(
        caption="Open diagram", filter="*.json")
    if not projectFolderPathString:
        return _ccl.CANCELLED
    jsonFilePath = _pl.Path(projectFolderPathString)

    projectFolderPath = jsonFilePath.parent

    containingFolderIsCalledSameAsJsonFile = projectFolderPath.name == jsonFilePath.stem
    ddckFolder = projectFolderPath / "ddck"

    if not containingFolderIsCalledSameAsJsonFile or not ddckFolder.is_dir():
        oldJsonFilePath = jsonFilePath

        messageBox = _qtw.QMessageBox()
        messageBox.setText(
            "The json you are opening does not have a proper project folder environment. "
            "Do you want to continue and create one?")
        messageBox.setStandardButtons(_qtw.QMessageBox.Yes
                                      | _qtw.QMessageBox.Cancel)
        messageBox.setDefaultButton(_qtw.QMessageBox.Cancel)
        result = messageBox.exec()
        if result == _qtw.QMessageBox.Cancel:
            return _ccl.CANCELLED

        maybeCancelled = getExistingEmptyDirectory(
            startingDirectoryPath=projectFolderPath.parent)
        if _ccl.isCancelled(maybeCancelled):
            return _ccl.CANCELLED
        newProjectFolderPath = _ccl.value(maybeCancelled)

        return MigrateProject(oldJsonFilePath, newProjectFolderPath)

    return LoadProject(jsonFilePath)