Handling of window size and change

This commit is contained in:
Veronica K. B. Olsen
2019-04-06 21:58:48 +02:00
parent 4867b49562
commit 2ed9fb12de
3 changed files with 67 additions and 36 deletions
+14
View File
@@ -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
+36 -31
View File
@@ -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)
+17 -5
View File
@@ -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