Building a simple index now works

This commit is contained in:
Veronica K. B. Olsen
2019-05-27 22:28:58 +02:00
parent db2b95e4a5
commit ccef2a1e51
6 changed files with 86 additions and 10 deletions
+2 -2
View File
@@ -88,7 +88,7 @@ class GuiMainStatus(QStatusBar):
self.setRefTime(None)
self.setStats(0,0)
self.setCounts(0,0,0)
self.setDocHandleCount(None)
self.setDocHandle(None)
self.setProjectStatus(None)
self.setDocumentStatus(None)
self._updateTime()
@@ -132,7 +132,7 @@ class GuiMainStatus(QStatusBar):
self.boxCounts.setText("<b>Document:</b> {:d} : {:d} : {:d}".format(cC,wC,pC))
return
def setDocHandleCount(self, theHandle):
def setDocHandle(self, theHandle):
if theHandle is None:
self.boxDocHandle.setText("0000000000000")
else:
+1
View File
@@ -283,6 +283,7 @@ class GuiMain(QMainWindow):
self.docEditor.changeWidth()
self.docEditor.setFocus()
self.theProject.setLastEdited(tHandle)
self.theProject.theIndex.scanFile(tHandle)
return True
def saveDocument(self):
-2
View File
@@ -13,8 +13,6 @@
import logging
import nw
from time import time
from PyQt5.QtCore import QThread
logger = logging.getLogger(__name__)
+4 -3
View File
@@ -41,11 +41,10 @@ class NWDoc():
self.docHandle = None
return
def openDocument(self, tHandle):
def openDocument(self, tHandle, showStatus=True):
self.docHandle = tHandle
self.theItem = self.theProject.getItem(tHandle)
self.theParent.statusBar.setDocHandleCount(tHandle)
docDir, docFile = self._assemblePath(self.FILE_MN)
logger.debug("Opening document %s" % path.join(docDir,docFile))
@@ -63,7 +62,9 @@ class NWDoc():
logger.debug("The requested document does not exist.")
return ""
self.theParent.statusBar.setStatus("Opened Document: %s" % self.theItem.itemName)
if showStatus:
self.theParent.statusBar.setStatus("Opened Document: %s" % self.theItem.itemName)
self.theParent.statusBar.setDocHandle(tHandle)
return theDoc
+74 -3
View File
@@ -13,16 +13,87 @@
import logging
import nw
from nw.project.document import NWDoc
logger = logging.getLogger(__name__)
class NWIndex():
def __init__(self, theParent):
VALID_KEYS = ["todo","tag","pov","char","plot","time","location"]
def __init__(self, theProject, theParent):
# Internal
self.theParent = theParent
self.mainConf = self.theParent.mainConf
self.theProject = theProject
self.theParent = theParent
self.mainConf = self.theParent.mainConf
# Indices
self.itemIndex = {}
self.keyIndex = {}
for aKey in self.VALID_KEYS:
self.keyIndex[aKey] = []
return
def scanFile(self, tHandle):
theDocument = NWDoc(self.theProject, self.theParent)
theText = theDocument.openDocument(tHandle, False)
self.itemIndex[tHandle] = {}
for aKey in self.VALID_KEYS:
self.itemIndex[tHandle][aKey] = []
nLine = 0
for aLine in theText.splitlines():
aLine = aLine.strip()
nLine += 1
nChar = len(aLine)
if nChar > 0 and aLine[0] == "@":
self.indexThis(tHandle, aLine, nLine)
for aKey in self.VALID_KEYS:
if len(self.itemIndex[tHandle][aKey]) > 0:
if tHandle not in self.keyIndex[aKey]:
self.keyIndex[aKey].append(tHandle)
else:
if tHandle in self.keyIndex[aKey]:
self.keyIndex[aKey].remove(tHandle)
print(self.itemIndex)
print(self.keyIndex)
return
def indexThis(self, tHandle, aLine, nLine):
nChar = len(aLine)
nPos = aLine.find(":")
if nPos < 2 or nChar < nPos+2:
return False
aKey = aLine[1:nPos].strip().lower()
tVal = aLine[nPos+1:].strip()
if aKey not in self.VALID_KEYS:
return False
if aKey == "todo":
self.itemIndex[tHandle]["todo"].append((nLine, tVal))
elif aKey == "tag":
if tVal.find(",") >- 0:
return False
self.itemIndex[tHandle]["tag"].append((nLine, tVal))
else:
kVal = tVal.split(",")
cVal = []
for aVal in kVal:
cVal.append(aVal.strip().lower())
if len(cVal) > 0:
self.itemIndex[tHandle][aKey].append((nLine, cVal))
else:
return False
return True
# END Class NWIndex
+5
View File
@@ -21,6 +21,7 @@ from time import time
from nw.project.item import NWItem
from nw.project.status import NWStatus
from nw.project.index import NWIndex
from nw.enum import nwItemType, nwItemClass, nwItemLayout, nwAlert
from nw.common import checkString, checkBool, checkInt
from nw.constants import nwFiles
@@ -64,6 +65,9 @@ class NWProject():
self.lastWCount = 0
self.currWCount = 0
# Index
self.theIndex = None
# Set Defaults
self.clearProject()
@@ -165,6 +169,7 @@ class NWProject():
self.lastViewed = None
self.lastWCount = 0
self.currWCount = 0
self.theIndex = NWIndex(self, self.theParent)
return