Added spell check language setting to project class and project settings
This commit is contained in:
+15
-6
@@ -76,6 +76,7 @@ class NWProject():
|
||||
self.projCache = None # The full path to the project's cache folder
|
||||
self.projContent = None # The full path to the project's content folder
|
||||
self.projDict = None # The spell check dictionary
|
||||
self.projLang = None # The spell check language, if different than default
|
||||
self.projFile = None # The file name of the project main XML file
|
||||
|
||||
# Project Meta
|
||||
@@ -190,6 +191,7 @@ class NWProject():
|
||||
self.projCache = None
|
||||
self.projContent = None
|
||||
self.projDict = None
|
||||
self.projLang = None
|
||||
self.projFile = nwFiles.PROJ_FILE
|
||||
self.projName = ""
|
||||
self.bookTitle = ""
|
||||
@@ -561,6 +563,8 @@ class NWProject():
|
||||
self.doBackup = checkBool(xItem.text, False)
|
||||
elif xItem.tag == "spellCheck":
|
||||
self.spellCheck = checkBool(xItem.text, False)
|
||||
elif xItem.tag == "spellLang":
|
||||
self.projLang = checkString(xItem.text, None, True)
|
||||
elif xItem.tag == "autoOutline":
|
||||
self.autoOutline = checkBool(xItem.text, True)
|
||||
elif xItem.tag == "lastEdited":
|
||||
@@ -654,8 +658,8 @@ class NWProject():
|
||||
|
||||
# Save Project Meta
|
||||
xProject = etree.SubElement(nwXML, "project")
|
||||
self._packProjectValue(xProject, "name", self.projName, True)
|
||||
self._packProjectValue(xProject, "title", self.bookTitle, True)
|
||||
self._packProjectValue(xProject, "name", self.projName)
|
||||
self._packProjectValue(xProject, "title", self.bookTitle)
|
||||
self._packProjectValue(xProject, "author", self.bookAuthors)
|
||||
self._packProjectValue(xProject, "saveCount", str(self.saveCount))
|
||||
self._packProjectValue(xProject, "autoCount", str(self.autoCount))
|
||||
@@ -665,6 +669,7 @@ class NWProject():
|
||||
xSettings = etree.SubElement(nwXML, "settings")
|
||||
self._packProjectValue(xSettings, "doBackup", self.doBackup)
|
||||
self._packProjectValue(xSettings, "spellCheck", self.spellCheck)
|
||||
self._packProjectValue(xSettings, "spellLang", self.projLang)
|
||||
self._packProjectValue(xSettings, "autoOutline", self.autoOutline)
|
||||
self._packProjectValue(xSettings, "lastEdited", self.lastEdited)
|
||||
self._packProjectValue(xSettings, "lastViewed", self.lastViewed)
|
||||
@@ -990,6 +995,12 @@ class NWProject():
|
||||
self.setProjectChanged(True)
|
||||
return True
|
||||
|
||||
def setSpellLang(self, theLang):
|
||||
"""Set the project-specific spell check language.
|
||||
"""
|
||||
self.projLang = checkString(theLang, None, True)
|
||||
return True
|
||||
|
||||
def setAutoOutline(self, theMode):
|
||||
"""Enable/disable automatic update of project outline.
|
||||
"""
|
||||
@@ -1240,12 +1251,10 @@ class NWProject():
|
||||
if not isinstance(theValue, list):
|
||||
theValue = [theValue]
|
||||
for aValue in theValue:
|
||||
if not isinstance(aValue, str):
|
||||
aValue = str(aValue)
|
||||
if aValue == "" and not allowNone:
|
||||
if (aValue == "" or aValue is None) and not allowNone:
|
||||
continue
|
||||
xItem = etree.SubElement(xParent, theName)
|
||||
xItem.text = aValue
|
||||
xItem.text = str(aValue)
|
||||
return
|
||||
|
||||
def _packProjectKeyValue(self, xParent, theName, theDict):
|
||||
|
||||
+3
-2
@@ -48,7 +48,7 @@ from PyQt5.QtWidgets import (
|
||||
QFrame
|
||||
)
|
||||
|
||||
from nw.core import NWDoc, NWSpellSimple, countWords
|
||||
from nw.core import NWDoc, NWSpellCheck, NWSpellSimple, countWords
|
||||
from nw.gui.dochighlight import GuiDocHighlighter
|
||||
from nw.common import transferCase
|
||||
from nw.constants import (
|
||||
@@ -73,6 +73,7 @@ class GuiDocEditor(QTextEdit):
|
||||
self.spellCheck = False
|
||||
self.nwDocument = NWDoc(self.theProject, self.theParent)
|
||||
self.theHandle = None
|
||||
self.theDict = None
|
||||
|
||||
# Document Variables
|
||||
self.charCount = 0
|
||||
@@ -1334,7 +1335,7 @@ class GuiDocEditor(QTextEdit):
|
||||
"""Create the spell checking object based on the spellTool
|
||||
setting in config.
|
||||
"""
|
||||
if self.mainConf.spellTool == "enchant":
|
||||
if self.mainConf.spellTool == NWSpellCheck.SP_ENCHANT:
|
||||
from nw.core.spellcheck import NWSpellEnchant
|
||||
self.theDict = NWSpellEnchant()
|
||||
else:
|
||||
|
||||
+30
-5
@@ -33,7 +33,7 @@ from PyQt5.QtGui import QIcon, QPixmap, QColor, QBrush
|
||||
from PyQt5.QtWidgets import (
|
||||
QHBoxLayout, QVBoxLayout, QGridLayout, QLineEdit, QPlainTextEdit, QLabel,
|
||||
QWidget, QDialogButtonBox, QListWidget, QPushButton, QListWidgetItem,
|
||||
QColorDialog, QAbstractItemView, QTreeWidget, QTreeWidgetItem
|
||||
QColorDialog, QAbstractItemView, QTreeWidget, QTreeWidgetItem, QComboBox
|
||||
)
|
||||
|
||||
from nw.constants import nwAlert
|
||||
@@ -55,12 +55,15 @@ class GuiProjectSettings(PagedDialog):
|
||||
|
||||
self.theProject.countStatus()
|
||||
self.setWindowTitle("Project Settings")
|
||||
self.setMinimumWidth(self.mainConf.pxInt(570))
|
||||
self.setMinimumHeight(self.mainConf.pxInt(355))
|
||||
|
||||
wW = self.mainConf.pxInt(570)
|
||||
wH = self.mainConf.pxInt(375)
|
||||
|
||||
self.setMinimumWidth(wW)
|
||||
self.setMinimumHeight(wH)
|
||||
self.resize(
|
||||
self.mainConf.pxInt(self.optState.getInt("GuiProjectSettings", "winWidth", 570)),
|
||||
self.mainConf.pxInt(self.optState.getInt("GuiProjectSettings", "winHeight", 355))
|
||||
self.mainConf.pxInt(self.optState.getInt("GuiProjectSettings", "winWidth", wW)),
|
||||
self.mainConf.pxInt(self.optState.getInt("GuiProjectSettings", "winHeight", wH))
|
||||
)
|
||||
|
||||
self.tabMain = GuiProjectEditMain(self.theParent, self.theProject)
|
||||
@@ -96,11 +99,13 @@ class GuiProjectSettings(PagedDialog):
|
||||
projName = self.tabMain.editName.text()
|
||||
bookTitle = self.tabMain.editTitle.text()
|
||||
bookAuthors = self.tabMain.editAuthors.toPlainText()
|
||||
spellLang = self.tabMain.spellLang.currentData()
|
||||
doBackup = not self.tabMain.doBackup.isChecked()
|
||||
|
||||
self.theProject.setProjectName(projName)
|
||||
self.theProject.setBookTitle(bookTitle)
|
||||
self.theProject.setBookAuthors(bookAuthors)
|
||||
self.theProject.setSpellLang(spellLang)
|
||||
self.theProject.setProjBackup(doBackup)
|
||||
|
||||
if self.tabStatus.colChanged:
|
||||
@@ -191,6 +196,26 @@ class GuiProjectEditMain(QWidget):
|
||||
"One name per line."
|
||||
)
|
||||
|
||||
self.spellLang = QComboBox(self)
|
||||
theDict = self.theParent.docEditor.theDict
|
||||
self.spellLang.addItem("Default", "None")
|
||||
if theDict is not None:
|
||||
for spTag, spName in theDict.listDictionaries():
|
||||
self.spellLang.addItem(spName, spTag)
|
||||
|
||||
self.mainForm.addRow(
|
||||
"Spell check language",
|
||||
self.spellLang,
|
||||
"Overrides main preferences."
|
||||
)
|
||||
|
||||
if self.theProject.projLang is None:
|
||||
spellIdx = 0
|
||||
else:
|
||||
spellIdx = self.spellLang.findData(self.theProject.projLang)
|
||||
if spellIdx != -1:
|
||||
self.spellLang.setCurrentIndex(spellIdx)
|
||||
|
||||
self.doBackup = QSwitch(self)
|
||||
self.doBackup.setChecked(not self.theProject.doBackup)
|
||||
self.mainForm.addRow(
|
||||
|
||||
Reference in New Issue
Block a user