Clean up the config class names and methods
This commit is contained in:
+28
-36
@@ -74,10 +74,10 @@ class Config:
|
|||||||
self._appPath = self._appRoot
|
self._appPath = self._appRoot
|
||||||
|
|
||||||
# Runtime Settings and Variables
|
# Runtime Settings and Variables
|
||||||
self.hasError = False # True if the config class encountered an error
|
self.hasError = False # True if the config class encountered an error
|
||||||
self.errData = [] # List of error messages
|
self.errData = [] # List of error messages
|
||||||
self.confChanged = False # True whenever the config has chenged, false after save
|
self.confChanged = False # True whenever the config has chenged, false after save
|
||||||
self.cmdOpen = None # Path from command line for project to be opened on launch
|
self.cmdOpen = None # Path from command line for project to be opened on launch
|
||||||
|
|
||||||
# Localisation Info
|
# Localisation Info
|
||||||
self._qLocal = QLocale.system()
|
self._qLocal = QLocale.system()
|
||||||
@@ -171,7 +171,7 @@ class Config:
|
|||||||
self.fmtPadThin = False
|
self.fmtPadThin = False
|
||||||
|
|
||||||
# Spell Checking Settings
|
# Spell Checking Settings
|
||||||
self.spellLanguage = None
|
self.spellLanguage = "en"
|
||||||
|
|
||||||
# Search Bar Switches
|
# Search Bar Switches
|
||||||
self.searchCase = False
|
self.searchCase = False
|
||||||
@@ -261,21 +261,21 @@ class Config:
|
|||||||
"""
|
"""
|
||||||
return int(theSize/self.guiScale)
|
return int(theSize/self.guiScale)
|
||||||
|
|
||||||
def getDataPath(self, target=None):
|
def dataPath(self, target=None):
|
||||||
"""Return a path in the data folder.
|
"""Return a path in the data folder.
|
||||||
"""
|
"""
|
||||||
if isinstance(target, str):
|
if isinstance(target, str):
|
||||||
return self._dataPath / target
|
return self._dataPath / target
|
||||||
return self._dataPath
|
return self._dataPath
|
||||||
|
|
||||||
def getAssetPath(self, target=None):
|
def assetPath(self, target=None):
|
||||||
"""Return a path in the assets folder.
|
"""Return a path in the assets folder.
|
||||||
"""
|
"""
|
||||||
if isinstance(target, str):
|
if isinstance(target, str):
|
||||||
return self._appPath / "assets" / target
|
return self._appPath / "assets" / target
|
||||||
return self._appPath / "assets"
|
return self._appPath / "assets"
|
||||||
|
|
||||||
def getLastPath(self):
|
def lastPath(self):
|
||||||
"""Return the last path used by the user, but ensure it exists.
|
"""Return the last path used by the user, but ensure it exists.
|
||||||
"""
|
"""
|
||||||
if self._lastPath.is_dir():
|
if self._lastPath.is_dir():
|
||||||
@@ -294,7 +294,6 @@ class Config:
|
|||||||
if isinstance(confPath, (str, Path)):
|
if isinstance(confPath, (str, Path)):
|
||||||
logger.info("Setting config from alternative path: %s", confPath)
|
logger.info("Setting config from alternative path: %s", confPath)
|
||||||
self._confPath = Path(confPath)
|
self._confPath = Path(confPath)
|
||||||
|
|
||||||
if isinstance(dataPath, (str, Path)):
|
if isinstance(dataPath, (str, Path)):
|
||||||
logger.info("Setting data path from alternative path: %s", dataPath)
|
logger.info("Setting data path from alternative path: %s", dataPath)
|
||||||
self._dataPath = Path(dataPath)
|
self._dataPath = Path(dataPath)
|
||||||
@@ -306,33 +305,25 @@ class Config:
|
|||||||
logger.debug("Last Path: %s", self._lastPath)
|
logger.debug("Last Path: %s", self._lastPath)
|
||||||
logger.debug("PDF Manual: %s", self.pdfDocs)
|
logger.debug("PDF Manual: %s", self.pdfDocs)
|
||||||
|
|
||||||
# If the config and data folders don't not exist, create them
|
# If the config and data folders don't exist, create them
|
||||||
# This assumes that the os config and data folders exist
|
# This assumes that the os config and data folders exist
|
||||||
self._confPath.mkdir(exist_ok=True)
|
self._confPath.mkdir(exist_ok=True)
|
||||||
self._dataPath.mkdir(exist_ok=True)
|
self._dataPath.mkdir(exist_ok=True)
|
||||||
|
|
||||||
# We don't error on these failing since they are not essential
|
# Also create the syntax and themes folders if possible
|
||||||
if self._dataPath.is_dir():
|
if self._dataPath.is_dir():
|
||||||
(self._dataPath / "syntax").mkdir(exist_ok=True)
|
(self._dataPath / "syntax").mkdir(exist_ok=True)
|
||||||
(self._dataPath / "themes").mkdir(exist_ok=True)
|
(self._dataPath / "themes").mkdir(exist_ok=True)
|
||||||
|
|
||||||
# Check if config file exists
|
# Check if config file exists, and load it. If not, we save defaults
|
||||||
if (self._confPath / nwFiles.CONF_FILE).is_file():
|
if (self._confPath / nwFiles.CONF_FILE).is_file():
|
||||||
# If it exists, load it
|
|
||||||
self.loadConfig()
|
self.loadConfig()
|
||||||
else:
|
else:
|
||||||
# If it does not exist, save a copy of the default values
|
|
||||||
self.saveConfig()
|
self.saveConfig()
|
||||||
|
|
||||||
# Load recent projects cache
|
|
||||||
self.loadRecentCache()
|
self.loadRecentCache()
|
||||||
|
|
||||||
# Check the availability of optional packages
|
|
||||||
self._checkOptionalPackages()
|
self._checkOptionalPackages()
|
||||||
|
|
||||||
if not self.spellLanguage:
|
|
||||||
self.spellLanguage = "en"
|
|
||||||
|
|
||||||
logger.debug("Config initialisation complete")
|
logger.debug("Config initialisation complete")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
@@ -694,16 +685,17 @@ class Config:
|
|||||||
##
|
##
|
||||||
|
|
||||||
def setLastPath(self, lastPath):
|
def setLastPath(self, lastPath):
|
||||||
"""Set the last used path (by the user).
|
"""Set the last used path. Only the folder is saved, so if the
|
||||||
|
path is not a folder, the parent of the path is used instead.
|
||||||
"""
|
"""
|
||||||
if isinstance(lastPath, str):
|
if isinstance(lastPath, (str, Path)):
|
||||||
lastPath = Path(lastPath)
|
lastPath = Path(lastPath)
|
||||||
if isinstance(lastPath, Path):
|
if not lastPath.is_dir():
|
||||||
if lastPath.is_file():
|
lastPath = lastPath.parent
|
||||||
self._lastPath = lastPath.parent
|
if lastPath.is_dir():
|
||||||
elif lastPath.is_dir():
|
|
||||||
self._lastPath = lastPath
|
self._lastPath = lastPath
|
||||||
return True
|
logger.debug("Last path updated: %s" % self._lastPath)
|
||||||
|
return
|
||||||
|
|
||||||
def setWinSize(self, newWidth, newHeight):
|
def setWinSize(self, newWidth, newHeight):
|
||||||
"""Set the size of the main window, but only if the change is
|
"""Set the size of the main window, but only if the change is
|
||||||
@@ -719,7 +711,7 @@ class Config:
|
|||||||
if abs(self.winGeometry[1] - newHeight) > 5:
|
if abs(self.winGeometry[1] - newHeight) > 5:
|
||||||
self.winGeometry[1] = newHeight
|
self.winGeometry[1] = newHeight
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return True
|
return
|
||||||
|
|
||||||
def setPreferencesSize(self, newWidth, newHeight):
|
def setPreferencesSize(self, newWidth, newHeight):
|
||||||
"""Sat the size of the Preferences dialog window.
|
"""Sat the size of the Preferences dialog window.
|
||||||
@@ -727,63 +719,63 @@ class Config:
|
|||||||
self.prefGeometry[0] = int(newWidth/self.guiScale)
|
self.prefGeometry[0] = int(newWidth/self.guiScale)
|
||||||
self.prefGeometry[1] = int(newHeight/self.guiScale)
|
self.prefGeometry[1] = int(newHeight/self.guiScale)
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return True
|
return
|
||||||
|
|
||||||
def setProjColWidths(self, colWidths):
|
def setProjColWidths(self, colWidths):
|
||||||
"""Set the column widths of the Load Project dialog.
|
"""Set the column widths of the Load Project dialog.
|
||||||
"""
|
"""
|
||||||
self.projColWidth = [int(x/self.guiScale) for x in colWidths]
|
self.projColWidth = [int(x/self.guiScale) for x in colWidths]
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return True
|
return
|
||||||
|
|
||||||
def setMainPanePos(self, panePos):
|
def setMainPanePos(self, panePos):
|
||||||
"""Set the position of the main GUI splitter.
|
"""Set the position of the main GUI splitter.
|
||||||
"""
|
"""
|
||||||
self.mainPanePos = [int(x/self.guiScale) for x in panePos]
|
self.mainPanePos = [int(x/self.guiScale) for x in panePos]
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return True
|
return
|
||||||
|
|
||||||
def setDocPanePos(self, panePos):
|
def setDocPanePos(self, panePos):
|
||||||
"""Set the position of the main editor/viewer splitter.
|
"""Set the position of the main editor/viewer splitter.
|
||||||
"""
|
"""
|
||||||
self.docPanePos = [int(x/self.guiScale) for x in panePos]
|
self.docPanePos = [int(x/self.guiScale) for x in panePos]
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return True
|
return
|
||||||
|
|
||||||
def setViewPanePos(self, panePos):
|
def setViewPanePos(self, panePos):
|
||||||
"""Set the position of the viewer meta data splitter.
|
"""Set the position of the viewer meta data splitter.
|
||||||
"""
|
"""
|
||||||
self.viewPanePos = [int(x/self.guiScale) for x in panePos]
|
self.viewPanePos = [int(x/self.guiScale) for x in panePos]
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return True
|
return
|
||||||
|
|
||||||
def setOutlinePanePos(self, panePos):
|
def setOutlinePanePos(self, panePos):
|
||||||
"""Set the position of the outline details splitter.
|
"""Set the position of the outline details splitter.
|
||||||
"""
|
"""
|
||||||
self.outlnPanePos = [int(x/self.guiScale) for x in panePos]
|
self.outlnPanePos = [int(x/self.guiScale) for x in panePos]
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return True
|
return
|
||||||
|
|
||||||
def setShowRefPanel(self, checkState):
|
def setShowRefPanel(self, checkState):
|
||||||
"""Set the visibility state of the reference panel.
|
"""Set the visibility state of the reference panel.
|
||||||
"""
|
"""
|
||||||
self.showRefPanel = checkState
|
self.showRefPanel = checkState
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return self.showRefPanel
|
return
|
||||||
|
|
||||||
def setViewComments(self, viewState):
|
def setViewComments(self, viewState):
|
||||||
"""Set the visibility state of comments in the viewer.
|
"""Set the visibility state of comments in the viewer.
|
||||||
"""
|
"""
|
||||||
self.viewComments = viewState
|
self.viewComments = viewState
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return self.viewComments
|
return
|
||||||
|
|
||||||
def setViewSynopsis(self, viewState):
|
def setViewSynopsis(self, viewState):
|
||||||
"""Set the visibility state of synopsis comments in the viewer.
|
"""Set the visibility state of synopsis comments in the viewer.
|
||||||
"""
|
"""
|
||||||
self.viewSynopsis = viewState
|
self.viewSynopsis = viewState
|
||||||
self.confChanged = True
|
self.confChanged = True
|
||||||
return self.viewSynopsis
|
return
|
||||||
|
|
||||||
##
|
##
|
||||||
# Default Setters
|
# Default Setters
|
||||||
|
|||||||
@@ -430,7 +430,7 @@ class ProjectBuilder:
|
|||||||
logger.error("No project path set for the example project")
|
logger.error("No project path set for the example project")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
pkgSample = self.mainConf.getAssetPath("sample.zip")
|
pkgSample = self.mainConf.assetPath("sample.zip")
|
||||||
if pkgSample.is_file():
|
if pkgSample.is_file():
|
||||||
try:
|
try:
|
||||||
shutil.unpack_archive(pkgSample, projPath)
|
shutil.unpack_archive(pkgSample, projPath)
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ class GuiAbout(QDialog):
|
|||||||
def _fillNotesPage(self):
|
def _fillNotesPage(self):
|
||||||
"""Load the content for the Release Notes page.
|
"""Load the content for the Release Notes page.
|
||||||
"""
|
"""
|
||||||
docPath = self.mainConf.getAssetPath("text") / "release_notes.htm"
|
docPath = self.mainConf.assetPath("text") / "release_notes.htm"
|
||||||
docText = readTextFile(docPath)
|
docText = readTextFile(docPath)
|
||||||
if docText:
|
if docText:
|
||||||
self.pageNotes.setHtml(docText)
|
self.pageNotes.setHtml(docText)
|
||||||
@@ -243,7 +243,7 @@ class GuiAbout(QDialog):
|
|||||||
def _fillLicensePage(self):
|
def _fillLicensePage(self):
|
||||||
"""Load the content for the Licence page.
|
"""Load the content for the Licence page.
|
||||||
"""
|
"""
|
||||||
docPath = self.mainConf.getAssetPath("text") / "gplv3_en.htm"
|
docPath = self.mainConf.assetPath("text") / "gplv3_en.htm"
|
||||||
docText = readTextFile(docPath)
|
docText = readTextFile(docPath)
|
||||||
if docText:
|
if docText:
|
||||||
self.pageLicense.setHtml(docText)
|
self.pageLicense.setHtml(docText)
|
||||||
|
|||||||
@@ -118,10 +118,10 @@ class GuiTheme:
|
|||||||
self._availThemes = {}
|
self._availThemes = {}
|
||||||
self._availSyntax = {}
|
self._availSyntax = {}
|
||||||
|
|
||||||
self._listConf(self._availSyntax, self.mainConf.getAssetPath("syntax"))
|
self._listConf(self._availSyntax, self.mainConf.assetPath("syntax"))
|
||||||
self._listConf(self._availThemes, self.mainConf.getAssetPath("themes"))
|
self._listConf(self._availThemes, self.mainConf.assetPath("themes"))
|
||||||
self._listConf(self._availSyntax, self.mainConf.getDataPath("syntax"))
|
self._listConf(self._availSyntax, self.mainConf.dataPath("syntax"))
|
||||||
self._listConf(self._availThemes, self.mainConf.getDataPath("themes"))
|
self._listConf(self._availThemes, self.mainConf.dataPath("themes"))
|
||||||
|
|
||||||
self.loadTheme()
|
self.loadTheme()
|
||||||
self.loadSyntax()
|
self.loadSyntax()
|
||||||
@@ -472,7 +472,7 @@ class GuiIcons:
|
|||||||
self._confName = "icons.conf"
|
self._confName = "icons.conf"
|
||||||
|
|
||||||
# Icon Theme Path
|
# Icon Theme Path
|
||||||
self._iconPath = self.mainConf.getAssetPath("icons")
|
self._iconPath = self.mainConf.assetPath("icons")
|
||||||
|
|
||||||
# Icon Theme Meta
|
# Icon Theme Meta
|
||||||
self.themeName = ""
|
self.themeName = ""
|
||||||
@@ -568,7 +568,7 @@ class GuiIcons:
|
|||||||
if decoKey in self._themeMap:
|
if decoKey in self._themeMap:
|
||||||
imgPath = self._themeMap[decoKey]
|
imgPath = self._themeMap[decoKey]
|
||||||
elif decoKey in self.IMAGE_MAP:
|
elif decoKey in self.IMAGE_MAP:
|
||||||
imgPath = self.mainConf.getAssetPath("images") / self.IMAGE_MAP[decoKey]
|
imgPath = self.mainConf.assetPath("images") / self.IMAGE_MAP[decoKey]
|
||||||
else:
|
else:
|
||||||
logger.error("Decoration with name '%s' does not exist", decoKey)
|
logger.error("Decoration with name '%s' does not exist", decoKey)
|
||||||
return QPixmap()
|
return QPixmap()
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ class GuiMain(QMainWindow):
|
|||||||
self.resize(*self.mainConf.getWinSize())
|
self.resize(*self.mainConf.getWinSize())
|
||||||
self._updateWindowTitle()
|
self._updateWindowTitle()
|
||||||
|
|
||||||
nwIcon = self.mainConf.getAssetPath("icons") / "novelwriter.svg"
|
nwIcon = self.mainConf.assetPath("icons") / "novelwriter.svg"
|
||||||
self.nwIcon = QIcon(str(nwIcon)) if nwIcon.is_file() else QIcon()
|
self.nwIcon = QIcon(str(nwIcon)) if nwIcon.is_file() else QIcon()
|
||||||
self.setWindowIcon(self.nwIcon)
|
self.setWindowIcon(self.nwIcon)
|
||||||
qApp.setWindowIcon(self.nwIcon)
|
qApp.setWindowIcon(self.nwIcon)
|
||||||
@@ -698,7 +698,7 @@ class GuiMain(QMainWindow):
|
|||||||
logger.error("No project open")
|
logger.error("No project open")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
lastPath = self.mainConf.getLastPath()
|
lastPath = self.mainConf.lastPath()
|
||||||
extFilter = [
|
extFilter = [
|
||||||
self.tr("Text files ({0})").format("*.txt"),
|
self.tr("Text files ({0})").format("*.txt"),
|
||||||
self.tr("Markdown files ({0})").format("*.md"),
|
self.tr("Markdown files ({0})").format("*.md"),
|
||||||
|
|||||||
@@ -890,7 +890,7 @@ class GuiBuildNovel(QDialog):
|
|||||||
|
|
||||||
cleanName = makeFileNameSafe(self.theProject.data.name)
|
cleanName = makeFileNameSafe(self.theProject.data.name)
|
||||||
fileName = "%s.%s" % (cleanName, fileExt)
|
fileName = "%s.%s" % (cleanName, fileExt)
|
||||||
savePath = self.mainConf.getLastPath() / fileName
|
savePath = self.mainConf.lastPath() / fileName
|
||||||
savePath, _ = QFileDialog.getSaveFileName(
|
savePath, _ = QFileDialog.getSaveFileName(
|
||||||
self, self.tr("Save Document As"), str(savePath)
|
self, self.tr("Save Document As"), str(savePath)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ class GuiLipsum(QDialog):
|
|||||||
def _doInsert(self):
|
def _doInsert(self):
|
||||||
"""Load the text and insert it in the open document.
|
"""Load the text and insert it in the open document.
|
||||||
"""
|
"""
|
||||||
lipsumFile = self.mainConf.getAssetPath("text") / "lipsum.txt"
|
lipsumFile = self.mainConf.assetPath("text") / "lipsum.txt"
|
||||||
lipsumText = readTextFile(lipsumFile).splitlines()
|
lipsumText = readTextFile(lipsumFile).splitlines()
|
||||||
|
|
||||||
if self.randSwitch.isChecked():
|
if self.randSwitch.isChecked():
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ class ProjWizardFolderPage(QWizardPage):
|
|||||||
def _doBrowse(self):
|
def _doBrowse(self):
|
||||||
"""Select a project folder.
|
"""Select a project folder.
|
||||||
"""
|
"""
|
||||||
lastPath = self.mainConf.getLastPath()
|
lastPath = self.mainConf.lastPath()
|
||||||
projDir = QFileDialog.getExistingDirectory(
|
projDir = QFileDialog.getExistingDirectory(
|
||||||
self, self.tr("Select Project Folder"), str(lastPath), options=QFileDialog.ShowDirsOnly
|
self, self.tr("Select Project Folder"), str(lastPath), options=QFileDialog.ShowDirsOnly
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ class GuiWritingStats(QDialog):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# Generate the file name
|
# Generate the file name
|
||||||
savePath = self.mainConf.getLastPath() / f"sessionStats.{fileExt}"
|
savePath = self.mainConf.lastPath() / f"sessionStats.{fileExt}"
|
||||||
savePath, _ = QFileDialog.getSaveFileName(
|
savePath, _ = QFileDialog.getSaveFileName(
|
||||||
self, self.tr("Save Data As"), str(savePath), "%s (*.%s)" % (textFmt, fileExt)
|
self, self.tr("Save Data As"), str(savePath), "%s (*.%s)" % (textFmt, fileExt)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -313,98 +313,98 @@ def testBaseConfig_SettersGetters(tmpConf, tmpDir, outDir, refDir):
|
|||||||
|
|
||||||
# Window Size
|
# Window Size
|
||||||
tmpConf.guiScale = 1.0
|
tmpConf.guiScale = 1.0
|
||||||
assert tmpConf.setWinSize(1205, 655)
|
tmpConf.setWinSize(1205, 655)
|
||||||
assert not tmpConf.confChanged
|
assert tmpConf.confChanged is False
|
||||||
|
|
||||||
tmpConf.guiScale = 2.0
|
tmpConf.guiScale = 2.0
|
||||||
assert tmpConf.setWinSize(70, 70)
|
tmpConf.setWinSize(70, 70)
|
||||||
assert tmpConf.getWinSize() == [70, 70]
|
assert tmpConf.getWinSize() == [70, 70]
|
||||||
assert tmpConf.winGeometry == [35, 35]
|
assert tmpConf.winGeometry == [35, 35]
|
||||||
|
|
||||||
tmpConf.guiScale = 1.0
|
tmpConf.guiScale = 1.0
|
||||||
assert tmpConf.setWinSize(70, 70)
|
tmpConf.setWinSize(70, 70)
|
||||||
assert tmpConf.getWinSize() == [70, 70]
|
assert tmpConf.getWinSize() == [70, 70]
|
||||||
assert tmpConf.winGeometry == [70, 70]
|
assert tmpConf.winGeometry == [70, 70]
|
||||||
|
|
||||||
assert tmpConf.setWinSize(1200, 650)
|
tmpConf.setWinSize(1200, 650)
|
||||||
|
|
||||||
# Preferences Size
|
# Preferences Size
|
||||||
tmpConf.guiScale = 2.0
|
tmpConf.guiScale = 2.0
|
||||||
assert tmpConf.setPreferencesSize(70, 70)
|
tmpConf.setPreferencesSize(70, 70)
|
||||||
assert tmpConf.getPreferencesSize() == [70, 70]
|
assert tmpConf.getPreferencesSize() == [70, 70]
|
||||||
assert tmpConf.prefGeometry == [35, 35]
|
assert tmpConf.prefGeometry == [35, 35]
|
||||||
|
|
||||||
tmpConf.guiScale = 1.0
|
tmpConf.guiScale = 1.0
|
||||||
assert tmpConf.setPreferencesSize(70, 70)
|
tmpConf.setPreferencesSize(70, 70)
|
||||||
assert tmpConf.getPreferencesSize() == [70, 70]
|
assert tmpConf.getPreferencesSize() == [70, 70]
|
||||||
assert tmpConf.prefGeometry == [70, 70]
|
assert tmpConf.prefGeometry == [70, 70]
|
||||||
|
|
||||||
assert tmpConf.setPreferencesSize(700, 615)
|
tmpConf.setPreferencesSize(700, 615)
|
||||||
|
|
||||||
# Project Settings Tree Columns
|
# Project Settings Tree Columns
|
||||||
tmpConf.guiScale = 2.0
|
tmpConf.guiScale = 2.0
|
||||||
assert tmpConf.setProjColWidths([10, 20, 30])
|
tmpConf.setProjColWidths([10, 20, 30])
|
||||||
assert tmpConf.getProjColWidths() == [10, 20, 30]
|
assert tmpConf.getProjColWidths() == [10, 20, 30]
|
||||||
assert tmpConf.projColWidth == [5, 10, 15]
|
assert tmpConf.projColWidth == [5, 10, 15]
|
||||||
|
|
||||||
tmpConf.guiScale = 1.0
|
tmpConf.guiScale = 1.0
|
||||||
assert tmpConf.setProjColWidths([10, 20, 30])
|
tmpConf.setProjColWidths([10, 20, 30])
|
||||||
assert tmpConf.getProjColWidths() == [10, 20, 30]
|
assert tmpConf.getProjColWidths() == [10, 20, 30]
|
||||||
assert tmpConf.projColWidth == [10, 20, 30]
|
assert tmpConf.projColWidth == [10, 20, 30]
|
||||||
|
|
||||||
assert tmpConf.setProjColWidths([200, 60, 140])
|
tmpConf.setProjColWidths([200, 60, 140])
|
||||||
|
|
||||||
# Main Pane Splitter
|
# Main Pane Splitter
|
||||||
tmpConf.guiScale = 2.0
|
tmpConf.guiScale = 2.0
|
||||||
assert tmpConf.setMainPanePos([200, 700])
|
tmpConf.setMainPanePos([200, 700])
|
||||||
assert tmpConf.getMainPanePos() == [200, 700]
|
assert tmpConf.getMainPanePos() == [200, 700]
|
||||||
assert tmpConf.mainPanePos == [100, 350]
|
assert tmpConf.mainPanePos == [100, 350]
|
||||||
|
|
||||||
tmpConf.guiScale = 1.0
|
tmpConf.guiScale = 1.0
|
||||||
assert tmpConf.setMainPanePos([200, 700])
|
tmpConf.setMainPanePos([200, 700])
|
||||||
assert tmpConf.getMainPanePos() == [200, 700]
|
assert tmpConf.getMainPanePos() == [200, 700]
|
||||||
assert tmpConf.mainPanePos == [200, 700]
|
assert tmpConf.mainPanePos == [200, 700]
|
||||||
|
|
||||||
assert tmpConf.setMainPanePos([300, 800])
|
tmpConf.setMainPanePos([300, 800])
|
||||||
|
|
||||||
# Doc Pane Splitter
|
# Doc Pane Splitter
|
||||||
tmpConf.guiScale = 2.0
|
tmpConf.guiScale = 2.0
|
||||||
assert tmpConf.setDocPanePos([300, 300])
|
tmpConf.setDocPanePos([300, 300])
|
||||||
assert tmpConf.getDocPanePos() == [300, 300]
|
assert tmpConf.getDocPanePos() == [300, 300]
|
||||||
assert tmpConf.docPanePos == [150, 150]
|
assert tmpConf.docPanePos == [150, 150]
|
||||||
|
|
||||||
tmpConf.guiScale = 1.0
|
tmpConf.guiScale = 1.0
|
||||||
assert tmpConf.setDocPanePos([300, 300])
|
tmpConf.setDocPanePos([300, 300])
|
||||||
assert tmpConf.getDocPanePos() == [300, 300]
|
assert tmpConf.getDocPanePos() == [300, 300]
|
||||||
assert tmpConf.docPanePos == [300, 300]
|
assert tmpConf.docPanePos == [300, 300]
|
||||||
|
|
||||||
assert tmpConf.setDocPanePos([400, 400])
|
tmpConf.setDocPanePos([400, 400])
|
||||||
|
|
||||||
# View Pane Splitter
|
# View Pane Splitter
|
||||||
tmpConf.guiScale = 2.0
|
tmpConf.guiScale = 2.0
|
||||||
assert tmpConf.setViewPanePos([400, 250])
|
tmpConf.setViewPanePos([400, 250])
|
||||||
assert tmpConf.getViewPanePos() == [400, 250]
|
assert tmpConf.getViewPanePos() == [400, 250]
|
||||||
assert tmpConf.viewPanePos == [200, 125]
|
assert tmpConf.viewPanePos == [200, 125]
|
||||||
|
|
||||||
tmpConf.guiScale = 1.0
|
tmpConf.guiScale = 1.0
|
||||||
assert tmpConf.setViewPanePos([400, 250])
|
tmpConf.setViewPanePos([400, 250])
|
||||||
assert tmpConf.getViewPanePos() == [400, 250]
|
assert tmpConf.getViewPanePos() == [400, 250]
|
||||||
assert tmpConf.viewPanePos == [400, 250]
|
assert tmpConf.viewPanePos == [400, 250]
|
||||||
|
|
||||||
assert tmpConf.setViewPanePos([500, 150])
|
tmpConf.setViewPanePos([500, 150])
|
||||||
|
|
||||||
# Outline Pane Splitter
|
# Outline Pane Splitter
|
||||||
tmpConf.guiScale = 2.0
|
tmpConf.guiScale = 2.0
|
||||||
assert tmpConf.setOutlinePanePos([400, 250])
|
tmpConf.setOutlinePanePos([400, 250])
|
||||||
assert tmpConf.getOutlinePanePos() == [400, 250]
|
assert tmpConf.getOutlinePanePos() == [400, 250]
|
||||||
assert tmpConf.outlnPanePos == [200, 125]
|
assert tmpConf.outlnPanePos == [200, 125]
|
||||||
|
|
||||||
tmpConf.guiScale = 1.0
|
tmpConf.guiScale = 1.0
|
||||||
assert tmpConf.setOutlinePanePos([400, 250])
|
tmpConf.setOutlinePanePos([400, 250])
|
||||||
assert tmpConf.getOutlinePanePos() == [400, 250]
|
assert tmpConf.getOutlinePanePos() == [400, 250]
|
||||||
assert tmpConf.outlnPanePos == [400, 250]
|
assert tmpConf.outlnPanePos == [400, 250]
|
||||||
|
|
||||||
assert tmpConf.setOutlinePanePos([500, 150])
|
tmpConf.setOutlinePanePos([500, 150])
|
||||||
|
|
||||||
# Getters Only
|
# Getters Only
|
||||||
# ============
|
# ============
|
||||||
@@ -424,17 +424,20 @@ def testBaseConfig_SettersGetters(tmpConf, tmpDir, outDir, refDir):
|
|||||||
# Flag Setters
|
# Flag Setters
|
||||||
# ============
|
# ============
|
||||||
|
|
||||||
assert tmpConf.setShowRefPanel(False) is False
|
tmpConf.setShowRefPanel(False)
|
||||||
assert tmpConf.showRefPanel is False
|
assert tmpConf.showRefPanel is False
|
||||||
assert tmpConf.setShowRefPanel(True) is True
|
tmpConf.setShowRefPanel(True)
|
||||||
|
assert tmpConf.showRefPanel is True
|
||||||
|
|
||||||
assert tmpConf.setViewComments(False) is False
|
tmpConf.setViewComments(False)
|
||||||
assert tmpConf.viewComments is False
|
assert tmpConf.viewComments is False
|
||||||
assert tmpConf.setViewComments(True) is True
|
tmpConf.setViewComments(True)
|
||||||
|
assert tmpConf.viewComments is True
|
||||||
|
|
||||||
assert tmpConf.setViewSynopsis(False) is False
|
tmpConf.setViewSynopsis(False)
|
||||||
assert tmpConf.viewSynopsis is False
|
assert tmpConf.viewSynopsis is False
|
||||||
assert tmpConf.setViewSynopsis(True) is True
|
tmpConf.setViewSynopsis(True)
|
||||||
|
assert tmpConf.viewSynopsis is True
|
||||||
|
|
||||||
# Check Final File
|
# Check Final File
|
||||||
# ================
|
# ================
|
||||||
|
|||||||
@@ -395,7 +395,7 @@ def testCoreTools_NewSample(monkeypatch, fncPath, tmpConf, tmpPath, mockGUI):
|
|||||||
srcSample = tmpConf._appRoot / "sample"
|
srcSample = tmpConf._appRoot / "sample"
|
||||||
dstSample = tmpPath / "sample.zip"
|
dstSample = tmpPath / "sample.zip"
|
||||||
monkeypatch.setattr(
|
monkeypatch.setattr(
|
||||||
"novelwriter.config.Config.getAssetPath", lambda *a: tmpPath / "sample.zip"
|
"novelwriter.config.Config.assetPath", lambda *a: tmpPath / "sample.zip"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Cannot extract when the zip does not exist
|
# Cannot extract when the zip does not exist
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ def testDlgAbout_NWDialog(qtbot, monkeypatch, nwGUI):
|
|||||||
assert msgAbout.pageLicense.document().characterCount() > 100
|
assert msgAbout.pageLicense.document().characterCount() > 100
|
||||||
|
|
||||||
with monkeypatch.context() as mp:
|
with monkeypatch.context() as mp:
|
||||||
mp.setattr("novelwriter.config.Config.getAssetPath", lambda *a: Path("whatever"))
|
mp.setattr("novelwriter.config.Config.assetPath", lambda *a: Path("whatever"))
|
||||||
msgAbout._fillNotesPage()
|
msgAbout._fillNotesPage()
|
||||||
assert msgAbout.pageNotes.toPlainText() == "Error loading release notes text ..."
|
assert msgAbout.pageNotes.toPlainText() == "Error loading release notes text ..."
|
||||||
msgAbout._fillLicensePage()
|
msgAbout._fillLicensePage()
|
||||||
|
|||||||
@@ -132,8 +132,8 @@ def testGuiTheme_Theme(qtbot, monkeypatch, nwGUI, fncPath):
|
|||||||
# List Themes
|
# List Themes
|
||||||
# ===========
|
# ===========
|
||||||
|
|
||||||
shutil.copy(mainConf.getAssetPath("themes") / "default_dark.conf", fncPath / "themes")
|
shutil.copy(mainConf.assetPath("themes") / "default_dark.conf", fncPath / "themes")
|
||||||
shutil.copy(mainConf.getAssetPath("themes") / "default.conf", fncPath / "themes")
|
shutil.copy(mainConf.assetPath("themes") / "default.conf", fncPath / "themes")
|
||||||
|
|
||||||
# Block the reading of the files
|
# Block the reading of the files
|
||||||
with monkeypatch.context() as mp:
|
with monkeypatch.context() as mp:
|
||||||
@@ -199,8 +199,8 @@ def testGuiTheme_Syntax(qtbot, monkeypatch, nwGUI, fncPath):
|
|||||||
# List Themes
|
# List Themes
|
||||||
# ===========
|
# ===========
|
||||||
|
|
||||||
shutil.copy(mainConf.getAssetPath("syntax") / "default_dark.conf", fncPath / "syntax")
|
shutil.copy(mainConf.assetPath("syntax") / "default_dark.conf", fncPath / "syntax")
|
||||||
shutil.copy(mainConf.getAssetPath("syntax") / "default_light.conf", fncPath / "syntax")
|
shutil.copy(mainConf.assetPath("syntax") / "default_light.conf", fncPath / "syntax")
|
||||||
|
|
||||||
# Block the reading of the files
|
# Block the reading of the files
|
||||||
with monkeypatch.context() as mp:
|
with monkeypatch.context() as mp:
|
||||||
|
|||||||
Reference in New Issue
Block a user