Moved the NWDoc instance from main GUI to the docEditor as it is not really needed in the main view.
This commit is contained in:
+47
-9
@@ -20,6 +20,7 @@ from PyQt5.QtCore import Qt, QTimer
|
|||||||
from PyQt5.QtWidgets import QTextEdit, QAction, QMenu, QShortcut
|
from PyQt5.QtWidgets import QTextEdit, QAction, QMenu, QShortcut
|
||||||
from PyQt5.QtGui import QTextCursor, QTextOption, QIcon, QKeySequence
|
from PyQt5.QtGui import QTextCursor, QTextOption, QIcon, QKeySequence
|
||||||
|
|
||||||
|
from nw.project.document import NWDoc
|
||||||
from nw.gui.dochighlight import GuiDocHighlighter
|
from nw.gui.dochighlight import GuiDocHighlighter
|
||||||
from nw.gui.wordcounter import WordCounter
|
from nw.gui.wordcounter import WordCounter
|
||||||
from nw.enum import nwDocAction, nwAlert
|
from nw.enum import nwDocAction, nwAlert
|
||||||
@@ -28,7 +29,7 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
class GuiDocEditor(QTextEdit):
|
class GuiDocEditor(QTextEdit):
|
||||||
|
|
||||||
def __init__(self, theParent):
|
def __init__(self, theParent, theProject):
|
||||||
QTextEdit.__init__(self)
|
QTextEdit.__init__(self)
|
||||||
|
|
||||||
logger.debug("Initialising DocEditor ...")
|
logger.debug("Initialising DocEditor ...")
|
||||||
@@ -36,10 +37,12 @@ class GuiDocEditor(QTextEdit):
|
|||||||
# Class Variables
|
# Class Variables
|
||||||
self.mainConf = nw.CONFIG
|
self.mainConf = nw.CONFIG
|
||||||
self.theParent = theParent
|
self.theParent = theParent
|
||||||
|
self.theProject = theProject
|
||||||
self.docChanged = False
|
self.docChanged = False
|
||||||
self.pwlFile = None
|
self.pwlFile = None
|
||||||
self.spellCheck = False
|
self.spellCheck = False
|
||||||
self.theDocument = theParent.theDocument
|
self.theDocument = NWDoc(self.theProject, self.theParent)
|
||||||
|
self.theHandle = None
|
||||||
|
|
||||||
# Document Variables
|
# Document Variables
|
||||||
self.charCount = 0
|
self.charCount = 0
|
||||||
@@ -69,9 +72,6 @@ class GuiDocEditor(QTextEdit):
|
|||||||
self.setMinimumWidth(300)
|
self.setMinimumWidth(300)
|
||||||
self.setAcceptRichText(False)
|
self.setAcceptRichText(False)
|
||||||
|
|
||||||
self.clearEditor()
|
|
||||||
self.initEditor()
|
|
||||||
|
|
||||||
self.theQDoc.setDocumentMargin(0)
|
self.theQDoc.setDocumentMargin(0)
|
||||||
self.theQDoc.contentsChange.connect(self._docChange)
|
self.theQDoc.contentsChange.connect(self._docChange)
|
||||||
|
|
||||||
@@ -87,13 +87,29 @@ class GuiDocEditor(QTextEdit):
|
|||||||
self.wCounter = WordCounter(self)
|
self.wCounter = WordCounter(self)
|
||||||
self.wCounter.finished.connect(self._updateCounts)
|
self.wCounter.finished.connect(self._updateCounts)
|
||||||
|
|
||||||
|
self.clearEditor()
|
||||||
|
self.initEditor()
|
||||||
|
|
||||||
logger.debug("DocEditor initialisation complete")
|
logger.debug("DocEditor initialisation complete")
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def clearEditor(self):
|
def clearEditor(self):
|
||||||
|
|
||||||
|
self.theDocument.clearDocument()
|
||||||
self.setReadOnly(True)
|
self.setReadOnly(True)
|
||||||
self.clear()
|
self.clear()
|
||||||
|
self.wcTimer.stop()
|
||||||
|
|
||||||
|
self.theHandle = None
|
||||||
|
self.charCount = 0
|
||||||
|
self.wordCount = 0
|
||||||
|
self.paraCount = 0
|
||||||
|
self.lastEdit = 0
|
||||||
|
self.hasSelection = False
|
||||||
|
|
||||||
|
self.setDocumentChanged(False)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def initEditor(self):
|
def initEditor(self):
|
||||||
@@ -114,6 +130,7 @@ class GuiDocEditor(QTextEdit):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def loadText(self, tHandle):
|
def loadText(self, tHandle):
|
||||||
|
|
||||||
self.hLight.setHandle(tHandle)
|
self.hLight.setHandle(tHandle)
|
||||||
self.setPlainText(self.theDocument.openDocument(tHandle))
|
self.setPlainText(self.theDocument.openDocument(tHandle))
|
||||||
self.setCursorPosition(self.theDocument.theItem.cursorPos)
|
self.setCursorPosition(self.theDocument.theItem.cursorPos)
|
||||||
@@ -122,6 +139,27 @@ class GuiDocEditor(QTextEdit):
|
|||||||
self.wcTimer.start()
|
self.wcTimer.start()
|
||||||
self.setDocumentChanged(False)
|
self.setDocumentChanged(False)
|
||||||
self.setReadOnly(False)
|
self.setReadOnly(False)
|
||||||
|
self.theHandle = tHandle
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def saveText(self):
|
||||||
|
|
||||||
|
if self.theDocument.theItem is None:
|
||||||
|
return False
|
||||||
|
|
||||||
|
docText = self.getText()
|
||||||
|
cursPos = self.getCursorPosition()
|
||||||
|
theItem = self.theDocument.theItem
|
||||||
|
theItem.setCharCount(self.charCount)
|
||||||
|
theItem.setWordCount(self.wordCount)
|
||||||
|
theItem.setParaCount(self.paraCount)
|
||||||
|
theItem.setCursorPos(cursPos)
|
||||||
|
self.theDocument.saveDocument(docText)
|
||||||
|
self.setDocumentChanged(False)
|
||||||
|
|
||||||
|
self.theParent.theIndex.scanText(theItem.itemHandle, docText)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
##
|
##
|
||||||
@@ -381,7 +419,7 @@ class GuiDocEditor(QTextEdit):
|
|||||||
"""
|
"""
|
||||||
logger.verbose("Updating word count")
|
logger.verbose("Updating word count")
|
||||||
|
|
||||||
tHandle = self.theParent.theDocument.docHandle
|
tHandle = self.theDocument.docHandle
|
||||||
self.charCount = self.wCounter.charCount
|
self.charCount = self.wCounter.charCount
|
||||||
self.wordCount = self.wCounter.wordCount
|
self.wordCount = self.wCounter.wordCount
|
||||||
self.paraCount = self.wCounter.paraCount
|
self.paraCount = self.wCounter.paraCount
|
||||||
@@ -392,9 +430,9 @@ class GuiDocEditor(QTextEdit):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def _wrapSelection(self, tBefore, tAfter):
|
def _wrapSelection(self, tBefore, tAfter):
|
||||||
"""Wraps the selected text in whatever is in tBefore and tAfter. If there is no selection, the autoSelect setting decides
|
"""Wraps the selected text in whatever is in tBefore and tAfter. If there is no selection,
|
||||||
the action. AutoSelect will select the word under the cursor before wrapping it. If this feature is disabled, nothing is
|
the autoSelect setting decides the action. AutoSelect will select the word under the cursor
|
||||||
done.
|
before wrapping it. If this feature is disabled, nothing is done.
|
||||||
"""
|
"""
|
||||||
theCursor = self.textCursor()
|
theCursor = self.textCursor()
|
||||||
if self.mainConf.autoSelect and not theCursor.hasSelection():
|
if self.mainConf.autoSelect and not theCursor.hasSelection():
|
||||||
|
|||||||
+6
-18
@@ -32,7 +32,6 @@ from nw.gui.itemeditor import GuiItemEditor
|
|||||||
from nw.gui.statusbar import GuiMainStatus
|
from nw.gui.statusbar import GuiMainStatus
|
||||||
from nw.gui.timelineview import GuiTimeLineView
|
from nw.gui.timelineview import GuiTimeLineView
|
||||||
from nw.project.project import NWProject
|
from nw.project.project import NWProject
|
||||||
from nw.project.document import NWDoc
|
|
||||||
from nw.project.item import NWItem
|
from nw.project.item import NWItem
|
||||||
from nw.project.index import NWIndex
|
from nw.project.index import NWIndex
|
||||||
from nw.tools.wordcount import countWords
|
from nw.tools.wordcount import countWords
|
||||||
@@ -51,7 +50,6 @@ class GuiMain(QMainWindow):
|
|||||||
self.mainConf = nw.CONFIG
|
self.mainConf = nw.CONFIG
|
||||||
self.theTheme = Theme()
|
self.theTheme = Theme()
|
||||||
self.theProject = NWProject(self)
|
self.theProject = NWProject(self)
|
||||||
self.theDocument = NWDoc(self.theProject, self)
|
|
||||||
self.theIndex = NWIndex(self.theProject, self)
|
self.theIndex = NWIndex(self.theProject, self)
|
||||||
self.hasProject = False
|
self.hasProject = False
|
||||||
|
|
||||||
@@ -61,12 +59,12 @@ class GuiMain(QMainWindow):
|
|||||||
self.theTheme.loadTheme()
|
self.theTheme.loadTheme()
|
||||||
|
|
||||||
# Main GUI Elements
|
# Main GUI Elements
|
||||||
self.docEditor = GuiDocEditor(self)
|
self.statusBar = GuiMainStatus(self)
|
||||||
|
self.docEditor = GuiDocEditor(self, self.theProject)
|
||||||
self.docViewer = GuiDocViewer(self, self.theProject)
|
self.docViewer = GuiDocViewer(self, self.theProject)
|
||||||
self.docDetails = GuiDocDetails(self, self.theProject)
|
self.docDetails = GuiDocDetails(self, self.theProject)
|
||||||
self.treeView = GuiDocTree(self, self.theProject)
|
self.treeView = GuiDocTree(self, self.theProject)
|
||||||
self.mainMenu = GuiMainMenu(self, self.theProject)
|
self.mainMenu = GuiMainMenu(self, self.theProject)
|
||||||
self.statusBar = GuiMainStatus(self)
|
|
||||||
|
|
||||||
# Minor Gui Elements
|
# Minor Gui Elements
|
||||||
self.statusIcons = []
|
self.statusIcons = []
|
||||||
@@ -282,7 +280,6 @@ class GuiMain(QMainWindow):
|
|||||||
if self.hasProject:
|
if self.hasProject:
|
||||||
if self.docEditor.docChanged:
|
if self.docEditor.docChanged:
|
||||||
self.saveDocument()
|
self.saveDocument()
|
||||||
self.theDocument.clearDocument()
|
|
||||||
self.docEditor.clearEditor()
|
self.docEditor.clearEditor()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -296,17 +293,8 @@ class GuiMain(QMainWindow):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def saveDocument(self):
|
def saveDocument(self):
|
||||||
if self.theDocument.theItem is not None and self.hasProject:
|
if self.hasProject:
|
||||||
docText = self.docEditor.getText()
|
self.docEditor.saveText()
|
||||||
cursPos = self.docEditor.getCursorPosition()
|
|
||||||
theItem = self.theDocument.theItem
|
|
||||||
theItem.setCharCount(self.docEditor.charCount)
|
|
||||||
theItem.setWordCount(self.docEditor.wordCount)
|
|
||||||
theItem.setParaCount(self.docEditor.paraCount)
|
|
||||||
theItem.setCursorPos(cursPos)
|
|
||||||
self.theDocument.saveDocument(docText)
|
|
||||||
self.docEditor.setDocumentChanged(False)
|
|
||||||
self.theIndex.scanText(theItem.itemHandle, docText)
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def viewDocument(self, tHandle=None):
|
def viewDocument(self, tHandle=None):
|
||||||
@@ -318,7 +306,7 @@ class GuiMain(QMainWindow):
|
|||||||
tHandle = self.theProject.lastViewed
|
tHandle = self.theProject.lastViewed
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
logger.debug("No document selected, trying editor document")
|
logger.debug("No document selected, trying editor document")
|
||||||
tHandle = self.theDocument.docHandle
|
tHandle = self.docEditor.theHandle
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
logger.debug("No document selected, giving up")
|
logger.debug("No document selected, giving up")
|
||||||
return False
|
return False
|
||||||
@@ -580,7 +568,7 @@ class GuiMain(QMainWindow):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def _autoSaveDocument(self):
|
def _autoSaveDocument(self):
|
||||||
if self.hasProject and self.docEditor.docChanged and self.theDocument.theItem is not None:
|
if self.hasProject and self.docEditor.docChanged:
|
||||||
logger.debug("Autosaving document")
|
logger.debug("Autosaving document")
|
||||||
self.saveDocument()
|
self.saveDocument()
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user