Finished the handling of text width, window resize, and save and load of editor config.

This commit is contained in:
Veronica K. B. Olsen
2019-04-07 23:38:34 +02:00
parent 2ed9fb12de
commit ffdcb997af
4 changed files with 71 additions and 47 deletions
+28 -3
View File
@@ -49,7 +49,7 @@ class Config:
mkdir(self.confPath)
# Set default values
self.confChanged = False
self.confChanged = False
## General
self.guiTheme = "default"
@@ -58,7 +58,9 @@ class Config:
self.mainPanePos = [300, 800]
## Text Editor
self.textFixedW = True
self.textWidth = 600
self.textMargin = [40, 40]
# Check if config file exists
if path.isfile(path.join(self.confPath,self.confFile)):
@@ -82,8 +84,8 @@ class Config:
# Get options
## Main
cnfSec = "Main"
## Sizes
cnfSec = "Sizes"
if confParser.has_section(cnfSec):
if confParser.has_option(cnfSec,"geometry"):
self.winGeometry = self.unpackList(
@@ -98,6 +100,18 @@ class Config:
confParser.get(cnfSec,"mainpane"), 2, self.mainPanePos
)
## Editor
cnfSec = "Editor"
if confParser.has_section(cnfSec):
if confParser.has_option(cnfSec,"fixedwidth"):
self.textFixedW = confParser.getboolean(cnfSec,"fixedwidth")
if confParser.has_option(cnfSec,"width"):
self.textWidth = confParser.getint(cnfSec,"width")
if confParser.has_option(cnfSec,"margins"):
self.textMargin = self.unpackList(
confParser.get(cnfSec,"margins"), 2, self.textMargin
)
## Path
cnfSec = "Path"
if confParser.has_section(cnfSec):
@@ -118,10 +132,21 @@ class Config:
cnfSec = "Main"
confParser.add_section(cnfSec)
confParser.set(cnfSec,"timestamp", datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
## Sizes
cnfSec = "Sizes"
confParser.add_section(cnfSec)
confParser.set(cnfSec,"geometry", self.packList(self.winGeometry))
confParser.set(cnfSec,"treecols", self.packList(self.treeColWidth))
confParser.set(cnfSec,"mainpane", self.packList(self.mainPanePos))
## Editor
cnfSec = "Editor"
confParser.add_section(cnfSec)
confParser.set(cnfSec,"fixedwidth", str(self.textFixedW))
confParser.set(cnfSec,"width", str(self.textWidth))
confParser.set(cnfSec,"margins", self.packList(self.textMargin))
## Path
cnfSec = "Path"
confParser.add_section(cnfSec)
+18 -42
View File
@@ -31,9 +31,13 @@ class GuiDocEditor(QWidget):
self.outerBox = QVBoxLayout()
self.guiEditor = QTextEdit()
# self.guiEditor.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.guiEditor.setLineWrapMode(QTextEdit.FixedPixelWidth)
self.guiEditor.setLineWrapColumnOrWidth(self.mainConf.textWidth)
if self.mainConf.textFixedW:
self.guiEditor.setLineWrapMode(QTextEdit.FixedPixelWidth)
self.guiEditor.setLineWrapColumnOrWidth(self.mainConf.textWidth)
else:
mTB = self.mainConf.textMargin[0]
mLR = self.mainConf.textMargin[1]
self.guiEditor.setViewportMargins(mLR,mTB,mLR,mTB)
self.hLight = GuiDocHighlighter(self.guiEditor.document())
@@ -47,42 +51,9 @@ class GuiDocEditor(QWidget):
self.guiEditor.setMinimumWidth(400)
self.guiEditor.setAcceptRichText(False)
# self.guiEditor.setStyleSheet("""
# QTextEdit {
# background-color: #141414;
# color: #c7cfd0;
# }
# """)
theDoc = self.guiEditor.document()
# 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 {
# background-color: #ffffff;
# }
# p {
# text-indent: 0px;
# margin: 4px 0px;
# text-align: justify;
# }
# p+p {
# text-indent: 40px;
# }
# """)
theDoc.setDocumentMargin(0)
logger.debug("DocEditor initialisation complete")
@@ -97,11 +68,16 @@ class GuiDocEditor(QWidget):
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)
"""Automatically adjust the margins so the text is centred, but only if Config.textFixedW is
set to True.
"""
if self.mainConf.textFixedW:
tW = self.guiEditor.width()
sW = self.guiEditor.verticalScrollBar().width()
tM = int((tW - sW - self.mainConf.textWidth)/2)
mTB = self.mainConf.textMargin[0]
# print(tW, sW, tM, mTB)
self.guiEditor.setViewportMargins(tM,mTB,0,mTB)
return
def _buildTabToolBar(self):
+21 -2
View File
@@ -197,11 +197,30 @@ class GuiMain(QMainWindow):
self.docTabs.createTab(None,nw.DOCTYPE_ABOUT)
return True
#
##
# Events
#
##
def resizeEvent(self, theEvent):
"""Extend QMainWindow.resizeEvent to signal dependent GUI elements that its pane may have changed size.
"""
QMainWindow.resizeEvent(self,theEvent)
if self.stackPane.currentIndex() == self.stackDoc:
self.docEditor.changeWidth()
return
def closeEvent(self, theEvent):
self._closeMain()
QMainWindow.closeEvent(self,theEvent)
return
##
# Signal Handlers
##
def _splitMainMove(self, pWidth, pHeight):
"""Alert dependent GUI elements that the main pane splitter has been moved.
"""
if self.stackPane.currentIndex() == self.stackDoc:
self.docEditor.changeWidth()
return
+4
View File
@@ -1,3 +1,7 @@
* {
background-color: #999999;
}
QTextEdit {
background-color: #141414;
color: #c7cfd0;