Merge pull request #16 from vkbo/improvements

Improvements
This commit is contained in:
Veronica K. Berglyd Olsen
2019-05-19 15:10:59 +02:00
committed by GitHub
4 changed files with 66 additions and 41 deletions
+9 -9
View File
@@ -38,15 +38,15 @@ class nwItemClass(Enum):
class nwItemLayout(Enum):
NO_LAYOUT = 0
TITLE = 1
BOOK = 2
PAGE = 3
PARTITION = 4
UNNUMBERED = 5
CHAPTER = 6
SCENE = 7
NOTE = 8
NO_LAYOUT = 0
TITLE = 1
BOOK = 2
PAGE = 3
PARTITION = 4
UNNUMBERED = 5
CHAPTER = 6
SCENE = 7
NOTE = 8
# END Enum nwItemLayout
+2 -6
View File
@@ -92,11 +92,8 @@ class GuiDocTree(QTreeWidget):
def newTreeItem(self, itemType, itemClass):
pHandle = self.getSelectedHandle()
if pHandle is None:
self.makeAlert("No valid parent item selected", nwAlert.ERROR)
return False
if itemClass is None:
if itemClass is None and pHandle is not None:
itemClass = self.theProject.getItem(pHandle).itemClass
if itemClass is None:
self.makeAlert("Failed to find an appropriate item class for item %s" % pHandle, nwAlert.BUG)
@@ -296,8 +293,7 @@ class GuiDocTree(QTreeWidget):
def buildTree(self):
self.clear()
for tHandle in self.theProject.treeOrder:
nwItem = self.theProject.projTree[tHandle]
for nwItem in self.theProject.getProjectItems():
self._addTreeItem(nwItem)
return True
+41
View File
@@ -368,6 +368,47 @@ class NWProject():
logger.error("No tree item with handle %s" % str(tHandle))
return None
def getProjectItems(self):
"""This function is called from the tree view when building the tree. Each item in the
project is returned in the order saved in the project file, but first it checks that it has
a parent item already sent to the tree.
"""
sentItems = []
iterItems = self.treeOrder.copy()
n = 0
nMax = len(iterItems)
while n < nMax:
tHandle = iterItems[n]
tItem = self.getItem(tHandle)
n += 1
if n > 10000:
return # Just in case
if tItem is None:
# Technically a bug since treeOrder is built from the same data as projTree
continue
elif tItem.parHandle is None:
# Item is a root, or already been identified as an orphaned item
sentItems.append(tHandle)
yield tItem
elif tItem.parHandle in sentItems:
# Item's parent has been sent, so all is fine
sentItems.append(tHandle)
yield tItem
elif tItem.parHandle in iterItems:
# Item's parent exists, but hasn't been sent yet, so add it again to the end
logger.warning("Item %s found before its parent" % tHandle)
iterItems.append(tHandle)
nMax = len(iterItems)
else:
# Item is orphaned
logger.error("Item %s has no parent in current tree" % tHandle)
tItem.setParent(None)
yield tItem
##
# Class Methods
##
def findRootItem(self, theClass):
for aRoot in self.treeRoots:
if theClass == self.projTree[aRoot].itemClass:
+14 -26
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="0.1.3" fileVersion="1.0" timeStamp="2019-05-18 20:51:40">
<novelWriterXML appVersion="0.1.3" fileVersion="1.0" timeStamp="2019-05-19 14:27:22">
<project>
<name>Sample Project</name>
<title>Sample Project</title>
@@ -8,10 +8,10 @@
</project>
<settings>
<spellCheck>True</spellCheck>
<lastEdited>636b6aa9b697b</lastEdited>
<lastEdited>4cd0bd12b087d</lastEdited>
<lastViewed>636b6aa9b697b</lastViewed>
</settings>
<content count="15">
<content count="14">
<item handle="7031beac91f75" order="0" parent="None">
<name>Novel</name>
<type>ROOT</type>
@@ -112,55 +112,43 @@
<paraCount>1</paraCount>
<cursorPos>0</cursorPos>
</item>
<item handle="73eee34351f85" order="2" parent="None">
<item handle="15c4492bd5107" order="2" parent="None">
<name>Locations</name>
<type>ROOT</type>
<class>WORLD</class>
<status>0</status>
<expanded>True</expanded>
</item>
<item handle="b3e74dbc1f584" order="0" parent="73eee34351f85">
<item handle="b3e74dbc1f584" order="0" parent="15c4492bd5107">
<name>Earth</name>
<type>FILE</type>
<class>WORLD</class>
<status>0</status>
<expanded>False</expanded>
<layout>NOTE</layout>
<charCount>66</charCount>
<wordCount>13</wordCount>
<paraCount>1</paraCount>
<charCount>0</charCount>
<wordCount>0</wordCount>
<paraCount>0</paraCount>
<cursorPos>0</cursorPos>
</item>
<item handle="f75dac270c2a7" order="3" parent="None">
<item handle="98acd8c76c93a" order="3" parent="None">
<name>Trash</name>
<type>TRASH</type>
<class>TRASH</class>
<status>0</status>
<expanded>True</expanded>
</item>
<item handle="4cd0bd12b087d" order="0" parent="f75dac270c2a7">
<name>Orphaned File 1</name>
<item handle="4cd0bd12b087d" order="0" parent="98acd8c76c93a">
<name>Orphaned File 2</name>
<type>FILE</type>
<class>NO_CLASS</class>
<status>0</status>
<expanded>False</expanded>
<layout>NO_LAYOUT</layout>
<charCount>0</charCount>
<wordCount>0</wordCount>
<charCount>14</charCount>
<wordCount>3</wordCount>
<paraCount>0</paraCount>
<cursorPos>0</cursorPos>
</item>
<item handle="879437bde105e" order="1" parent="f75dac270c2a7">
<name>New File</name>
<type>FILE</type>
<class>CHARACTER</class>
<status>0</status>
<expanded>False</expanded>
<layout>NOTE</layout>
<charCount>0</charCount>
<wordCount>0</wordCount>
<paraCount>0</paraCount>
<cursorPos>0</cursorPos>
<cursorPos>1</cursorPos>
</item>
</content>
</novelWriterXML>