SOme cleanup of code in config, and added tab width option

This commit is contained in:
Veronica K. B. Olsen
2019-05-25 22:01:59 +02:00
parent 93f9b37587
commit 3cbea6eff2
2 changed files with 97 additions and 103 deletions
+92 -102
View File
@@ -25,6 +25,11 @@ class Config:
WIN_WIDTH = 0 WIN_WIDTH = 0
WIN_HEIGHT = 1 WIN_HEIGHT = 1
CNF_STR = 0
CNF_INT = 1
CNF_BOOL = 2
CNF_LIST = 3
def __init__(self): def __init__(self):
# Set Application Variables # Set Application Variables
@@ -60,6 +65,7 @@ class Config:
self.textWidth = 600 self.textWidth = 600
self.textMargin = [40, 40] self.textMargin = [40, 40]
self.textSize = 13 self.textSize = 13
self.tabWidth = 40
self.doJustify = True self.doJustify = True
self.autoSelect = True self.autoSelect = True
self.doReplace = True self.doReplace = True
@@ -68,7 +74,7 @@ class Config:
self.doReplaceDash = True self.doReplaceDash = True
self.doReplaceDots = True self.doReplaceDots = True
self.wordCountTimer = 5.0 self.wordCountTimer = 5.0
self.fmtDoubleQuotes = ["",""] self.fmtDoubleQuotes = ["",""]
self.fmtSingleQuotes = ["",""] self.fmtSingleQuotes = ["",""]
self.fmtApostrophe = "" self.fmtApostrophe = ""
@@ -117,140 +123,105 @@ class Config:
def loadConfig(self): def loadConfig(self):
logger.debug("Loading config file") logger.debug("Loading config file")
confParser = configparser.ConfigParser() cnfParse = configparser.ConfigParser()
try: try:
confParser.read_file(open(path.join(self.confPath,self.confFile))) cnfParse.read_file(open(path.join(self.confPath,self.confFile)))
except Exception as e: except Exception as e:
logger.error("Could not load config file") logger.error("Could not load config file")
return False return False
# Get options
## Main ## Main
cnfSec = "Main" cnfSec = "Main"
if confParser.has_section(cnfSec): self.guiTheme = self._parseLine(cnfParse, cnfSec, "theme", self.CNF_STR)
if confParser.has_option(cnfSec,"theme"):
self.guiTheme = confParser.get(cnfSec,"theme")
## Sizes ## Sizes
cnfSec = "Sizes" cnfSec = "Sizes"
if confParser.has_section(cnfSec): self.winGeometry = self._parseLine(cnfParse, cnfSec, "geometry", self.CNF_LIST, self.winGeometry)
if confParser.has_option(cnfSec,"geometry"): self.treeColWidth = self._parseLine(cnfParse, cnfSec, "treecols", self.CNF_LIST, self.treeColWidth)
self.winGeometry = self.unpackList( self.mainPanePos = self._parseLine(cnfParse, cnfSec, "mainpane", self.CNF_LIST, self.mainPanePos)
confParser.get(cnfSec,"geometry"), 2, self.winGeometry self.docPanePos = self._parseLine(cnfParse, cnfSec, "docpane", self.CNF_LIST, self.docPanePos)
)
if confParser.has_option(cnfSec,"treecols"):
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
)
if confParser.has_option(cnfSec,"docpane"):
self.docPanePos = self.unpackList(
confParser.get(cnfSec,"docpane"), 2, self.docPanePos
)
## Project ## Project
cnfSec = "Project" cnfSec = "Project"
if confParser.has_section(cnfSec): self.autoSaveProj = self._parseLine(cnfParse, cnfSec, "autosaveproject", self.CNF_INT)
if confParser.has_option(cnfSec,"autosaveproject"): self.autoSaveDoc = self._parseLine(cnfParse, cnfSec, "autosavedoc", self.CNF_INT)
self.autoSaveProj = confParser.getint(cnfSec,"autosaveproject")
if confParser.has_option(cnfSec,"autosavedoc"):
self.autoSaveDoc = confParser.getint(cnfSec,"autosavedoc")
## Editor ## Editor
cnfSec = "Editor" cnfSec = "Editor"
if confParser.has_section(cnfSec): self.textFixedW = self._parseLine(cnfParse, cnfSec, "fixedwidth", self.CNF_BOOL)
if confParser.has_option(cnfSec,"fixedwidth"): self.textWidth = self._parseLine(cnfParse, cnfSec, "width", self.CNF_INT)
self.textFixedW = confParser.getboolean(cnfSec,"fixedwidth") self.textMargin = self._parseLine(cnfParse, cnfSec, "margins", self.CNF_LIST, self.textMargin)
if confParser.has_option(cnfSec,"width"): self.textSize = self._parseLine(cnfParse, cnfSec, "textsize", self.CNF_INT)
self.textWidth = confParser.getint(cnfSec,"width") self.tabWidth = self._parseLine(cnfParse, cnfSec, "tabwidth", self.CNF_INT)
if confParser.has_option(cnfSec,"margins"): self.doJustify = self._parseLine(cnfParse, cnfSec, "justify", self.CNF_BOOL)
self.textMargin = self.unpackList( self.autoSelect = self._parseLine(cnfParse, cnfSec, "autoselect", self.CNF_BOOL)
confParser.get(cnfSec,"margins"), 2, self.textMargin self.doReplace = self._parseLine(cnfParse, cnfSec, "autoreplace", self.CNF_BOOL)
) self.doReplaceSQuote = self._parseLine(cnfParse, cnfSec, "repsquotes", self.CNF_BOOL)
if confParser.has_option(cnfSec,"textsize"): self.doReplaceDQuote = self._parseLine(cnfParse, cnfSec, "repdquotes", self.CNF_BOOL)
self.textSize = confParser.getint(cnfSec,"textsize") self.doReplaceDash = self._parseLine(cnfParse, cnfSec, "repdash", self.CNF_BOOL)
if confParser.has_option(cnfSec,"justify"): self.doReplaceDots = self._parseLine(cnfParse, cnfSec, "repdots", self.CNF_BOOL)
self.doJustify = confParser.getboolean(cnfSec,"justify") self.spellLanguage = self._parseLine(cnfParse, cnfSec, "spellcheck", self.CNF_STR)
if confParser.has_option(cnfSec,"autoselect"):
self.autoSelect = confParser.getboolean(cnfSec,"autoselect")
if confParser.has_option(cnfSec,"autoreplace"):
self.doReplace = confParser.getboolean(cnfSec,"autoreplace")
if confParser.has_option(cnfSec,"repsquotes"):
self.doReplaceSQuote = confParser.getboolean(cnfSec,"repsquotes")
if confParser.has_option(cnfSec,"repdquotes"):
self.doReplaceDQuote = confParser.getboolean(cnfSec,"repdquotes")
if confParser.has_option(cnfSec,"repdash"):
self.doReplaceDash = confParser.getboolean(cnfSec,"repdash")
if confParser.has_option(cnfSec,"repdots"):
self.doReplaceDots = confParser.getboolean(cnfSec,"repdots")
if confParser.has_option(cnfSec,"spellcheck"):
self.spellLanguage = confParser.get(cnfSec,"spellcheck")
## Path ## Path
cnfSec = "Path" cnfSec = "Path"
if confParser.has_section(cnfSec): for i in range(10):
for i in range(10): self.recentList[i] = self._parseLine(cnfParse, cnfSec, "recent%d" % i,self.CNF_STR)
if confParser.has_option(cnfSec,"recent%d" % i):
self.recentList[i] = confParser.get(cnfSec,"recent%d" % i)
return True return True
def saveConfig(self): def saveConfig(self):
logger.debug("Saving config file") logger.debug("Saving config file")
confParser = configparser.ConfigParser() cnfParse = configparser.ConfigParser()
# Set options # Set options
## Main ## Main
cnfSec = "Main" cnfSec = "Main"
confParser.add_section(cnfSec) cnfParse.add_section(cnfSec)
confParser.set(cnfSec,"timestamp", datetime.now().strftime("%Y-%m-%d %H:%M:%S")) cnfParse.set(cnfSec,"timestamp", datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
confParser.set(cnfSec,"theme", str(self.guiTheme)) cnfParse.set(cnfSec,"theme", str(self.guiTheme))
## Sizes ## Sizes
cnfSec = "Sizes" cnfSec = "Sizes"
confParser.add_section(cnfSec) cnfParse.add_section(cnfSec)
confParser.set(cnfSec,"geometry", self.packList(self.winGeometry)) cnfParse.set(cnfSec,"geometry", self._packList(self.winGeometry))
confParser.set(cnfSec,"treecols", self.packList(self.treeColWidth)) cnfParse.set(cnfSec,"treecols", self._packList(self.treeColWidth))
confParser.set(cnfSec,"mainpane", self.packList(self.mainPanePos)) cnfParse.set(cnfSec,"mainpane", self._packList(self.mainPanePos))
confParser.set(cnfSec,"docpane", self.packList(self.docPanePos)) cnfParse.set(cnfSec,"docpane", self._packList(self.docPanePos))
## Project ## Project
cnfSec = "Project" cnfSec = "Project"
confParser.add_section(cnfSec) cnfParse.add_section(cnfSec)
confParser.set(cnfSec,"autosaveproject", str(self.autoSaveProj)) cnfParse.set(cnfSec,"autosaveproject", str(self.autoSaveProj))
confParser.set(cnfSec,"autosavedoc", str(self.autoSaveDoc)) cnfParse.set(cnfSec,"autosavedoc", str(self.autoSaveDoc))
## Editor ## Editor
cnfSec = "Editor" cnfSec = "Editor"
confParser.add_section(cnfSec) cnfParse.add_section(cnfSec)
confParser.set(cnfSec,"fixedwidth", str(self.textFixedW)) cnfParse.set(cnfSec,"fixedwidth", str(self.textFixedW))
confParser.set(cnfSec,"width", str(self.textWidth)) cnfParse.set(cnfSec,"width", str(self.textWidth))
confParser.set(cnfSec,"margins", self.packList(self.textMargin)) cnfParse.set(cnfSec,"margins", self._packList(self.textMargin))
confParser.set(cnfSec,"textsize", str(self.textSize)) cnfParse.set(cnfSec,"textsize", str(self.textSize))
confParser.set(cnfSec,"justify", str(self.doJustify)) cnfParse.set(cnfSec,"tabwidth", str(self.tabWidth))
confParser.set(cnfSec,"autoselect", str(self.autoSelect)) cnfParse.set(cnfSec,"justify", str(self.doJustify))
confParser.set(cnfSec,"autoreplace",str(self.doReplace)) cnfParse.set(cnfSec,"autoselect", str(self.autoSelect))
confParser.set(cnfSec,"repsquotes", str(self.doReplaceSQuote)) cnfParse.set(cnfSec,"autoreplace",str(self.doReplace))
confParser.set(cnfSec,"repdquotes", str(self.doReplaceDQuote)) cnfParse.set(cnfSec,"repsquotes", str(self.doReplaceSQuote))
confParser.set(cnfSec,"repdash", str(self.doReplaceDash)) cnfParse.set(cnfSec,"repdquotes", str(self.doReplaceDQuote))
confParser.set(cnfSec,"repdots", str(self.doReplaceDots)) cnfParse.set(cnfSec,"repdash", str(self.doReplaceDash))
confParser.set(cnfSec,"spellcheck", str(self.spellLanguage)) cnfParse.set(cnfSec,"repdots", str(self.doReplaceDots))
cnfParse.set(cnfSec,"spellcheck", str(self.spellLanguage))
## Path ## Path
cnfSec = "Path" cnfSec = "Path"
confParser.add_section(cnfSec) cnfParse.add_section(cnfSec)
for i in range(10): for i in range(10):
confParser.set(cnfSec,"recent%d" % i, str(self.recentList[i])) cnfParse.set(cnfSec,"recent%d" % i, str(self.recentList[i]))
# Write config file # Write config file
try: try:
confParser.write(open(path.join(self.confPath,self.confFile),"w")) cnfParse.write(open(path.join(self.confPath,self.confFile),"w"))
self.confChanged = False self.confChanged = False
except Exception as e: except Exception as e:
logger.error("Could not save config file") logger.error("Could not save config file")
@@ -258,19 +229,6 @@ class Config:
return True return True
def unpackList(self, inStr, listLen, listDefault, castTo=int):
inData = inStr.split(",")
outData = []
for i in range(listLen):
try:
outData.append(castTo(inData[i]))
except:
outData.append(listDefault[i])
return outData
def packList(self, inData):
return ", ".join(str(inVal) for inVal in inData)
## ##
# Setters # Setters
## ##
@@ -316,4 +274,36 @@ class Config:
self.confChanged = True self.confChanged = True
return True return True
##
# Internal Functions
##
def _unpackList(self, inStr, listLen, listDefault, castTo=int):
inData = inStr.split(",")
outData = []
for i in range(listLen):
try:
outData.append(castTo(inData[i]))
except:
outData.append(listDefault[i])
return outData
def _packList(self, inData):
return ", ".join(str(inVal) for inVal in inData)
def _parseLine(self, cnfParse, cnfSec, cnfName, cnfType, cnfDefault=[]):
if cnfParse.has_section(cnfSec):
if cnfParse.has_option(cnfSec, cnfName):
if cnfType == self.CNF_STR:
return cnfParse.get(cnfSec, cnfName)
elif cnfType == self.CNF_INT:
return cnfParse.getint(cnfSec, cnfName)
elif cnfType == self.CNF_BOOL:
return cnfParse.getboolean(cnfSec, cnfName)
elif cnfType == self.CNF_LIST:
return self._unpackList(
cnfParse.get(cnfSec, cnfName), len(cnfDefault), cnfDefault
)
return None
# End Class Config # End Class Config
+5 -1
View File
@@ -104,8 +104,12 @@ class GuiDocEditor(QTextEdit):
mTB = self.mainConf.textMargin[0] mTB = self.mainConf.textMargin[0]
mLR = self.mainConf.textMargin[1] mLR = self.mainConf.textMargin[1]
self.setViewportMargins(mLR,mTB,mLR,mTB) self.setViewportMargins(mLR,mTB,mLR,mTB)
theOpt = QTextOption()
if self.mainConf.tabWidth >= 0:
theOpt.setTabStopDistance(self.mainConf.tabWidth)
if self.mainConf.doJustify: if self.mainConf.doJustify:
self.theDoc.setDefaultTextOption(QTextOption(Qt.AlignJustify)) theOpt.setAlignment(Qt.AlignJustify)
self.theDoc.setDefaultTextOption(theOpt)
return True return True
## ##