diff --git a/nw/gui/docviewer.py b/nw/gui/docviewer.py index 4f4aaa3d..966d213a 100644 --- a/nw/gui/docviewer.py +++ b/nw/gui/docviewer.py @@ -13,32 +13,40 @@ import logging import nw +from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QTextBrowser +from PyQt5.QtGui import QTextOption + +from nw.convert.tokenizer import Tokenizer +from nw.convert.tohtml import ToHtml +from nw.enum import nwItemType logger = logging.getLogger(__name__) class GuiDocViewer(QTextBrowser): - def __init__(self, theParent): + def __init__(self, theParent, theProject): QTextBrowser.__init__(self) logger.debug("Initialising DocViewer ...") # Class Variables - self.mainConf = nw.CONFIG - self.theParent = theParent - self.theTheme = theParent.theTheme + self.mainConf = nw.CONFIG + self.theProject = theProject + self.theParent = theParent + self.theTheme = theParent.theTheme + self.theHandle = None - self.theDoc = self.document() - self.theDoc.setDefaultStyleSheet(( + self.theQDoc = self.document() + self.theQDoc.setDefaultStyleSheet(( "h1, h2, h3, h4 {{" " color: rgb({0},{1},{2});" "}}" ).format( *self.theTheme.colHead )) - self.theDoc.setDocumentMargin(self.mainConf.textMargin[0]) self.setMinimumWidth(300) + self.initEditor() logger.debug("DocViewer initialisation complete") @@ -48,4 +56,37 @@ class GuiDocViewer(QTextBrowser): self.clear() return True + def initEditor(self): + """Set editor settings from mani config. + """ + self.theQDoc.setDocumentMargin(self.mainConf.textMargin[0]) + theOpt = QTextOption() + if self.mainConf.doJustify: + theOpt.setAlignment(Qt.AlignJustify) + self.theQDoc.setDefaultTextOption(theOpt) + + return True + + def loadText(self, tHandle): + + tItem = self.theProject.getItem(tHandle) + if tItem is None: + logger.warning("Item not found") + return False + + if tItem.itemType != nwItemType.FILE: + return False + + logger.debug("Generating preview for item %s" % tHandle) + aDoc = ToHtml(self.theProject, self.theParent) + aDoc.setText(tHandle) + aDoc.doAutoReplace() + aDoc.tokenizeText() + aDoc.doConvert() + self.setHtml(aDoc.theResult) + self.theHandle = tHandle + self.theProject.setLastViewed(tHandle) + + return True + # END Class GuiDocViewer diff --git a/nw/gui/winmain.py b/nw/gui/winmain.py index c13d2d01..ee3e870e 100644 --- a/nw/gui/winmain.py +++ b/nw/gui/winmain.py @@ -35,8 +35,6 @@ from nw.project.project import NWProject from nw.project.document import NWDoc from nw.project.item import NWItem from nw.project.index import NWIndex -from nw.convert.tokenizer import Tokenizer -from nw.convert.tohtml import ToHtml from nw.tools.wordcount import countWords from nw.theme import Theme from nw.enum import nwItemType, nwAlert @@ -64,7 +62,7 @@ class GuiMain(QMainWindow): # Main GUI Elements self.docEditor = GuiDocEditor(self) - self.docViewer = GuiDocViewer(self) + self.docViewer = GuiDocViewer(self, self.theProject) self.docDetails = GuiDocDetails(self, self.theProject) self.treeView = GuiDocTree(self, self.theProject) self.mainMenu = GuiMainMenu(self, self.theProject) @@ -319,21 +317,7 @@ class GuiMain(QMainWindow): logger.warning("No document selected") return False - tItem = self.theProject.getItem(tHandle) - if tItem is None: - logger.warning("Item not found") - return False - - if tItem.itemType == nwItemType.FILE: - logger.debug("Generating preview for item %s" % tHandle) - aDoc = ToHtml(self.theProject, self) - aDoc.setText(tHandle) - aDoc.doAutoReplace() - aDoc.tokenizeText() - aDoc.doConvert() - self.docViewer.setHtml(aDoc.theResult) - self.theProject.setLastViewed(tHandle) - + if self.docViewer.loadText(tHandle): bPos = self.splitMain.sizes() self.docViewer.setVisible(True) vPos = [0,0]