Fixed creating new project, opening and saving of projects.

This commit is contained in:
Veronica K. B. Olsen
2019-05-03 21:56:51 +02:00
parent 665fbb04fe
commit 116150ef01
3 changed files with 76 additions and 37 deletions
+15 -1
View File
@@ -39,9 +39,14 @@ class GuiDocTree(QTreeWidget):
self.debugGUI = self.mainConf.debugGUI
self.theParent = theParent
self.theProject = theProject
self.theMap = {}
# Tree Settings
self.theMap = None
self.orphRoot = None
self.clearTree()
# Build GUI
self.setIconSize(QSize(13,13))
self.setExpandsOnDoubleClick(True)
self.setIndentation(13)
@@ -67,6 +72,15 @@ class GuiDocTree(QTreeWidget):
return
def clearTree(self):
self.clear()
self.theMap = {}
self.orphRoot = None
return
def newTreeItem(self, itemType, itemClass):
pHandle = self.getSelectedHandle()
+6 -3
View File
@@ -103,6 +103,7 @@ class GuiMain(QMainWindow):
def newProject(self):
logger.info("Creating new project")
self.treeView.clearTree()
self.theProject.newProject()
self.treeView.buildTree()
return
@@ -112,6 +113,7 @@ class GuiMain(QMainWindow):
projFile = self.openProjectDialog()
if projFile is None:
return False
self.treeView.clearTree()
self.theProject.openProject(projFile)
self.treeView.buildTree()
self._setWindowTitle(self.theProject.projName)
@@ -184,7 +186,7 @@ class GuiMain(QMainWindow):
dlgOpt = QFileDialog.Options()
dlgOpt |= QFileDialog.DontUseNativeDialog
projFile, _ = QFileDialog.getOpenFileName(
self,"Open novelWriter Project","","novelWriter Project File (nwProject.nwx);;All Files (*)", options=dlgOpt
self,"Open novelWriter Project","","novelWriter Project File (nwProject.nwx);;All Files (*)",options=dlgOpt
)
if projFile:
return projFile
@@ -192,9 +194,10 @@ class GuiMain(QMainWindow):
def saveProjectDialog(self):
dlgOpt = QFileDialog.Options()
dlgOpt |= QFileDialog.ShowDirsOnly
dlgOpt |= QFileDialog.DontUseNativeDialog
projPath, _ = QFileDialog.getSaveFileName(
self,"Save novelWriter Project","","novelWriter Project File (nwProject.nwx);;All Files (*)", options=dlgOpt
projPath = QFileDialog.getExistingDirectory(
self,"Save novelWriter Project","",options=dlgOpt
)
if projPath:
return projPath
+55 -33
View File
@@ -31,27 +31,22 @@ class NWProject():
def __init__(self):
# Internal
self.mainConf = nw.CONFIG
self.mainConf = nw.CONFIG
# Project Settings
self.projTree = {}
self.treeOrder = []
self.treeRoots = []
self.projPath = None
self.projFile = "nwProject.nwx"
self.projName = ""
self.bookTitle = ""
self.bookAuthors = []
self.projTree = None
self.treeOrder = None
self.treeRoots = None
self.projPath = None
self.projFile = None
self.projName = None
self.bookTitle = None
self.bookAuthors = None
self.statusCols = None
self.statusIcons = None
self.statusLabels = None
self.statusCols = [
("New", 100,100,100),
("Note", 200, 50, 0),
("Draft", 200,150, 0),
("Finished", 50,200, 0),
]
self.statusIcons = []
self.statusLabels = []
self._makeStatusIcons()
self.clearProject()
return
@@ -88,19 +83,39 @@ class NWProject():
return newItem.itemHandle
def newProject(self):
self.projTree = {}
self.treeOrder = []
self.projPath = None
self.projFile = "nwProject.nwx"
self.projName = ""
self.bookTitle = ""
self.bookAuthors = []
self._makeStatusIcons()
self.clearProject()
hNovel = self.newRoot("Novel", nwItemClass.NOVEL)
hChars = self.newRoot("Characters", nwItemClass.CHARACTER)
hWorld = self.newRoot("World", nwItemClass.WORLD)
hChapt = self.newFolder("New Chapter", nwItemClass.NOVEL, hNovel)
hScene = self.newFile("New Scene", nwItemClass.NOVEL, hChapt)
return
def clearProject(self):
# Project Settings
self.projTree = {}
self.treeOrder = []
self.treeRoots = []
self.projPath = None
self.projFile = "nwProject.nwx"
self.projName = ""
self.bookTitle = ""
self.bookAuthors = []
self.statusCols = [
("New", 100,100,100),
("Note", 200, 50, 0),
("Draft", 200,150, 0),
("Finished", 50,200, 0),
]
self.statusIcons = []
self.statusLabels = []
self._makeStatusIcons()
return
##
@@ -115,6 +130,7 @@ class NWProject():
logger.error("File not found: %s" % fileName)
return False
self.clearProject()
self.projPath = path.dirname(fileName)
logger.debug("Opening project: %s" % self.projPath)
@@ -211,13 +227,19 @@ class NWProject():
self.projTree[tHandle].packXML(xContent)
# Write the xml tree to file
with open(path.join(self.projPath,self.projFile),"wb") as outFile:
outFile.write(etree.tostring(
nwXML,
pretty_print = True,
encoding = "utf-8",
xml_declaration = True
))
saveFile = path.join(self.projPath,self.projFile)
try:
with open(saveFile,"wb") as outFile:
outFile.write(etree.tostring(
nwXML,
pretty_print = True,
encoding = "utf-8",
xml_declaration = True
))
except Exception as e:
logger.error("Failed to save project to %s" % saveFile)
logger.error(str(e))
return False
self.mainConf.setRecent(self.projPath)