From b79f485af05c0c389534edd49ef07d7fdc7a7496 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:11:40 +0100 Subject: [PATCH] Remove the ToC.json file and change the format of the ToC.txt file a little --- nw/constants/constants.py | 1 - nw/core/project.py | 3 +- nw/core/tree.py | 59 +++++++++++++------------- sample/ToC.json | 87 --------------------------------------- sample/ToC.txt | 43 ++++++++++--------- tests/test_project.py | 1 - 6 files changed, 51 insertions(+), 143 deletions(-) delete mode 100644 sample/ToC.json diff --git a/nw/constants/constants.py b/nw/constants/constants.py index e237b662..a32e60c4 100644 --- a/nw/constants/constants.py +++ b/nw/constants/constants.py @@ -59,7 +59,6 @@ class nwFiles(): PROJ_DICT = "wordlist.txt" PROJ_LOCK = "nwProject.lock" TOC_TXT = "ToC.txt" - TOC_JSON = "ToC.json" SESS_STATS = "sessionStats.log" INDEX_FILE = "tagsIndex.json" OPTS_FILE = "guiOptions.json" diff --git a/nw/core/project.py b/nw/core/project.py index b077c53d..f8e45194 100644 --- a/nw/core/project.py +++ b/nw/core/project.py @@ -743,7 +743,7 @@ class NWProject(): """Close the current project and clear all meta data. """ self.optState.saveSettings() - self.projTree.writeToCFiles() + self.projTree.writeToCFile() self._appendSessionStats() self._clearLockFile() self.clearProject() @@ -1480,6 +1480,7 @@ class NWProject(): os.path.join(self.projMeta, "timelineOptions.json"), os.path.join(self.projMeta, "docMergeOptions.json"), os.path.join(self.projMeta, "sessionLogOptions.json"), + os.path.join(self.projPath, "ToC.json"), ] for rmFile in rmList: diff --git a/nw/core/tree.py b/nw/core/tree.py index 2973d462..1b6cdc7c 100644 --- a/nw/core/tree.py +++ b/nw/core/tree.py @@ -139,46 +139,43 @@ class NWTree(): return True - def writeToCFiles(self): - """Write the convenience table of contents files in the root of - the project directory. These files are there to assist the user - if they wish to browse the stored files. + def writeToCFile(self): + """Write the convenience table of contents file in the root of + the project directory. """ - tocText = os.path.join(self.theProject.projPath, nwFiles.TOC_TXT) - tocJson = os.path.join(self.theProject.projPath, nwFiles.TOC_JSON) + tocList = [] + tocLen = 0 + # for tHandle in sorted(self._treeOrder): + for tHandle in self._treeOrder: + tItem = self.__getitem__(tHandle) + if tItem is None: + continue + tFile = tHandle+".nwd" + if os.path.isfile(os.path.join(self.theProject.projContent, tFile)): + tocLine = "%-25s %-9s %-10s %s" % ( + os.path.join("content", tFile), + tItem.itemClass.name, + tItem.itemLayout.name, + tItem.itemName, + ) + tocList.append(tocLine) + tocLen = max(tocLen, len(tocLine)) - jsonData = [] try: # Dump the text + tocText = os.path.join(self.theProject.projPath, nwFiles.TOC_TXT) with open(tocText, mode="w", encoding="utf8") as outFile: outFile.write("\n") - outFile.write(" Table of Contents\n") - outFile.write("===================\n") + outFile.write("Table of Contents\n") + outFile.write("=================\n") outFile.write("\n") - outFile.write(" %-25s %-9s %s\n" % ("File Name", "Class", "Document Label")) - outFile.write("-"*80+"\n") - for tHandle in sorted(self._treeOrder): - tItem = self.__getitem__(tHandle) - if tItem is None: - continue - tFile = tHandle+".nwd" - if os.path.isfile(os.path.join(self.theProject.projContent, tFile)): - outFile.write(" %-25s %-9s %s\n" % ( - os.path.join("content", tFile), - tItem.itemClass.name, - tItem.itemName, - )) - jsonData.append([ - os.path.join("content", tFile), - tItem.itemClass.name, - tItem.itemName, - ]) + outFile.write("%-25s %-9s %-10s %s\n" % ( + "File Name", "Class", "Layout", "Document Label" + )) + outFile.write("-"*tocLen + "\n") + outFile.write("\n".join(tocList)) outFile.write("\n") - # Dump the JSON - with open(tocJson, mode="w+", encoding="utf8") as outFile: - json.dump(jsonData, outFile, indent=2) - except Exception as e: logger.error(str(e)) diff --git a/sample/ToC.json b/sample/ToC.json deleted file mode 100644 index c00f8735..00000000 --- a/sample/ToC.json +++ /dev/null @@ -1,87 +0,0 @@ -[ - [ - "content/14298de4d9524.nwd", - "CHARACTER", - "John Smith" - ], - [ - "content/53b69b83cdafc.nwd", - "NOVEL", - "Title Page" - ], - [ - "content/5eaea4e8cdee8.nwd", - "WORLD", - "Mars" - ], - [ - "content/636b6aa9b697b.nwd", - "NOVEL", - "Making a Scene" - ], - [ - "content/6a2d6d5f4f401.nwd", - "NOVEL", - "Chapter One" - ], - [ - "content/88706ddc78b1b.nwd", - "NOVEL", - "Chapter Two" - ], - [ - "content/8a5deb88c0e97.nwd", - "NOVEL", - "Old File" - ], - [ - "content/96b68994dfa3d.nwd", - "NOVEL", - "A Note on Structure" - ], - [ - "content/974e400180a99.nwd", - "NOVEL", - "Page" - ], - [ - "content/ae7339df26ded.nwd", - "NOVEL", - "We Found John!" - ], - [ - "content/b3e74dbc1f584.nwd", - "WORLD", - "Earth" - ], - [ - "content/b8136a5a774a0.nwd", - "NOVEL", - "Delete Me!" - ], - [ - "content/ba8a28a246524.nwd", - "NOVEL", - "Interlude" - ], - [ - "content/bb2c23b3c42cc.nwd", - "CHARACTER", - "Jane Smith" - ], - [ - "content/bc0cbd2a407f3.nwd", - "NOVEL", - "Another Scene" - ], - [ - "content/edca4be2fcaf8.nwd", - "NOVEL", - "Part One" - ], - [ - "content/f1471bef9f2ae.nwd", - "WORLD", - "Space" - ] -] \ No newline at end of file diff --git a/sample/ToC.txt b/sample/ToC.txt index 92237107..b106e892 100644 --- a/sample/ToC.txt +++ b/sample/ToC.txt @@ -1,24 +1,23 @@ - Table of Contents -=================== - - File Name Class Document Label --------------------------------------------------------------------------------- - content/14298de4d9524.nwd CHARACTER John Smith - content/53b69b83cdafc.nwd NOVEL Title Page - content/5eaea4e8cdee8.nwd WORLD Mars - content/636b6aa9b697b.nwd NOVEL Making a Scene - content/6a2d6d5f4f401.nwd NOVEL Chapter One - content/88706ddc78b1b.nwd NOVEL Chapter Two - content/8a5deb88c0e97.nwd NOVEL Old File - content/96b68994dfa3d.nwd NOVEL A Note on Structure - content/974e400180a99.nwd NOVEL Page - content/ae7339df26ded.nwd NOVEL We Found John! - content/b3e74dbc1f584.nwd WORLD Earth - content/b8136a5a774a0.nwd NOVEL Delete Me! - content/ba8a28a246524.nwd NOVEL Interlude - content/bb2c23b3c42cc.nwd CHARACTER Jane Smith - content/bc0cbd2a407f3.nwd NOVEL Another Scene - content/edca4be2fcaf8.nwd NOVEL Part One - content/f1471bef9f2ae.nwd WORLD Space +Table of Contents +================= +File Name Class Layout Document Label +--------------------------------------------------------------------- +content/53b69b83cdafc.nwd NOVEL TITLE Title Page +content/974e400180a99.nwd NOVEL PAGE Page +content/edca4be2fcaf8.nwd NOVEL PARTITION Part One +content/6a2d6d5f4f401.nwd NOVEL CHAPTER Chapter One +content/636b6aa9b697b.nwd NOVEL SCENE Making a Scene +content/bc0cbd2a407f3.nwd NOVEL SCENE Another Scene +content/ba8a28a246524.nwd NOVEL UNNUMBERED Interlude +content/96b68994dfa3d.nwd NOVEL NOTE A Note on Structure +content/88706ddc78b1b.nwd NOVEL CHAPTER Chapter Two +content/ae7339df26ded.nwd NOVEL SCENE We Found John! +content/14298de4d9524.nwd CHARACTER NOTE John Smith +content/bb2c23b3c42cc.nwd CHARACTER NOTE Jane Smith +content/b3e74dbc1f584.nwd WORLD NOTE Earth +content/f1471bef9f2ae.nwd WORLD NOTE Space +content/5eaea4e8cdee8.nwd WORLD NOTE Mars +content/8a5deb88c0e97.nwd NOVEL SCENE Old File +content/b8136a5a774a0.nwd NOVEL SCENE Delete Me! diff --git a/tests/test_project.py b/tests/test_project.py index b8df3c0e..5ed9d261 100644 --- a/tests/test_project.py +++ b/tests/test_project.py @@ -627,7 +627,6 @@ def testProjectOldFormat(nwDummy, nwOldProj): # Check that new files have been created assert os.path.isfile(os.path.join(nwOldProj, "meta", "guiOptions.json")) assert os.path.isfile(os.path.join(nwOldProj, "meta", "sessionStats.log")) - assert os.path.isfile(os.path.join(nwOldProj, "ToC.json")) assert os.path.isfile(os.path.join(nwOldProj, "ToC.txt")) @pytest.mark.project