From e49678eaa5327c731e665bb3a573e17adb5862ee Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 31 May 2020 13:07:28 +0200 Subject: [PATCH] Some improvements to the word count update --- nw/gui/elements/docdetails.py | 12 ++++++++++++ nw/gui/elements/doceditor.py | 28 +++++++++++++++++++--------- nw/gui/statusbar.py | 2 +- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/nw/gui/elements/docdetails.py b/nw/gui/elements/docdetails.py index 84418802..37077830 100644 --- a/nw/gui/elements/docdetails.py +++ b/nw/gui/elements/docdetails.py @@ -48,6 +48,7 @@ class GuiDocDetails(QFrame): self.theParent = theParent self.theProject = theProject self.theTheme = theParent.theTheme + self.theHandle = None self.mainBox = QGridLayout(self) self.mainBox.setVerticalSpacing(1) @@ -193,9 +194,20 @@ class GuiDocDetails(QFrame): # Class Methods ## + def updateCounts(self, tHandle, cC, wC, pC): + """Just update the counts if the handle is the same as the one + we're already showing. + """ + if tHandle == self.theHandle: + self.cCountData.setText("{:n}".format(cC)) + self.wCountData.setText("{:n}".format(wC)) + self.pCountData.setText("{:n}".format(pC)) + return + def updateViewBox(self, tHandle): """Populate the details box from a given handle. """ + self.theHandle = tHandle nwItem = self.theProject.projTree[tHandle] if nwItem is None: diff --git a/nw/gui/elements/doceditor.py b/nw/gui/elements/doceditor.py index aa3ea1c0..8ceb297e 100644 --- a/nw/gui/elements/doceditor.py +++ b/nw/gui/elements/doceditor.py @@ -300,15 +300,16 @@ class GuiDocEditor(QTextEdit): docText = self.getText() cursPos = self.getCursorPosition() - theItem = self.nwDocument.theItem - theItem.setCharCount(self.charCount) - theItem.setWordCount(self.wordCount) - theItem.setParaCount(self.paraCount) - theItem.setCursorPos(cursPos) + self.nwDocument.theItem.setCharCount(self.charCount) + self.nwDocument.theItem.setWordCount(self.wordCount) + self.nwDocument.theItem.setParaCount(self.paraCount) + self.nwDocument.theItem.setCursorPos(cursPos) self.nwDocument.saveDocument(docText) self.setDocumentChanged(False) - self.theParent.theIndex.scanText(theItem.itemHandle, docText) + self.theParent.theIndex.scanText( + self.nwDocument.theItem.itemHandle, docText + ) return True @@ -737,15 +738,24 @@ class GuiDocEditor(QTextEdit): def _updateCounts(self): """Slot for the word counter's finished signal """ + if self.theHandle is None or self.nwDocument.theItem is None: + return + logger.verbose("Updating word count") - tHandle = self.nwDocument.docHandle self.charCount = self.wCounter.charCount self.wordCount = self.wCounter.wordCount self.paraCount = self.wCounter.paraCount - self.theParent.statusBar.setCounts(self.charCount,self.wordCount,self.paraCount) - self.theParent.treeView.propagateCount(tHandle, self.wordCount) + self.nwDocument.theItem.setCharCount(self.charCount) + self.nwDocument.theItem.setWordCount(self.wordCount) + self.nwDocument.theItem.setParaCount(self.paraCount) + + self.theParent.statusBar.setCounts(self.charCount, self.wordCount, self.paraCount) + self.theParent.treeView.propagateCount(self.theHandle, self.wordCount) self.theParent.treeView.projectWordCount() + self.theParent.treeMeta.updateCounts( + self.theHandle, self.charCount, self.wordCount, self.paraCount + ) self._checkDocSize(self.charCount) return diff --git a/nw/gui/statusbar.py b/nw/gui/statusbar.py index 5fc4c873..dd710aa4 100644 --- a/nw/gui/statusbar.py +++ b/nw/gui/statusbar.py @@ -205,7 +205,7 @@ class GuiMainStatus(QStatusBar): """Update statistics. """ self.statsText.setToolTip( - "D: Document word count
P: Project word count" + "D: Document word count
P: Project word count (session change)" ) self.statsText.setText(( "D:{wC:n} P:{pWC:n} ({sWC:+n})"