From 699c27e3dc801b7c8609df3a78ebaec3ffb77bfc Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 11 May 2025 13:07:55 +0200 Subject: [PATCH] Improve new project creation, and generate new id for sample projects --- novelwriter/core/coretools.py | 53 ++++++++++--------- .../coreTools_ProjectBuilderA_Project.md | 6 +-- .../coreTools_ProjectBuilderB_Project.md | 6 +-- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/novelwriter/core/coretools.py b/novelwriter/core/coretools.py index 815504e2..8c7b7195 100644 --- a/novelwriter/core/coretools.py +++ b/novelwriter/core/coretools.py @@ -416,13 +416,14 @@ class ProjectBuilder: self._path = project.storage.storagePath - lblNewProject = self.tr("New Project") - lblTitlePage = self.tr("Title Page") + lblName = self.tr("New Project") + lblAuthor = self.tr("Author") + lblTitlePage = self.tr("Title Page") # Settings project.data.setUuid(None) - project.data.setName(data.get("name", lblNewProject)) - project.data.setAuthor(data.get("author", "")) + project.data.setName(data.get("name", lblName)) + project.data.setAuthor(data.get("author", lblAuthor)) project.data.setLanguage(CONFIG.guiLocale) project.setDefaultStatusImport() project.session.startSession() @@ -446,18 +447,14 @@ class ProjectBuilder: "\n" ">> {count}: [field:{field}] <<\n" ).format( - author=project.data.author or "None", - address=self.tr("Address"), - title=project.data.name or "None", + author=project.data.author or lblAuthor, + address=self.tr("Address Line"), + title=project.data.name or lblName, by=self.tr("By"), count=self.tr("Word Count"), field=nwStats.WORDS_TEXT, )) - # Create a project structure based on selected root folders - # and a number of chapters and scenes selected in the - # wizard's custom page. - # Create chapters and scenes numChapters = data.get("chapters", 0) numScenes = data.get("scenes", 0) @@ -563,19 +560,7 @@ class ProjectBuilder: return False # Open the copied project and update settings - project = NWProject() - project.openProject(dstPath) - project.data.setUuid("") # Creates a fresh uuid - project.data.setName(data.get("name", "None")) - project.data.setAuthor(data.get("author", "")) - project.data.setSpellCheck(True) - project.data.setSpellLang(None) - project.data.setDoBackup(True) - project.data.setSaveCount(0) - project.data.setAutoCount(0) - project.data.setEditTime(0) - project.saveProject() - project.closeProject() + self._resetProject(dstPath, data.get("name", ""), data.get("author", "")) return True @@ -593,6 +578,7 @@ class ProjectBuilder: if (sample := CONFIG.assetPath("sample.zip")).is_file(): try: shutil.unpack_archive(sample, path) + self._resetProject(path) except Exception as exc: SHARED.error(self.tr("Failed to create a new example project."), exc=exc) return False @@ -605,3 +591,22 @@ class ProjectBuilder: return False return True + + def _resetProject(self, path: Path, name: str = "", author: str = "") -> None: + """Open a project and reset/update its settings.""" + project = NWProject() + project.openProject(path) + project.data.setUuid("") # Creates a fresh uuid + if name: + project.data.setName(name) + if author: + project.data.setAuthor(author) + project.data.setSpellCheck(True) + project.data.setSpellLang(None) + project.data.setDoBackup(True) + project.data.setSaveCount(0) + project.data.setAutoCount(0) + project.data.setEditTime(0) + project.saveProject() + project.closeProject() + return diff --git a/tests/reference/coreTools_ProjectBuilderA_Project.md b/tests/reference/coreTools_ProjectBuilderA_Project.md index d608ae09..359ed670 100644 --- a/tests/reference/coreTools_ProjectBuilderA_Project.md +++ b/tests/reference/coreTools_ProjectBuilderA_Project.md @@ -1,6 +1,6 @@ Jane Doe -Address 1 -Address 2 +Address Line 1 +Address Line 2   @@ -17,7 +17,7 @@ Test Project A **By Jane Doe** -Word Count: 11 +Word Count: 13 # Chapter 1 diff --git a/tests/reference/coreTools_ProjectBuilderB_Project.md b/tests/reference/coreTools_ProjectBuilderB_Project.md index 7f6329f2..e41c9b5d 100644 --- a/tests/reference/coreTools_ProjectBuilderB_Project.md +++ b/tests/reference/coreTools_ProjectBuilderB_Project.md @@ -1,6 +1,6 @@ Jane Doe -Address 1 -Address 2 +Address Line 1 +Address Line 2   @@ -17,7 +17,7 @@ Test Project B **By Jane Doe** -Word Count: 11 +Word Count: 13 * * *