Move the spell check instance to the shared class

This commit is contained in:
Veronica Berglyd Olsen
2023-08-24 20:17:23 +02:00
parent 4507489f0b
commit f7ed133b2e
9 changed files with 95 additions and 98 deletions
+16 -2
View File
@@ -32,6 +32,8 @@ from pathlib import Path
from PyQt5.QtCore import QObject, pyqtSignal
from PyQt5.QtWidgets import QMessageBox, QWidget
from novelwriter.core.spellcheck import NWSpellEnchant
if TYPE_CHECKING: # pragma: no cover
from novelwriter.guimain import GuiMain
from novelwriter.gui.theme import GuiTheme
@@ -43,18 +45,20 @@ logger = logging.getLogger(__name__)
class SharedData(QObject):
__slots__ = (
"_gui", "_theme", "_project", "_lockedBy", "_alert",
"_gui", "_theme", "_project", "_spelling", "_lockedBy", "_alert",
"_idleTime", "_idleRefTime",
)
projectStatusChanged = pyqtSignal(bool)
projectStatusMessage = pyqtSignal(str)
spellLanguageChanged = pyqtSignal(str, str)
def __init__(self) -> None:
super().__init__()
self._gui = None
self._theme = None
self._project = None
self._spelling = None
self._lockedBy = None
self._alert = None
self._idleTime = 0.0
@@ -82,6 +86,13 @@ class SharedData(QObject):
raise Exception("SharedData class not fully initialised")
return self._project
@property
def spelling(self) -> NWSpellEnchant:
"""Return the active NWProject instance."""
if self._spelling is None:
raise Exception("SharedData class not fully initialised")
return self._spelling
@property
def hasProject(self) -> bool:
"""Return True if the project instance is populated."""
@@ -130,6 +141,7 @@ class SharedData(QObject):
self._lockedBy = self.project.lockStatus
self._resetProject()
self.spelling.loadUserWordList()
self._resetIdleTimer()
return status
@@ -220,11 +232,13 @@ class SharedData(QObject):
##
def _resetProject(self) -> None:
"""Create a new project instance."""
"""Create a new project and spell checking instance."""
from novelwriter.core.project import NWProject
if isinstance(self._project, NWProject):
del self._project
del self._spelling
self._project = NWProject()
self._spelling = NWSpellEnchant(self._project)
return
def _resetIdleTimer(self) -> None: