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 1/4] 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 From 82a5fdb796989bd7e43b6741e174ef152085556c Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:17:06 +0100 Subject: [PATCH 2/4] Updated docs --- docs/source/tech_technical.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/tech_technical.rst b/docs/source/tech_technical.rst index 7298f904..50209ecc 100644 --- a/docs/source/tech_technical.rst +++ b/docs/source/tech_technical.rst @@ -49,8 +49,8 @@ and the file extension ``.nwd``. If you wish to find the physical location of a file in the project, you can either look it up in the project XML file, select :guilabel:`Show File Details` from the :guilabel:`Document` menu when -having the document open, or look in one of the ``ToC`` files in the root of the project folder. -The ``ToC`` files have a list of all document files in the project and where they are saved. +having the document open, or look in the ``ToC.txt`` file in the root of the project folder. +The ``ToC.txt`` file has a list of all document files in the project and where they are saved. The reason for this cryptic file naming is to avoid issues with file naming conventions and restrictions on different operating systems, and also to have a file name that does not depend on From aed0af8772e55ae09e53779658e51911d7faf630 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:19:28 +0100 Subject: [PATCH 3/4] Remove commented out code --- nw/core/tree.py | 1 - 1 file changed, 1 deletion(-) diff --git a/nw/core/tree.py b/nw/core/tree.py index 1b6cdc7c..c150c8e5 100644 --- a/nw/core/tree.py +++ b/nw/core/tree.py @@ -145,7 +145,6 @@ class NWTree(): """ tocList = [] tocLen = 0 - # for tHandle in sorted(self._treeOrder): for tHandle in self._treeOrder: tItem = self.__getitem__(tHandle) if tItem is None: From bc87337b3500389113cd0c3b79c7685bdf5c29fe Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Tue, 3 Nov 2020 21:35:51 +0100 Subject: [PATCH 4/4] Remove unused import --- nw/core/tree.py | 1 - 1 file changed, 1 deletion(-) diff --git a/nw/core/tree.py b/nw/core/tree.py index c150c8e5..ac3ab45c 100644 --- a/nw/core/tree.py +++ b/nw/core/tree.py @@ -26,7 +26,6 @@ """ import logging -import json import os from lxml import etree