Update new item functions in project class

This commit is contained in:
Veronica Berglyd Olsen
2022-04-16 20:55:54 +02:00
parent da13fbff08
commit 61f5425662
6 changed files with 45 additions and 43 deletions
+22 -3
View File
@@ -294,14 +294,33 @@ class NWItem():
stIcon = self.theProject.importItems.icon(self._import) stIcon = self.theProject.importItems.icon(self._import)
return stName, stIcon return stName, stIcon
def setImportStatus(self, theLabel): def setImportStatus(self, value):
"""Update the importance or status value based on class. This is """Update the importance or status value based on class. This is
a wrapper setter for setStatus and setImport. a wrapper setter for setStatus and setImport.
""" """
if self._class in nwLists.CLS_NOVEL: if self._class in nwLists.CLS_NOVEL:
self.setStatus(theLabel) self.setStatus(value)
else: else:
self.setImport(theLabel) self.setImport(value)
return
def setClassDefaults(self, itemClass):
"""Set the default values based on the item's class and the
project settings.
"""
self.setClass(itemClass)
if self._class in nwLists.CLS_NOVEL:
self._layout = nwItemLayout.DOCUMENT
else:
self._layout = nwItemLayout.NOTE
if self._status is None:
self.setStatus("New") # This forces a default value lookup
if self._import is None:
self.setImport("New") # This forces a default value lookup
return return
## ##
+16 -27
View File
@@ -127,36 +127,26 @@ class NWProject():
newItem.setName(rootName) newItem.setName(rootName)
newItem.setType(nwItemType.ROOT) newItem.setType(nwItemType.ROOT)
newItem.setClass(rootClass) newItem.setClass(rootClass)
newItem.setStatus(0)
self.projTree.append(None, None, newItem) self.projTree.append(None, None, newItem)
self.projTree.updateItemData(newItem.itemHandle) self.projTree.updateItemData(newItem.itemHandle)
return newItem.itemHandle return newItem.itemHandle
def newFolder(self, folderName, folderClass, pHandle): def newFolder(self, folderName, pHandle):
"""Add a new folder with a given name and class and parent item. """Add a new folder with a given name and parent item.
""" """
newItem = NWItem(self) newItem = NWItem(self)
newItem.setName(folderName) newItem.setName(folderName)
newItem.setType(nwItemType.FOLDER) newItem.setType(nwItemType.FOLDER)
newItem.setClass(folderClass)
newItem.setStatus(0)
self.projTree.append(None, pHandle, newItem) self.projTree.append(None, pHandle, newItem)
self.projTree.updateItemData(newItem.itemHandle) self.projTree.updateItemData(newItem.itemHandle)
return newItem.itemHandle return newItem.itemHandle
def newFile(self, fileName, fileClass, pHandle): def newFile(self, fileName, pHandle):
"""Add a new file with a given name and class, and set a layout """Add a new file with a given name and parent item.
based on the class. DOCUMENT for NOVEL, otherwise NOTE.
""" """
newItem = NWItem(self) newItem = NWItem(self)
newItem.setName(fileName) newItem.setName(fileName)
newItem.setType(nwItemType.FILE) newItem.setType(nwItemType.FILE)
if fileClass == nwItemClass.NOVEL:
newItem.setLayout(nwItemLayout.DOCUMENT)
else:
newItem.setLayout(nwItemLayout.NOTE)
newItem.setClass(fileClass)
newItem.setStatus(0)
self.projTree.append(None, pHandle, newItem) self.projTree.append(None, pHandle, newItem)
self.projTree.updateItemData(newItem.itemHandle) self.projTree.updateItemData(newItem.itemHandle)
return newItem.itemHandle return newItem.itemHandle
@@ -286,10 +276,10 @@ class NWProject():
xHandle[2] = self.newRoot(self.tr("Plot"), nwItemClass.PLOT) xHandle[2] = self.newRoot(self.tr("Plot"), nwItemClass.PLOT)
xHandle[3] = self.newRoot(self.tr("Characters"), nwItemClass.CHARACTER) xHandle[3] = self.newRoot(self.tr("Characters"), nwItemClass.CHARACTER)
xHandle[4] = self.newRoot(self.tr("World"), nwItemClass.WORLD) xHandle[4] = self.newRoot(self.tr("World"), nwItemClass.WORLD)
xHandle[5] = self.newFile(self.tr("Title Page"), nwItemClass.NOVEL, xHandle[1]) xHandle[5] = self.newFile(self.tr("Title Page"), xHandle[1])
xHandle[6] = self.newFolder(self.tr("New Chapter"), nwItemClass.NOVEL, xHandle[1]) xHandle[6] = self.newFolder(self.tr("New Chapter"), xHandle[1])
xHandle[7] = self.newFile(self.tr("New Chapter"), nwItemClass.NOVEL, xHandle[6]) xHandle[7] = self.newFile(self.tr("New Chapter"), xHandle[6])
xHandle[8] = self.newFile(self.tr("New Scene"), nwItemClass.NOVEL, xHandle[6]) xHandle[8] = self.newFile(self.tr("New Scene"), xHandle[6])
aDoc = NWDoc(self, xHandle[5]) aDoc = NWDoc(self, xHandle[5])
aDoc.writeDocument(titlePage) aDoc.writeDocument(titlePage)
@@ -312,8 +302,7 @@ class NWProject():
self.newRoot(trConst(nwLabels.CLASS_NAME[newRoot]), newRoot) self.newRoot(trConst(nwLabels.CLASS_NAME[newRoot]), newRoot)
# Create a title page # Create a title page
tHandle = self.newFile(self.tr("Title Page"), nwItemClass.NOVEL, nHandle) tHandle = self.newFile(self.tr("Title Page"), nHandle)
self.projTree.setFileItemLayout(tHandle, nwItemLayout.DOCUMENT)
aDoc = NWDoc(self, tHandle) aDoc = NWDoc(self, tHandle)
aDoc.writeDocument(titlePage) aDoc.writeDocument(titlePage)
@@ -329,10 +318,9 @@ class NWProject():
chTitle = self.tr("Chapter {0}").format(f"{ch+1:d}") chTitle = self.tr("Chapter {0}").format(f"{ch+1:d}")
pHandle = nHandle pHandle = nHandle
if chFolders: if chFolders:
pHandle = self.newFolder(chTitle, nwItemClass.NOVEL, nHandle) pHandle = self.newFolder(chTitle, nHandle)
cHandle = self.newFile(chTitle, nwItemClass.NOVEL, pHandle) cHandle = self.newFile(chTitle, pHandle)
self.projTree.setFileItemLayout(cHandle, nwItemLayout.DOCUMENT)
aDoc = NWDoc(self, cHandle) aDoc = NWDoc(self, cHandle)
aDoc.writeDocument("## %s\n\n" % chTitle) aDoc.writeDocument("## %s\n\n" % chTitle)
@@ -341,7 +329,7 @@ class NWProject():
if numScenes > 0: if numScenes > 0:
for sc in range(numScenes): for sc in range(numScenes):
scTitle = self.tr("Scene {0}").format(f"{ch+1:d}.{sc+1:d}") scTitle = self.tr("Scene {0}").format(f"{ch+1:d}.{sc+1:d}")
sHandle = self.newFile(scTitle, nwItemClass.NOVEL, pHandle) sHandle = self.newFile(scTitle, pHandle)
aDoc = NWDoc(self, sHandle) aDoc = NWDoc(self, sHandle)
aDoc.writeDocument("### %s\n\n" % scTitle) aDoc.writeDocument("### %s\n\n" % scTitle)
@@ -350,7 +338,7 @@ class NWProject():
elif numScenes > 0: elif numScenes > 0:
for sc in range(numScenes): for sc in range(numScenes):
scTitle = self.tr("Scene {0}").format(f"{sc+1:d}") scTitle = self.tr("Scene {0}").format(f"{sc+1:d}")
sHandle = self.newFile(scTitle, nwItemClass.NOVEL, nHandle) sHandle = self.newFile(scTitle, nHandle)
aDoc = NWDoc(self, sHandle) aDoc = NWDoc(self, sHandle)
aDoc.writeDocument("### %s\n\n" % scTitle) aDoc.writeDocument("### %s\n\n" % scTitle)
@@ -480,8 +468,9 @@ class NWProject():
# documents and one for project notes. Introduced in # documents and one for project notes. Introduced in
# version 1.5. # version 1.5.
# 1.4 : Introduces a more compact format for storing items. All # 1.4 : Introduces a more compact format for storing items. All
# settings aside from name are now attributes. Introduced # settings aside from name are now attributes. This format
# in version 1.7. # also changes the way satus and importance labels are
# stored and handled. Introduced in version 1.7.
if fileVersion not in ("1.0", "1.1", "1.2", "1.3", "1.4"): if fileVersion not in ("1.0", "1.1", "1.2", "1.3", "1.4"):
self.theParent.makeAlert(self.tr( self.theParent.makeAlert(self.tr(
+1 -1
View File
@@ -222,7 +222,7 @@ class NWTree():
for _ in range(nwConst.MAX_DEPTH + 1): for _ in range(nwConst.MAX_DEPTH + 1):
if iItem.itemParent is None: if iItem.itemParent is None:
tItem.setRoot(iItem.itemHandle) tItem.setRoot(iItem.itemHandle)
tItem.setClass(iItem.itemClass) tItem.setClassDefaults(iItem.itemClass)
return True return True
else: else:
iItem = self.__getitem__(iItem.itemParent) iItem = self.__getitem__(iItem.itemParent)
+1 -1
View File
@@ -130,7 +130,7 @@ class GuiDocMerge(QDialog):
self.theParent.makeAlert(self.tr("Internal error."), nwAlert.ERROR) self.theParent.makeAlert(self.tr("Internal error."), nwAlert.ERROR)
return False return False
nHandle = self.theProject.newFile(srcItem.itemName, srcItem.itemClass, srcItem.itemParent) nHandle = self.theProject.newFile(srcItem.itemName, srcItem.itemParent)
newItem = self.theProject.projTree[nHandle] newItem = self.theProject.projTree[nHandle]
newItem.setStatus(srcItem.itemStatus) newItem.setStatus(srcItem.itemStatus)
newItem.setImport(srcItem.itemImport) newItem.setImport(srcItem.itemImport)
+3 -9
View File
@@ -33,7 +33,7 @@ from PyQt5.QtWidgets import (
) )
from novelwriter.core import NWDoc from novelwriter.core import NWDoc
from novelwriter.enum import nwAlert, nwItemType, nwItemClass, nwItemLayout from novelwriter.enum import nwAlert, nwItemType
from novelwriter.constants import nwConst from novelwriter.constants import nwConst
from novelwriter.gui.custom import QHelpLabel from novelwriter.gui.custom import QHelpLabel
@@ -186,22 +186,16 @@ class GuiDocSplit(QDialog):
return False return False
# Create the folder # Create the folder
fHandle = self.theProject.newFolder( fHandle = self.theProject.newFolder(srcItem.itemName, srcItem.itemParent)
srcItem.itemName, srcItem.itemClass, srcItem.itemParent
)
self.theParent.treeView.revealNewTreeItem(fHandle) self.theParent.treeView.revealNewTreeItem(fHandle)
logger.verbose("Creating folder '%s'", fHandle) logger.verbose("Creating folder '%s'", fHandle)
# Loop through, and create the files # Loop through, and create the files
for wTitle, iStart, iEnd in finalOrder: for wTitle, iStart, iEnd in finalOrder:
isNovel = srcItem.itemClass == nwItemClass.NOVEL
itemLayout = nwItemLayout.DOCUMENT if isNovel else nwItemLayout.NOTE
wTitle = wTitle.lstrip("#").strip() wTitle = wTitle.lstrip("#").strip()
nHandle = self.theProject.newFile(wTitle, srcItem.itemClass, fHandle) nHandle = self.theProject.newFile(wTitle, fHandle)
newItem = self.theProject.projTree[nHandle] newItem = self.theProject.projTree[nHandle]
newItem.setLayout(itemLayout)
newItem.setStatus(srcItem.itemStatus) newItem.setStatus(srcItem.itemStatus)
newItem.setImport(srcItem.itemImport) newItem.setImport(srcItem.itemImport)
logger.verbose( logger.verbose(
+2 -2
View File
@@ -250,7 +250,7 @@ class GuiProjectTree(QTreeWidget):
# If we're still here, add the file or folder # If we're still here, add the file or folder
if itemType == nwItemType.FILE: if itemType == nwItemType.FILE:
tHandle = self.theProject.newFile(self.tr("New File"), itemClass, pHandle) tHandle = self.theProject.newFile(self.tr("New File"), pHandle)
elif itemType == nwItemType.FOLDER: elif itemType == nwItemType.FOLDER:
if len(parTree) >= nwConst.MAX_DEPTH - 1: if len(parTree) >= nwConst.MAX_DEPTH - 1:
@@ -261,7 +261,7 @@ class GuiProjectTree(QTreeWidget):
"Maximum folder depth has been reached." "Maximum folder depth has been reached."
), nwAlert.ERROR) ), nwAlert.ERROR)
return False return False
tHandle = self.theProject.newFolder(self.tr("New Folder"), itemClass, pHandle) tHandle = self.theProject.newFolder(self.tr("New Folder"), pHandle)
else: else:
logger.error("Failed to add new item") logger.error("Failed to add new item")