Merge branch 'main' into release_0.12

This commit is contained in:
Veronica K. B. Olsen
2020-08-12 22:04:45 +02:00
37 changed files with 315 additions and 322 deletions
+1 -3
View File
@@ -10,9 +10,7 @@ coverage:
project:
default:
threshold: 1%
patch:
default:
threshold: 1%
patch: no
changes: no
parsers:
+27
View File
@@ -0,0 +1,27 @@
name: Flake 8 Checks
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
checkSyntax:
runs-on: ubuntu-latest
steps:
- name: Python Setup
uses: actions/setup-python@v1
with:
python-version: 3.7
architecture: x64
- name: Checkout novelWriter
uses: actions/checkout@v2
- name: Install flake8
run: pip install flake8
- name: Check for Syntax Error on novelWriter
run: flake8 nw --count --select=E9,F63,F7,F82 --show-source --statistics
- name: Check for Syntax Error on Tests
run: flake8 tests --count --select=E9,F63,F7,F82 --show-source --statistics
- name: Check for Code Style on novelWriter
run: flake8 nw --count --max-line-length=99 --select E1,E231,E27,E4,E5,E7,E9,W,F --show-source --statistics
+25
View File
@@ -0,0 +1,25 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/source/conf.py
# Build documentation with MkDocs
#mkdocs:
# configuration: mkdocs.yml
# Optionally build your docs in additional formats such as PDF
formats:
- htmlzip
- epub
- pdf
# Optionally set the version of Python and requirements required to build your docs
python:
version: 3.7
install:
- requirements: docs/source/requirements.txt
+1
View File
@@ -0,0 +1 @@
sphinx_rtd_theme
+4 -4
View File
@@ -239,13 +239,13 @@ def main(sysArgs=None):
)
try:
import PyQt5.QtSvg
except:
import PyQt5.QtSvg # noqa: F401
except ImportError:
errorData.append("Python module 'PyQt5.QtSvg' is missing.")
try:
import lxml
except:
import lxml # noqa: F401
except ImportError:
errorData.append("Python module 'lxml' is missing.")
if errorData:
+4 -5
View File
@@ -26,7 +26,6 @@
"""
import logging
import nw
from datetime import datetime
@@ -38,7 +37,7 @@ def checkString(checkValue, defaultValue, allowNone=False):
"""Check if a variable is a string or a none.
"""
if allowNone:
if checkValue == None:
if checkValue is None:
return None
if checkValue == "None":
return None
@@ -50,20 +49,20 @@ def checkInt(checkValue, defaultValue, allowNone=False):
"""Check if a variable is an integer or a none.
"""
if allowNone:
if checkValue == None:
if checkValue is None:
return None
if checkValue == "None":
return None
try:
return int(checkValue)
except:
except Exception:
return defaultValue
def checkBool(checkValue, defaultValue, allowNone=False):
"""Check if a variable is a boolean or a none.
"""
if allowNone:
if checkValue == None:
if checkValue is None:
return None
if checkValue == "None":
return None
+4 -5
View File
@@ -29,7 +29,6 @@ import logging
import configparser
import json
import sys
import nw
from os import path, mkdir, unlink, rename
from time import time
@@ -862,7 +861,7 @@ class Config:
for i in range(listLen):
try:
outData.append(castTo(inData[i]))
except:
except Exception:
outData.append(listDefault[i])
return outData
@@ -902,16 +901,16 @@ class Config:
"""Cheks if we have the optional packages used by some features.
"""
try:
import enchant
import enchant # noqa: F401
self.hasEnchant = True
logger.debug("Checking package 'pyenchant': Ok")
except:
except Exception:
self.hasEnchant = False
logger.debug("Checking package 'pyenchant': Missing")
try:
self.hasAssistant = which("assistant")
except:
except Exception:
self.hasAssistant = False
if self.hasAssistant:
logger.debug("Checking executable 'assistant': Ok")
+1 -4
View File
@@ -27,7 +27,6 @@
import logging
import json
import nw
from os import path
from time import time
@@ -222,7 +221,7 @@ class NWIndex():
if len(self.textCounts[tHandle]) != 3:
self.indexBroken = True
except:
except Exception:
self.indexBroken = True
if self.indexBroken:
@@ -603,8 +602,6 @@ class NWIndex():
by tHandle.
"""
theRefs = {}
tItem = self.theProject.projTree[tHandle]
if tHandle is None:
return theRefs
+17 -18
View File
@@ -26,7 +26,6 @@
"""
import logging
import nw
from lxml import etree
@@ -73,19 +72,19 @@ class NWItem():
"order" : str(self.itemOrder),
"parent" : str(self.parHandle),
})
xSub = self._subPack(xPack,"name", text=str(self.itemName))
xSub = self._subPack(xPack,"type", text=str(self.itemType.name))
xSub = self._subPack(xPack,"class", text=str(self.itemClass.name))
xSub = self._subPack(xPack,"status", text=str(self.itemStatus))
self._subPack(xPack, "name", text=str(self.itemName))
self._subPack(xPack, "type", text=str(self.itemType.name))
self._subPack(xPack, "class", text=str(self.itemClass.name))
self._subPack(xPack, "status", text=str(self.itemStatus))
if self.itemType == nwItemType.FILE:
xSub = self._subPack(xPack,"exported", text=str(self.isExported))
xSub = self._subPack(xPack,"layout", text=str(self.itemLayout.name))
xSub = self._subPack(xPack,"charCount", text=str(self.charCount), none=False)
xSub = self._subPack(xPack,"wordCount", text=str(self.wordCount), none=False)
xSub = self._subPack(xPack,"paraCount", text=str(self.paraCount), none=False)
xSub = self._subPack(xPack,"cursorPos", text=str(self.cursorPos), none=False)
self._subPack(xPack, "exported", text=str(self.isExported))
self._subPack(xPack, "layout", text=str(self.itemLayout.name))
self._subPack(xPack, "charCount", text=str(self.charCount), none=False)
self._subPack(xPack, "wordCount", text=str(self.wordCount), none=False)
self._subPack(xPack, "paraCount", text=str(self.paraCount), none=False)
self._subPack(xPack, "cursorPos", text=str(self.cursorPos), none=False)
else:
xSub = self._subPack(xPack,"expanded", text=str(self.isExpanded))
self._subPack(xPack, "expanded", text=str(self.isExpanded))
return
def unpackXML(self, xItem):
@@ -130,12 +129,12 @@ class NWItem():
def _subPack(xParent, name, attrib=None, text=None, none=True):
"""Packs the values into an xml element.
"""
if not none and (text == None or text == "None"):
if not none and (text is None or text == "None"):
return None
xSub = etree.SubElement(xParent, name, attrib=attrib)
if text is not None:
xSub.text = text
return xSub
return
##
# Set Item Values
@@ -233,18 +232,18 @@ class NWItem():
"""Save the expanded status of an item in the project tree.
"""
if isinstance(expState, str):
self.isExpanded = expState == str(True)
self.isExpanded = (expState == str(True))
else:
self.isExpanded = expState == True
self.isExpanded = (expState == True) # noqa: E712
return
def setExported(self, expState):
"""Save the export flag.
"""
if isinstance(expState, str):
self.isExported = expState == str(True)
self.isExported = (expState == str(True))
else:
self.isExported = expState == True
self.isExported = (expState == True) # noqa: E712
return
##
+3 -3
View File
@@ -153,15 +153,15 @@ class OptionState():
def setValue(self, setGroup, setName, setValue):
"""Saves a value, with a given group and name.
"""
if not setGroup in self.validMap:
if setGroup not in self.validMap:
logger.error("Unknown option group '%s'" % setGroup)
return False
if not setName in self.validMap[setGroup]:
if setName not in self.validMap[setGroup]:
logger.error("Unknown option name '%s'" % setName)
return False
if not setGroup in self.theState:
if setGroup not in self.theState:
self.theState[setGroup] = {}
self.theState[setGroup][setName] = setValue
+17 -17
View File
@@ -26,7 +26,6 @@
"""
import logging
import json
import nw
from os import path, mkdir, listdir, unlink, rename, rmdir
@@ -265,27 +264,28 @@ class NWProject():
if popMinimal:
# Creating a minimal project with a few root folders and a
# single chapter folder with a single file.
nHandle = self.newRoot("Novel", nwItemClass.NOVEL)
xHandle = self.newRoot("Plot", nwItemClass.PLOT)
xHandle = self.newRoot("Characters", nwItemClass.CHARACTER)
xHandle = self.newRoot("World", nwItemClass.WORLD)
tHandle = self.newFile("Title Page", nwItemClass.NOVEL, nHandle)
dHandle = self.newFolder("New Chapter", nwItemClass.NOVEL, nHandle)
cHandle = self.newFile("New Chapter", nwItemClass.NOVEL, dHandle)
sHandle = self.newFile("New Scene", nwItemClass.NOVEL, dHandle)
xHandle = {}
xHandle[1] = self.newRoot("Novel", nwItemClass.NOVEL)
xHandle[2] = self.newRoot("Plot", nwItemClass.PLOT)
xHandle[3] = self.newRoot("Characters", nwItemClass.CHARACTER)
xHandle[4] = self.newRoot("World", nwItemClass.WORLD)
xHandle[5] = self.newFile("Title Page", nwItemClass.NOVEL, xHandle[1])
xHandle[6] = self.newFolder("New Chapter", nwItemClass.NOVEL, xHandle[1])
xHandle[7] = self.newFile("New Chapter", nwItemClass.NOVEL, xHandle[6])
xHandle[8] = self.newFile("New Scene", nwItemClass.NOVEL, xHandle[6])
self.projTree.setFileItemLayout(tHandle, nwItemLayout.TITLE)
self.projTree.setFileItemLayout(cHandle, nwItemLayout.CHAPTER)
self.projTree.setFileItemLayout(xHandle[5], nwItemLayout.TITLE)
self.projTree.setFileItemLayout(xHandle[7], nwItemLayout.CHAPTER)
aDoc.openDocument(tHandle, showStatus=False)
aDoc.openDocument(xHandle[5], showStatus=False)
aDoc.saveDocument(titlePage)
aDoc.clearDocument()
aDoc.openDocument(cHandle, showStatus=False)
aDoc.openDocument(xHandle[7], showStatus=False)
aDoc.saveDocument("## New Chapter\n\n")
aDoc.clearDocument()
aDoc.openDocument(sHandle, showStatus=False)
aDoc.openDocument(xHandle[8], showStatus=False)
aDoc.saveDocument("### New Scene\n\n")
aDoc.clearDocument()
@@ -838,7 +838,6 @@ class NWProject():
project path, or if the folder doesn't exist, look for the zip
file in the assets folder.
"""
projName = projData.get("projName", "Sample Project")
projPath = projData.get("projPath", None)
if projPath is None:
logger.error("No project path set for the example project")
@@ -1243,7 +1242,8 @@ class NWProject():
for aValue in theValue:
if not isinstance(aValue, str):
aValue = str(aValue)
if aValue == "" and not allowNone: continue
if aValue == "" and not allowNone:
continue
xItem = etree.SubElement(xParent, theName)
xItem.text = aValue
return
@@ -1402,7 +1402,7 @@ class NWProject():
try:
rmdir(theData)
logger.info("Removed folder: %s" % theFolder)
except:
except Exception:
errList.append("Failed to remove: %s" % theFolder)
return errList
+2 -2
View File
@@ -149,7 +149,7 @@ class NWSpellEnchant(NWSpellCheck):
self.theDict = enchant.Dict(theLang)
self.spellLanguage = theLang
logger.debug("Enchant spell checking for language %s loaded" % theLang)
except:
except Exception:
logger.error("Failed to load enchant spell checking for language %s" % theLang)
self.theDict = NWSpellEnchantDummy()
self.spellLanguage = None
@@ -186,7 +186,7 @@ class NWSpellEnchant(NWSpellCheck):
for spTag, spProvider in enchant.list_dicts():
spName = "%s [%s]" % (self.expandLanguage(spTag), spProvider.name)
retList.append((spTag, spName))
except:
except Exception:
logger.error("Failed to list languages for enchant spell checking")
return retList
-1
View File
@@ -26,7 +26,6 @@
"""
import logging
import nw
from lxml import etree
-7
View File
@@ -27,7 +27,6 @@
import logging
import re
import nw
from nw.core.tokenizer import Tokenizer
from nw.constants import nwUnicode, nwLabels, nwKeyWords
@@ -153,12 +152,6 @@ class ToHtml(Tokenizer):
h3 = "h3"
h4 = "h4"
alignHead = self.A_LEFT
if self.doJustify:
alignPar = self.A_JUSTIFY
else:
alignPar = self.A_LEFT
self.theResult = ""
thisPar = []
+23 -40
View File
@@ -28,7 +28,6 @@
"""
import logging
import nw
logger = logging.getLogger(__name__)
@@ -78,7 +77,8 @@ def countWords(theText):
charCount += theLen
if countPara and prevEmpty:
paraCount += 1
prevEmpty = countPara == False
prevEmpty = not countPara
return charCount, wordCount, paraCount
@@ -139,48 +139,31 @@ def _numberToWordEN(numVal):
tenVal = (numVal-oneVal) % 100
hunVal = (numVal-tenVal-oneVal) % 1000
if hunVal == 100: hunWord = "One Hundred"
if hunVal == 200: hunWord = "Two Hundred"
if hunVal == 300: hunWord = "Three Hundred"
if hunVal == 400: hunWord = "Four Hundred"
if hunVal == 500: hunWord = "Five Hundred"
if hunVal == 600: hunWord = "Six Hundred"
if hunVal == 700: hunWord = "Seven Hundred"
if hunVal == 800: hunWord = "Eight Hundred"
if hunVal == 900: hunWord = "Nine Hundred"
if tenVal == 20: tenWord = "Twenty"
if tenVal == 30: tenWord = "Thirty"
if tenVal == 40: tenWord = "Forty"
if tenVal == 50: tenWord = "Fifty"
if tenVal == 60: tenWord = "Sixty"
if tenVal == 70: tenWord = "Seventy"
if tenVal == 80: tenWord = "Eighty"
if tenVal == 90: tenWord = "Ninety"
theHundreds = {
100: "One Hundred", 200: "Two Hundred", 300: "Three Hundred",
400: "Four Hundred", 500: "Five Hundred", 600: "Six Hundred",
700: "Seven Hundred", 800: "Eight Hundred", 900: "Nine Hundred",
}
theTens = {
20: "Twenty", 30: "Thirty", 40: "Forty", 50: "Fifty",
60: "Sixty", 70: "Seventy", 80: "Eighty", 90: "Ninety",
}
theTeens = {
0: "Ten", 1: "Eleven", 2: "Twelve", 3: "Thirteen", 4: "Fourteen",
5: "Fifteen", 6: "Sixteen", 7: "Seventeen", 8: "Eighteen", 9: "Nineteen",
}
theOnes = {
0: "", 1: "One", 2: "Two", 3: "Three", 4: "Four",
5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine",
}
hunWord = theHundreds.get(hunVal, "")
tenWord = theTens.get(tenVal, "")
if tenVal == 10:
if oneVal == 0: oneWord = "Ten"
if oneVal == 1: oneWord = "Eleven"
if oneVal == 2: oneWord = "Twelve"
if oneVal == 3: oneWord = "Thirteen"
if oneVal == 4: oneWord = "Fourteen"
if oneVal == 5: oneWord = "Fifteen"
if oneVal == 6: oneWord = "Sixteen"
if oneVal == 7: oneWord = "Seventeen"
if oneVal == 8: oneWord = "Eighteen"
if oneVal == 9: oneWord = "Nineteen"
oneWord = theTeens.get(oneVal, "")
numWord = ("%s %s" % (hunWord, oneWord)).strip()
else:
if oneVal == 0: oneWord = ""
if oneVal == 1: oneWord = "One"
if oneVal == 2: oneWord = "Two"
if oneVal == 3: oneWord = "Three"
if oneVal == 4: oneWord = "Four"
if oneVal == 5: oneWord = "Five"
if oneVal == 6: oneWord = "Six"
if oneVal == 7: oneWord = "Seven"
if oneVal == 8: oneWord = "Eight"
if oneVal == 9: oneWord = "Nine"
oneWord = theOnes.get(oneVal, "")
if tenVal == 0:
numWord = ("%s %s" % (hunWord, oneWord)).strip()
else:
-1
View File
@@ -27,7 +27,6 @@
import logging
import json
import nw
from os import path
from lxml import etree
-1
View File
@@ -964,7 +964,6 @@ class GuiBuildNovelDocView(QTextBrowser):
lblFont.setPointSizeF(0.9*self.theTheme.fontPointSize)
fPx = int(1.1*self.theTheme.fontPixelSize)
mPx = self.mainConf.pxInt(4)
self.theTitle = QLabel("<b>Build Time:</b> Unknown", self)
self.theTitle.setIndent(0)
+3 -9
View File
@@ -963,7 +963,8 @@ class GuiDocEditor(QTextEdit):
logger.info(
"The document size is %d > %d, big doc mode is enabled" % (
theSize, self.mainConf.bigDocLimit*1000
))
)
)
self.bigDoc = True
else:
self.bigDoc = False
@@ -1271,7 +1272,7 @@ class GuiDocEditor(QTextEdit):
try:
isFind = self.lastFind[0] == theCursor.selectionStart()
isFind &= self.lastFind[1] == theCursor.selectionEnd()
except:
except Exception:
isFind = False
if isFind:
@@ -1371,7 +1372,6 @@ class GuiDocEditSearch(QFrame):
self.doMatchCap = self.mainConf.searchMatchCap
mPx = self.mainConf.pxInt(6)
fPx = int(0.9*self.theTheme.fontPixelSize)
tPx = int(0.8*self.theTheme.fontPixelSize)
boxFont = self.theTheme.guiFont
boxFont.setPointSizeF(0.9*self.theTheme.fontPointSize)
@@ -1891,7 +1891,6 @@ class GuiDocEditFooter(QWidget):
self.sPx = int(round(0.9*self.theTheme.baseIconSize))
fPx = int(0.9*self.theTheme.fontPixelSize)
bSp = self.mainConf.pxInt(4)
hSp = self.mainConf.pxInt(8)
lblFont = self.font()
lblFont.setPointSizeF(0.9*self.theTheme.fontPointSize)
@@ -1901,11 +1900,6 @@ class GuiDocEditFooter(QWidget):
self.setAutoFillBackground(True)
self.setPalette(self.thePalette)
buttonStyle = (
"QToolButton {{border: none; background: transparent;}} "
"QToolButton:hover {{border: none; background: rgba({0},{1},{2},0.2);}}"
).format(*self.theTheme.colText)
# Status
self.statusIcon = QLabel("")
self.statusIcon.setContentsMargins(0, 0, 0, 0)
-2
View File
@@ -366,7 +366,6 @@ class GuiDocViewer(QTextBrowser):
"}}\n"
).format(
textSize = self.mainConf.textSize,
preSize = self.mainConf.textSize*0.9,
tColR = self.theTheme.colText[0],
tColG = self.theTheme.colText[1],
tColB = self.theTheme.colText[2],
@@ -701,7 +700,6 @@ class GuiDocViewDetails(QScrollArea):
self.refList.setScaledContents(True)
self.refList.linkActivated.connect(self._linkClicked)
hCol = self.palette().highlight().color()
self.linkStyle = "style='color: rgb({0},{1},{2})'".format(
*self.theTheme.colLink
)
+4 -5
View File
@@ -193,7 +193,7 @@ class GuiOutline(QTreeWidget):
tHandle = tItem.data(self.colIndex[nwOutline.TITLE], Qt.UserRole)
try:
tLine = int(tItem.text(self.colIndex[nwOutline.LINE]))
except:
except Exception:
tLine = 1
logger.verbose("User selected entry with handle %s on line %s" % (tHandle, tLine))
@@ -254,7 +254,7 @@ class GuiOutline(QTreeWidget):
for hName in tempOrder:
try:
treeOrder.append(nwOutline[hName])
except:
except Exception:
logger.warning("Ignored unknown outline column '%s'" % str(hName))
# Add columns that was not in the file to the treeOrder array.
@@ -276,14 +276,14 @@ class GuiOutline(QTreeWidget):
for hName in tmpWidth:
try:
self.colWidth[nwOutline[hName]] = self.mainConf.pxInt(tmpWidth[hName])
except:
except Exception:
logger.warning("Ignored unknown outline column '%s'" % str(hName))
tmpHidden = self.optState.getValue("GuiOutline", "columnHidden", {})
for hName in tmpHidden:
try:
self.colHidden[nwOutline[hName]] = tmpHidden[hName]
except:
except Exception:
logger.warning("Ignored unknown outline column '%s'" % str(hName))
self.headerMenu.setHiddenState(self.colHidden)
@@ -374,7 +374,6 @@ class GuiOutline(QTreeWidget):
continue
tLevel = self.theIndex.novelIndex[tHandle][sTitle]["level"]
tTime = self.theIndex.novelIndex[tHandle][sTitle]["updated"]
tItem = self._createTreeItem(tHandle, sTitle, tLevel)
self.treeMap[titleKey] = tItem
+2 -3
View File
@@ -30,8 +30,7 @@ import nw
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (
QScrollArea, QWidget, QGridLayout, QHBoxLayout, QGroupBox, QLabel,
QSizePolicy
QScrollArea, QWidget, QGridLayout, QHBoxLayout, QGroupBox, QLabel
)
from nw.constants import nwLabels, nwKeyWords
@@ -237,7 +236,7 @@ class GuiOutlineDetails(QScrollArea):
nwItem = self.theProject.projTree[tHandle]
novIdx = self.theIndex.novelIndex[tHandle][sTitle]
theRefs = self.theIndex.getReferences(tHandle, sTitle)
except:
except Exception:
return False
if novIdx["level"] in self.LVL_MAP:
-1
View File
@@ -720,7 +720,6 @@ class GuiConfigEditEditingTab(QWidget):
def _disableComboItem(self, theList, theValue):
"""Disable a list item in the combo box.
"""
theIdx = theList.findData(theValue)
theModel = theList.model()
anItem = theModel.item(1)
anItem.setFlags(anItem.flags() ^ Qt.ItemIsEnabled)
-1
View File
@@ -422,7 +422,6 @@ class GuiProjectEditStatus(QWidget):
"""
logger.verbose("Save item button clicked")
selItem = self._getSelectedItem()
iRow = self.listBox.row(selItem)
if selItem is not None:
selIdx = selItem.data(Qt.UserRole)
self.colData[selIdx] = (
+1 -3
View File
@@ -475,7 +475,6 @@ class GuiProjectTree(QTreeWidget):
tName = nwItem.itemName
tClass = nwItem.itemClass
tHandle = nwItem.itemHandle
pHandle = nwItem.parHandle
expIcon = QIcon()
@@ -670,7 +669,6 @@ class GuiProjectTree(QTreeWidget):
isNote = snItem.itemLayout == nwItemLayout.NOTE
onFile = dnItem.itemType == nwItemType.FILE
isRoot = snItem.itemType == nwItemType.ROOT
onRoot = dnItem.itemType == nwItemType.ROOT
isOnTop = self.dropIndicatorPosition() == QAbstractItemView.OnItem
if (isSame or isNone or isNote) and not (onFile and isOnTop) and not isRoot:
logger.debug("Drag'n'drop of item %s accepted" % sHandle)
@@ -756,7 +754,7 @@ class GuiProjectTree(QTreeWidget):
if nHandle is not None and nHandle in self.theMap:
try:
byIndex = self.theMap[pHandle].indexOfChild(self.theMap[nHandle])
except:
except Exception:
logger.error("Failed to get index of item with handle %s" % nHandle)
if byIndex >= 0:
self.theMap[pHandle].insertChild(byIndex+1, newItem)
+2 -3
View File
@@ -35,7 +35,6 @@ from PyQt5.QtGui import QColor, QPainter
from PyQt5.QtWidgets import qApp, QStatusBar, QLabel, QAbstractButton
from nw.core import NWSpellCheck
from nw.common import formatInt
logger = logging.getLogger(__name__)
@@ -242,9 +241,9 @@ class StatusLED(QAbstractButton):
"""
if theState is None:
self._theCol = self.colNone
elif theState == True:
elif theState:
self._theCol = self.colTrue
elif theState == False:
elif not theState:
self._theCol = self.colFalse
else:
self._theCol = self.colNone
+8 -4
View File
@@ -33,7 +33,7 @@ import nw
from os import path, listdir
from math import ceil
from PyQt5.QtCore import Qt, QSize
from PyQt5.QtCore import Qt
from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtWidgets import QStyle, qApp
from PyQt5.QtGui import (
@@ -182,7 +182,7 @@ class GuiTheme:
for fontFam in listdir(fontAssets):
fontDir = path.join(fontAssets, fontFam)
if path.isdir(fontDir):
if not fontFam in self.guiFontDB.families():
if fontFam not in self.guiFontDB.families():
for fontFile in listdir(fontDir):
ttfFile = path.join(fontDir, fontFile)
if path.isfile(ttfFile) and fontFile.endswith(".ttf"):
@@ -260,6 +260,7 @@ class GuiTheme:
cssData = inFile.read()
except Exception as e:
logger.error("Could not load theme css file")
logger.error(str(e))
return False
# Config File
@@ -269,6 +270,7 @@ class GuiTheme:
confParser.read_file(inFile)
except Exception as e:
logger.error("Could not load theme settings from: %s" % self.confFile)
logger.error(str(e))
return False
## Main
@@ -324,6 +326,7 @@ class GuiTheme:
confParser.read_file(inFile)
except Exception as e:
logger.error("Could not load syntax colours from: %s" % self.syntaxFile)
logger.error(str(e))
return False
## Main
@@ -438,7 +441,7 @@ class GuiTheme:
outData.append(int(inData[0]))
outData.append(int(inData[1]))
outData.append(int(inData[2]))
except:
except Exception:
logger.error("Could not load theme colours for '%s' from config file" % cnfName)
outData = [0, 0, 0]
else:
@@ -456,7 +459,7 @@ class GuiTheme:
readCol.append(int(inData[0]))
readCol.append(int(inData[1]))
readCol.append(int(inData[2]))
except:
except Exception:
logger.error("Could not load theme colours for '%s' from config file" % cnfName)
return
if len(readCol) == 3:
@@ -615,6 +618,7 @@ class GuiIcons:
confParser.read_file(inFile)
except Exception as e:
logger.error("Could not load icon theme settings from: %s" % self.confFile)
logger.error(str(e))
return False
## Main
+3 -4
View File
@@ -269,7 +269,7 @@ class GuiMain(QMainWindow):
"""
if self.hasProject:
msgBox = QMessageBox()
msgRes = msgBox.warning(
msgBox.warning(
self, "New Project",
"Please close the current project before making a new one."
)
@@ -288,7 +288,7 @@ class GuiMain(QMainWindow):
if path.isfile(path.join(projPath, self.theProject.projFile)) and not forceNew:
msgBox = QMessageBox()
msgRes = msgBox.critical(
msgBox.critical(
self, "New Project",
"A project already exists in that location. Please choose another folder."
)
@@ -391,7 +391,7 @@ class GuiMain(QMainWindow):
int(self.theProject.lockedBy[3])
).strftime("%x %X")
)
except:
except Exception:
lockDetails = ""
msgBox = QMessageBox()
@@ -713,7 +713,6 @@ class GuiMain(QMainWindow):
self.treeView.saveTreeOrder()
self.theIndex.clearIndex()
nItems = len(self.theProject.projTree)
theDoc = NWDoc(self.theProject, self)
for nDone, tItem in enumerate(self.theProject.projTree):
-13
View File
@@ -12,19 +12,6 @@ class DummyMain():
return
def makeAlert(self, theMessage, theLevel):
if theLevel == nwAlert.WARN:
lvlMsg = "WARNING: "
elif theLevel == nwAlert.ERROR:
lvlMsg = "ERROR: "
elif theLevel == nwAlert.BUG:
lvlMsg = "BUG: "
else:
lvlMsg = ""
if isinstance(theMessage, list):
for msgLine in logMsg:
print(lvlMsg+msgLine)
else:
print(lvlMsg+theMessage)
return
def setStatus(self, theMessage):