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})"