From 2ed9fb12dec3d4fb08238ef38e10550aa0df46ed Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" Date: Sat, 6 Apr 2019 21:58:48 +0200 Subject: [PATCH] Handling of window size and change --- nw/config.py | 14 ++++++++++ nw/gui/doceditor.py | 67 ++++++++++++++++++++++++--------------------- nw/gui/winmain.py | 22 +++++++++++---- 3 files changed, 67 insertions(+), 36 deletions(-) diff --git a/nw/config.py b/nw/config.py index 62f72a15..0ec3940d 100644 --- a/nw/config.py +++ b/nw/config.py @@ -52,8 +52,13 @@ class Config: self.confChanged = False ## General + self.guiTheme = "default" self.winGeometry = [1100, 650] self.treeColWidth = [120, 30, 50] + self.mainPanePos = [300, 800] + + ## Text Editor + self.textWidth = 600 # Check if config file exists if path.isfile(path.join(self.confPath,self.confFile)): @@ -88,6 +93,10 @@ class Config: self.treeColWidth = self.unpackList( confParser.get(cnfSec,"treecols"), 3, self.treeColWidth ) + if confParser.has_option(cnfSec,"mainpane"): + self.mainPanePos = self.unpackList( + confParser.get(cnfSec,"mainpane"), 2, self.mainPanePos + ) ## Path cnfSec = "Path" @@ -111,6 +120,7 @@ class Config: confParser.set(cnfSec,"timestamp", datetime.now().strftime("%Y-%m-%d %H:%M:%S")) confParser.set(cnfSec,"geometry", self.packList(self.winGeometry)) confParser.set(cnfSec,"treecols", self.packList(self.treeColWidth)) + confParser.set(cnfSec,"mainpane", self.packList(self.mainPanePos)) ## Path cnfSec = "Path" @@ -170,4 +180,8 @@ class Config: self.treeColWidth = colWidths return + def setMainPanePos(self, panePos): + self.mainPanePos = panePos + return + # End Class Config diff --git a/nw/gui/doceditor.py b/nw/gui/doceditor.py index 943e4192..aa3b96e1 100644 --- a/nw/gui/doceditor.py +++ b/nw/gui/doceditor.py @@ -31,47 +31,44 @@ class GuiDocEditor(QWidget): self.outerBox = QVBoxLayout() self.guiEditor = QTextEdit() - self.guiEditor.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + # self.guiEditor.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + self.guiEditor.setLineWrapMode(QTextEdit.FixedPixelWidth) + self.guiEditor.setLineWrapColumnOrWidth(self.mainConf.textWidth) self.hLight = GuiDocHighlighter(self.guiEditor.document()) self.setLayout(self.outerBox) - self.metaPane = QFrame() - self.docPane = QScrollArea() - self.metaPane.setFrameShape(QFrame.StyledPanel) - self.docPane.setFrameShape(QFrame.StyledPanel) - # self.docPane.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) - self.splitEdit = QSplitter(Qt.Horizontal) - self.splitEdit.addWidget(self.docPane) - self.splitEdit.addWidget(self.metaPane) - - self.docBox = QHBoxLayout() - self.docPane.setLayout(self.docBox) - self.docBox.addStretch(0) - self.docBox.addWidget(self.guiEditor) - self.docBox.addStretch(0) self.editToolBar = QToolBar() self._buildTabToolBar() self.outerBox.addWidget(self.editToolBar) - self.outerBox.addWidget(self.splitEdit) + self.outerBox.addWidget(self.guiEditor) - # self.guiEditor.setFixedWidth(600) - self.guiEditor.setMinimumWidth(600) + self.guiEditor.setMinimumWidth(400) self.guiEditor.setAcceptRichText(False) - # self.guiEditor.setCurrentFont(self.docFont) - # self.guiEditor.setContentsMargins(20,20,20,20) - self.guiEditor.setStyleSheet(""" - QTextEdit { - background-color: #141414; - color: #c7cfd0; - } - """) + # self.guiEditor.setStyleSheet(""" + # QTextEdit { + # background-color: #141414; + # color: #c7cfd0; + # } + # """) theDoc = self.guiEditor.document() - theDoc.setDefaultFont(QFont("Source Sans Pro",13)) - theDoc.setDocumentMargin(20) - theDoc.setTextWidth(600) + # theDoc.setDefaultFont(QFont("Source Sans Pro",13)) + theDoc.setDocumentMargin(40) + # theDoc.setTextWidth(200) + # theDoc.setDefaultStyleSheet(""" + # html { + # background-color: #ffffff; + # padding: 50px; + # border: 1px solid #ffffff; + # } + # body { + # background-color: #ffffff; + # padding: 50px; + # border: 1px solid #ffffff; + # } + # """) # theDoc.setPageSize(QSizeF(600,600)) # theDoc.setDefaultStyleSheet(""" # body { @@ -91,14 +88,22 @@ class GuiDocEditor(QWidget): return - def setText(self, docHtml): - self.guiEditor.setPlainText(docHtml) + def setText(self, theText): + self.guiEditor.setPlainText(theText) return True def getText(self): theText = self.guiEditor.toPlainText() return theText + def changeWidth(self): + tW = self.guiEditor.width() + sW = self.guiEditor.verticalScrollBar().width() + tM = int((tW - sW - self.mainConf.textWidth)/2) + self.guiEditor.setViewportMargins(tM,0,0,0) + # print(tW, sW, tM) + return + def _buildTabToolBar(self): toolBar = self.editToolBar toolBar.setToolButtonStyle(Qt.ToolButtonIconOnly) diff --git a/nw/gui/winmain.py b/nw/gui/winmain.py index 7e52e0fa..b59e7970 100644 --- a/nw/gui/winmain.py +++ b/nw/gui/winmain.py @@ -15,7 +15,7 @@ import nw from os import path from PyQt5.QtWidgets import qApp, QWidget, QMainWindow, QHBoxLayout, QVBoxLayout, QFrame, QSplitter, QAction, QToolBar, QFileDialog, QStackedWidget -from PyQt5.QtCore import Qt, QSize +from PyQt5.QtCore import Qt, QSize, QObject from PyQt5.QtGui import QIcon, QStandardItemModel from nw.enum import nwItemType @@ -69,6 +69,16 @@ class GuiMain(QMainWindow): self.treeView.itemDoubleClicked.connect(self._treeDoubleClick) self.treeView.buildTree() + self.splitMain.setSizes(self.mainConf.mainPanePos) + self.splitMain.splitterMoved.connect(self._splitMainMove) + + # Load Theme StyleSheet + cssFile = path.join(self.mainConf.themePath,self.mainConf.guiTheme+".css") + if path.isfile(cssFile): + with open(cssFile,mode="r") as inFile: + theCss = inFile.read() + self.setStyleSheet(theCss) + self.show() logger.debug("GUI initialisation complete") @@ -136,6 +146,7 @@ class GuiMain(QMainWindow): def openDocument(self, tHandle): self.stackPane.setCurrentIndex(self.stackDoc) self.docEditor.setText(self.theDocument.openDocument(tHandle)) + self.docEditor.changeWidth() return def saveDocument(self): @@ -162,7 +173,7 @@ class GuiMain(QMainWindow): logger.info("Exiting %s" % nw.__package__) self.mainConf.setWinSize(self.width(), self.height()) self.mainConf.setTreeColWidths(self.treeView.getColumnSizes()) - print(self.treePane.width()) + self.mainConf.setMainPanePos(self.splitMain.sizes()) self.mainConf.saveConfig() return @@ -190,9 +201,10 @@ class GuiMain(QMainWindow): # Events # - def closeEvent(self, guiEvent): - self._closeMain() - guiEvent.accept() + def _splitMainMove(self, pWidth, pHeight): + if self.stackPane.currentIndex() == self.stackDoc: + self.docEditor.changeWidth() + return # # GUI Builders