Using global enum class instead of constants in classes.

This commit is contained in:
Veronica K. B. Olsen
2018-11-02 23:22:29 +01:00
parent 8c10251fff
commit e3af43725a
7 changed files with 103 additions and 99 deletions
+18 -48
View File
@@ -17,28 +17,20 @@ from os import path, mkdir
from lxml import etree
from datetime import datetime
from nw.enum import nwItemType, nwItemClass
logger = logging.getLogger(__name__)
class NWItem():
TYPE_ROOT = 0
TYPE_FOLDER = 1
TYPE_FILE = 2
CLASS_NONE = 0
CLASS_NOVEL = 1
CLASS_CHAPTER = 2
CLASS_CHARACTER = 3
CLASS_WORLD = 4
def __init__(self):
self.itemName = ""
self.itemHandle = None
self.parHandle = None
self.itemOrder = None
self.itemType = None
self.itemClass = None
self.itemType = nwItemType.NONE
self.itemClass = nwItemClass.NONE
self.isExpanded = False
return
@@ -69,35 +61,27 @@ class NWItem():
return
def setType(self, theType):
if isinstance(theType, int):
if isinstance(theType, nwItemType):
self.itemType = theType
elif theType == "ROOT":
self.itemType = self.TYPE_ROOT
elif theType == "FOLDER":
self.itemType = self.TYPE_FOLDER
elif theType == "FILE":
self.itemType = self.TYPE_FILE
else:
logger.error("Unrecognised item type '%s'" % theType)
self.itemType = None
for itemType in nwItemType:
if theType == itemType.name:
self.itemType = itemType
return
logger.error("Unrecognised item type '%s'" % theType)
self.itemType = nwItemType.NONE
return
def setClass(self, theClass):
if isinstance(theClass, int):
if isinstance(theClass, nwItemClass):
self.itemClass = theClass
elif theClass == "NONE":
self.itemClass = self.CLASS_NONE
elif theClass == "NOVEL":
self.itemClass = self.CLASS_NOVEL
elif theClass == "CHAPTER":
self.itemClass = self.CLASS_CHAPTER
elif theClass == "CHARACTER":
self.itemClass = self.CLASS_CHARACTER
elif theClass == "WORLD":
self.itemClass = self.CLASS_WORLD
else:
logger.error("Unrecognised root item '%s'" % theClass)
self.itemClass = None
for itemClass in nwItemClass:
if theClass == itemClass.name:
self.itemClass = itemClass
return
logger.error("Unrecognised item class '%s'" % theClass)
self.itemClass = nwItemClass.NONE
return
def setExpanded(self, expState):
@@ -107,18 +91,4 @@ class NWItem():
self.isExpanded = expState
return
def getType(self):
if self.itemType == self.TYPE_ROOT: return "ROOT"
if self.itemType == self.TYPE_FOLDER: return "FOLDER"
if self.itemType == self.TYPE_FILE: return "FILE"
return "NONE"
def getClass(self):
if self.itemClass == self.CLASS_NONE: return "NONE"
if self.itemClass == self.CLASS_NOVEL: return "NOVEL"
if self.itemClass == self.CLASS_CHAPTER: return "CHAPTER"
if self.itemClass == self.CLASS_CHARACTER: return "CHARACTER"
if self.itemClass == self.CLASS_WORLD: return "WORLD"
return "NONE"
# END Class NWItem
+23 -24
View File
@@ -13,12 +13,13 @@
import logging
import nw
from os import path, mkdir
from lxml import etree
from hashlib import sha256
from datetime import datetime
from time import time
from os import path, mkdir
from lxml import etree
from hashlib import sha256
from datetime import datetime
from time import time
from nw.enum import nwItemType, nwItemClass
from nw.project.item import NWItem
logger = logging.getLogger(__name__)
@@ -47,7 +48,7 @@ class NWProject():
def newRoot(self, rootName, rootClass):
newItem = NWItem()
newItem.setName(rootName)
newItem.setType(NWItem.TYPE_ROOT)
newItem.setType(nwItemType.ROOT)
newItem.setClass(rootClass)
self._appendItem(None,None,newItem)
return newItem.itemHandle
@@ -55,7 +56,7 @@ class NWProject():
def newFolder(self, folderName, folderClass, pHandle):
newItem = NWItem()
newItem.setName(folderName)
newItem.setType(NWItem.TYPE_FOLDER)
newItem.setType(nwItemType.FOLDER)
newItem.setClass(folderClass)
self._appendItem(None,pHandle,newItem)
return newItem.itemHandle
@@ -63,7 +64,7 @@ class NWProject():
def newFile(self, fileName, fileClass, pHandle):
newItem = NWItem()
newItem.setName(fileName)
newItem.setType(NWItem.TYPE_FILE)
newItem.setType(nwItemType.FILE)
newItem.setClass(fileClass)
self._appendItem(None,pHandle,newItem)
return newItem.itemHandle
@@ -76,11 +77,11 @@ class NWProject():
self.projName = ""
self.bookTitle = ""
self.bookAuthors = []
hNovel = self.newRoot("Novel", NWItem.CLASS_NOVEL)
hChars = self.newRoot("Characters",NWItem.CLASS_CHARACTER)
hWorld = self.newRoot("World", NWItem.CLASS_WORLD)
hChapt = self.newFolder("New Chapter", NWItem.CLASS_CHAPTER ,hNovel)
hScene = self.newFile("New Scene", NWItem.CLASS_NONE, hChapt)
hNovel = self.newRoot("Novel", nwItemClass.NOVEL)
hChars = self.newRoot("Characters",nwItemClass.CHARACTER)
hWorld = self.newRoot("World", nwItemClass.WORLD)
hChapt = self.newFolder("New Chapter", nwItemClass.CHAPTER ,hNovel)
hScene = self.newFile("New Scene", nwItemClass.NONE, hChapt)
return
def openProject(self, fileName):
@@ -129,7 +130,7 @@ class NWProject():
if "handle" in xItem.attrib:
tHandle = itemAttrib["handle"]
else:
logger.error("Skipping rntry missing handle")
logger.error("Skipping entry missing handle")
continue
if "parent" in xItem.attrib:
pHandle = itemAttrib["parent"]
@@ -184,16 +185,14 @@ class NWProject():
"parent" : str(nwItem.parHandle),
"order" : str(nwItem.itemOrder),
})
xItemName = etree.SubElement(xItem,"name")
xItemName.text = str(nwItem.itemName)
xItemType = etree.SubElement(xItem,"type")
xItemType.text = str(nwItem.getType())
if nwItem.getClass() is not "NONE":
xItemValue = etree.SubElement(xItem,"class")
xItemValue.text = str(nwItem.getClass())
if nwItem.isExpanded:
xItemValue = etree.SubElement(xItem,"expanded")
xItemValue.text = str(nwItem.isExpanded)
xItemValue = etree.SubElement(xItem,"name")
xItemValue.text = str(nwItem.itemName)
xItemValue = etree.SubElement(xItem,"type")
xItemValue.text = str(nwItem.itemType.name)
xItemValue = etree.SubElement(xItem,"class")
xItemValue.text = str(nwItem.itemClass.name)
xItemValue = etree.SubElement(xItem,"expanded")
xItemValue.text = str(nwItem.isExpanded)
# Write the xml tree to file
with open(path.join(self.projPath,self.projFile),"wb") as outFile: