Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings. eric7

Fri, 24 Sep 2021 16:34:15 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 24 Sep 2021 16:34:15 +0200
branch
eric7
changeset 8629
1b58dc890b87
parent 8628
dcdf0074ad39
child 8630
5464b9c31cf9

Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.

eric7/EricWidgets/EricSpellCheckedTextEdit.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsGit/GitCommitDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsGit/GitMergeDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/HgCloseHeadSelectionDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsMercurial/GpgExtension/HgGpgSignDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsMercurial/HgBackoutDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsMercurial/HgCommitDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsMercurial/HgImportDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsMercurial/HisteditExtension/HgHisteditCommitEditor.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesFoldDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesNewPatchDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsPySvn/SvnCommitDialog.py file | annotate | diff | comparison | revisions
eric7/Plugins/VcsPlugins/vcsSubversion/SvnCommitDialog.py file | annotate | diff | comparison | revisions
eric7/VCS/StatusWidget.py file | annotate | diff | comparison | revisions
--- a/eric7/EricWidgets/EricSpellCheckedTextEdit.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/EricWidgets/EricSpellCheckedTextEdit.py	Fri Sep 24 16:34:15 2021 +0200
@@ -324,11 +324,7 @@
             @type QAction
             """
             language = act.data()
-            self.__highlighter.setDict(enchant.Dict(
-                language,
-                SpellCheckMixin.DefaultUserWordList,
-                SpellCheckMixin.DefaultUserExceptionList
-            ))
+            self.setLanguage(language)
         
         @pyqtSlot(QAction)
         def __setFormat(self, act):
@@ -372,6 +368,46 @@
             """
             self.__highlighter.setDict(spellDict)
         
+        @pyqtSlot(str)
+        def setLanguage(self, language):
+            """
+            Public slot to set the spellchecker language.
+            
+            @param language language to be set
+            @type str
+            """
+            epwl = self.dict().pwl
+            pwl = (
+                epwl.provider.file
+                if isinstance(epwl, enchant.Dict) else
+                None
+            )
+            
+            epel = self.dict().pel
+            pel = (
+                epel.provider.file
+                if isinstance(epel, enchant.Dict) else
+                None
+            )
+            self.setLanguageWithPWL(language, pwl, pel)
+        
+        @pyqtSlot(str, str, str)
+        def setLanguageWithPWL(self, language, pwl, pel):
+            """
+            Public slot to set the spellchecker language and associated user
+            word lists.
+            
+            @param language language to be set
+            @type str
+            @param pwl file name of the personal word list
+            @type str
+            @param pel file name of the personal exclude list
+            @type str
+            """
+            self.__highlighter.setDict(
+                enchant.DictWithPWL(language, pwl, pel)
+            )
+        
         @classmethod
         def setDefaultLanguage(cls, language, pwl=None, pel=None):
             """
--- a/eric7/Plugins/VcsPlugins/vcsGit/GitCommitDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsGit/GitCommitDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSlot, pyqtSignal, Qt
 from PyQt6.QtWidgets import QWidget, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_GitCommitDialog import Ui_GitCommitDialog
 
 
@@ -38,7 +40,12 @@
         
         self.__vcs = vcs
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.logEdit.setLanguageWithPWL(language, pwl or None, pel or None)
         self.logEdit.setPlainText(msg)
+        
         self.amendCheckBox.setChecked(amend)
         self.stagedCheckBox.setChecked(not commitAll)
     
--- a/eric7/Plugins/VcsPlugins/vcsGit/GitMergeDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsGit/GitMergeDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSlot
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_GitMergeDialog import Ui_GitMergeDialog
 
 
@@ -34,6 +36,12 @@
         self.buttonBox.button(
             QDialogButtonBox.StandardButton.Ok).setEnabled(False)
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.commitMessageEdit.setLanguageWithPWL(
+            language, pwl or None, pel or None)
+        
         self.__currentBranch = currentBranch
         
         self.tagCombo.addItems(sorted(tagsList))
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/HgCloseHeadSelectionDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/CloseheadExtension/HgCloseHeadSelectionDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSlot
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_HgCloseHeadSelectionDialog import Ui_HgCloseHeadSelectionDialog
 
 
@@ -34,6 +36,11 @@
         self.buttonBox.button(
             QDialogButtonBox.StandardButton.Ok).setEnabled(False)
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.logEdit.setLanguageWithPWL(language, pwl or None, pel or None)
+        
         heads = self.__getHeads(vcs)
         for revision, branch in heads:
             QTreeWidgetItem(self.headsList, [revision, branch])
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/GpgExtension/HgGpgSignDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/GpgExtension/HgGpgSignDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSlot
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_HgGpgSignDialog import Ui_HgGpgSignDialog
 
 
@@ -33,6 +35,12 @@
         self.buttonBox.button(
             QDialogButtonBox.StandardButton.Ok).setEnabled(False)
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.messageEdit.setLanguageWithPWL(
+            language, pwl or None, pel or None)
+        
         self.tagCombo.addItems(sorted(tagsList))
         self.branchCombo.addItems(["default"] + sorted(branchesList))
         if bookmarksList is not None:
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/HgBackoutDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/HgBackoutDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSlot, QDateTime
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_HgBackoutDialog import Ui_HgBackoutDialog
 
 
@@ -33,6 +35,12 @@
         self.buttonBox.button(
             QDialogButtonBox.StandardButton.Ok).setEnabled(False)
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.messageEdit.setLanguageWithPWL(
+            language, pwl or None, pel or None)
+        
         self.tagCombo.addItems(sorted(tagsList))
         self.branchCombo.addItems(["default"] + sorted(branchesList))
         if bookmarksList is not None:
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/HgCommitDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/HgCommitDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSlot, pyqtSignal, Qt, QDateTime
 from PyQt6.QtWidgets import QWidget, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_HgCommitDialog import Ui_HgCommitDialog
 
 
@@ -38,6 +40,10 @@
         
         self.__vcs = vcs
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.logEdit.setLanguageWithPWL(language, pwl or None, pel or None)
         self.logEdit.setPlainText(msg)
         
         if mq or merge:
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/HgImportDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/HgImportDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,7 @@
 from PyQt6.QtCore import pyqtSlot, QDateTime
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
 from EricWidgets.EricPathPicker import EricPathPickerModes
 
 from .Ui_HgImportDialog import Ui_HgImportDialog
@@ -40,6 +41,12 @@
         self.buttonBox.button(
             QDialogButtonBox.StandardButton.Ok).setEnabled(False)
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.messageEdit.setLanguageWithPWL(
+            language, pwl or None, pel or None)
+        
         self.__initDateTime = QDateTime.currentDateTime()
         self.dateEdit.setDateTime(self.__initDateTime)
     
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/HisteditExtension/HgHisteditCommitEditor.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/HisteditExtension/HgHisteditCommitEditor.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,7 @@
 from PyQt6.QtCore import pyqtSlot, QCoreApplication
 from PyQt6.QtWidgets import QDialog
 
+from EricWidgets.EricApplication import ericApp
 from EricWidgets import EricMessageBox
 
 from Ui_HgHisteditCommitEditor import Ui_HgHisteditCommitEditor
@@ -34,6 +35,12 @@
         super().__init__(parent)
         self.setupUi(self)
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.messageEdit.setLanguageWithPWL(
+            language, pwl or None, pel or None)
+        
         self.__fileName = fileName
         self.__readFile()
         
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesFoldDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesFoldDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSlot, Qt
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_HgQueuesFoldDialog import Ui_HgQueuesFoldDialog
 
 import UI.PixmapCache
@@ -34,6 +36,12 @@
         self.upButton.setIcon(UI.PixmapCache.getIcon("1uparrow"))
         self.downButton.setIcon(UI.PixmapCache.getIcon("1downarrow"))
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.messageEdit.setLanguageWithPWL(
+            language, pwl or None, pel or None)
+        
         for patch in patchesList:
             name, summary = patch.split("@@")
             QTreeWidgetItem(self.sourcePatches, [name, summary])
--- a/eric7/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesNewPatchDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesNewPatchDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSlot, QDateTime
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_HgQueuesNewPatchDialog import Ui_HgQueuesNewPatchDialog
 
 
@@ -42,6 +44,11 @@
             self.nameLabel.hide()
             self.nameEdit.hide()
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.messageEdit.setLanguageWithPWL(
+            language, pwl or None, pel or None)
         if message:
             self.messageEdit.setPlainText(message)
         
--- a/eric7/Plugins/VcsPlugins/vcsPySvn/SvnCommitDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsPySvn/SvnCommitDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -12,6 +12,8 @@
 from PyQt6.QtCore import pyqtSignal, Qt, pyqtSlot
 from PyQt6.QtWidgets import QWidget, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_SvnCommitDialog import Ui_SvnCommitDialog
 
 
@@ -37,6 +39,11 @@
         
         self.__vcs = vcs
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.logEdit.setLanguageWithPWL(language, pwl or None, pel or None)
+        
         if pysvn.svn_version < (1, 5, 0) or pysvn.version < (1, 6, 0):
             self.changeListsGroup.hide()
         else:
--- a/eric7/Plugins/VcsPlugins/vcsSubversion/SvnCommitDialog.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/Plugins/VcsPlugins/vcsSubversion/SvnCommitDialog.py	Fri Sep 24 16:34:15 2021 +0200
@@ -10,6 +10,8 @@
 from PyQt6.QtCore import pyqtSignal, Qt, pyqtSlot
 from PyQt6.QtWidgets import QWidget, QDialogButtonBox
 
+from EricWidgets.EricApplication import ericApp
+
 from .Ui_SvnCommitDialog import Ui_SvnCommitDialog
 
 
@@ -35,6 +37,11 @@
         
         self.__vcs = vcs
         
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.logEdit.setLanguageWithPWL(language, pwl or None, pel or None)
+        
         if vcs.version < (1, 5, 0):
             self.changeListsGroup.hide()
         else:
--- a/eric7/VCS/StatusWidget.py	Fri Sep 24 16:30:28 2021 +0200
+++ b/eric7/VCS/StatusWidget.py	Fri Sep 24 16:34:15 2021 +0200
@@ -198,6 +198,8 @@
         
         self.__project.projectOpened.connect(self.__projectOpened)
         self.__project.projectClosed.connect(self.__projectClosed)
+        self.__project.projectPropertiesChanged.connect(
+            self.__setProjectSpellCheckData)
         self.__project.vcsCommitted.connect(self.__committed)
         self.__project.vcsStatusMonitorInfo.connect(self.__setInfoText)
         self.__project.vcsStatusMonitorAllData.connect(
@@ -291,6 +293,18 @@
         Private slot to handle the opening of a project.
         """
         self.__reloadButton.setEnabled(True)
+        self.__setProjectSpellCheckData()
+    
+    @pyqtSlot()
+    def __setProjectSpellCheckData(self):
+        """
+        Private slot to set the spell check properties of the
+        quick commit area.
+        """
+        pwl, pel = self.__project.getProjectDictionaries()
+        language = self.__project.getProjectSpellLanguage()
+        self.__quickCommitEdit.setLanguageWithPWL(
+            language, pwl or None, pel or None)
     
     @pyqtSlot()
     def __projectClosed(self):
@@ -371,10 +385,11 @@
         @type dict
         """
         # step 1: remember all currently checked entries
-        wasUnpopulated = self.__statusList.count() == 0
         checkedEntries = [itm.text() for itm in self.__getCommitableItems()]
         selectedEntries = [itm.text()
                            for itm in self.__statusList.selectedItems()]
+        knownEntries = [self.__statusList.item(row).text()
+                        for row in range(self.__statusList.count())]
         
         # step 2: clear the list and re-populate it with new data
         self.__statusList.clear()
@@ -391,7 +406,7 @@
                 if status in "AMOR":
                     itm.setFlags(
                         itm.flags() | Qt.ItemFlag.ItemIsUserCheckable)
-                    if wasUnpopulated or name in checkedEntries:
+                    if name in checkedEntries or name not in knownEntries:
                         itm.setCheckState(Qt.CheckState.Checked)
                     else:
                         itm.setCheckState(Qt.CheckState.Unchecked)

eric ide

mercurial