src/eric7/EricWidgets/EricSpellCheckedTextEdit.py

Thu, 07 Jul 2022 11:23:56 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 07 Jul 2022 11:23:56 +0200
branch
eric7
changeset 9209
b99e7fd55fd3
parent 9021
eric7/EricWidgets/EricSpellCheckedTextEdit.py@62d6f565f740
child 9221
bf71ee032bb4
permissions
-rw-r--r--

Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".

8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8647
diff changeset
3 # Copyright (c) 2021 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing QTextEdit and QPlainTextEdit widgets with embedded spell
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 checking.
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
11 import contextlib
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
13 try:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
14 import enchant
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
15 import enchant.tokenize
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
16 from enchant.errors import TokenizerNotFoundError, DictNotFoundError
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
17 from enchant.utils import trim_suggestions
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
18 ENCHANT_AVAILABLE = True
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
19 except ImportError:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
20 ENCHANT_AVAILABLE = False
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 from PyQt6.QtCore import pyqtSlot, Qt, QCoreApplication
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from PyQt6.QtGui import (
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 QAction, QActionGroup, QSyntaxHighlighter, QTextBlockUserData,
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 QTextCharFormat, QTextCursor
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 )
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 from PyQt6.QtWidgets import QMenu, QTextEdit, QPlainTextEdit
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
29 if ENCHANT_AVAILABLE:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
30 class SpellCheckMixin():
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
32 Class implementing the spell-check mixin for the widget classes.
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
34 # don't show more than this to keep the menu manageable
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
35 MaxSuggestions = 20
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
36
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
37 # default language to be used when no other is set
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
38 DefaultLanguage = None
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
8431
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
40 # default user lists
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
41 DefaultUserWordList = None
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
42 DefaultUserExceptionList = None
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
43
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
44 def __init__(self):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
45 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
46 Constructor
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
47 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
48 self.__highlighter = EnchantHighlighter(self.document())
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
49 try:
8431
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
50 # Start with a default dictionary based on the current locale
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
51 # or the configured default language.
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
52 spellDict = enchant.DictWithPWL(
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
53 SpellCheckMixin.DefaultLanguage,
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
54 SpellCheckMixin.DefaultUserWordList,
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
55 SpellCheckMixin.DefaultUserExceptionList
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
56 )
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
57 except DictNotFoundError:
8901
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
58 try:
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
59 # Use English dictionary if no locale dictionary is
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
60 # available or the default one could not be found.
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
61 spellDict = enchant.DictWithPWL(
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
62 "en",
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
63 SpellCheckMixin.DefaultUserWordList,
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
64 SpellCheckMixin.DefaultUserExceptionList
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
65 )
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
66 except DictNotFoundError:
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
67 # Still no dictionary could be found. Forget about spell
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
68 # checking.
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
69 spellDict = None
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
70
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
71 self.__highlighter.setDict(spellDict)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
72
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
73 def contextMenuEvent(self, evt):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
74 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
75 Protected method to handle context menu events to add a spelling
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
76 suggestions submenu.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
77
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
78 @param evt reference to the context menu event
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
79 @type QContextMenuEvent
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
80 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
81 menu = self.__createSpellcheckContextMenu(evt.pos())
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
82 menu.exec(evt.globalPos())
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
84 def __createSpellcheckContextMenu(self, pos):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
85 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
86 Private method to create the spell-check context menu.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
87
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
88 @param pos position of the mouse pointer
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
89 @type QPoint
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
90 @return context menu with additional spell-check entries
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
91 @rtype QMenu
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
92 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
93 menu = self.createStandardContextMenu(pos)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
94
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
95 # Add a submenu for setting the spell-check language and
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
96 # document format.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
97 menu.addSeparator()
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
98 self.__addRemoveEntry(self.__cursorForPosition(pos), menu)
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
99 menu.addMenu(self.__createLanguagesMenu(menu))
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
100 menu.addMenu(self.__createFormatsMenu(menu))
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
101
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
102 # Try to retrieve a menu of corrections for the right-clicked word
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
103 spellMenu = self.__createCorrectionsMenu(
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
104 self.__cursorForMisspelling(pos), menu)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
105
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
106 if spellMenu:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
107 menu.insertSeparator(menu.actions()[0])
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
108 menu.insertMenu(menu.actions()[0], spellMenu)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
109
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
110 return menu
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
112 def __createCorrectionsMenu(self, cursor, parent=None):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
113 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
114 Private method to create a menu for corrections of the selected
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
115 word.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
116
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
117 @param cursor reference to the text cursor
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
118 @type QTextCursor
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
119 @param parent reference to the parent widget (defaults to None)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
120 @type QWidget (optional)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
121 @return menu with corrections
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
122 @rtype QMenu
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
123 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
124 if cursor is None:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
125 return None
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
126
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
127 text = cursor.selectedText()
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
128 suggestions = trim_suggestions(
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
129 text, self.__highlighter.dict().suggest(text),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
130 SpellCheckMixin.MaxSuggestions)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
131
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
132 spellMenu = QMenu(
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
133 QCoreApplication.translate("SpellCheckMixin",
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
134 "Spelling Suggestions"),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
135 parent)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
136 for word in suggestions:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
137 act = spellMenu.addAction(word)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
138 act.setData((cursor, word))
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
139
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
140 if suggestions:
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
141 spellMenu.addSeparator()
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
142
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
143 # add management entry
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
144 act = spellMenu.addAction(QCoreApplication.translate(
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
145 "SpellCheckMixin", "Add to Dictionary"))
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
146 act.setData((cursor, text, "add"))
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
147
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
148 spellMenu.triggered.connect(self.__spellMenuTriggered)
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
149 return spellMenu
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
150
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
151 def __addRemoveEntry(self, cursor, menu):
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
152 """
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
153 Private method to create a menu entry to remove the word at the
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
154 menu position.
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
155
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
156 @param cursor reference to the text cursor for the misspelled word
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
157 @type QTextCursor
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
158 @param menu reference to the context menu
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
159 @type QMenu
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
160 """
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
161 if cursor is None:
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
162 return
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
163
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
164 text = cursor.selectedText()
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
165 menu.addAction(QCoreApplication.translate(
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
166 "SpellCheckMixin",
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
167 "Remove '{0}' from Dictionary").format(text),
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
168 lambda: self.__addToUserDict(text, "remove"))
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
170 def __createLanguagesMenu(self, parent=None):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
171 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
172 Private method to create a menu for selecting the spell-check
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
173 language.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
174
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
175 @param parent reference to the parent widget (defaults to None)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
176 @type QWidget (optional)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
177 @return menu with spell-check languages
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
178 @rtype QMenu
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
179 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
180 curLanguage = self.__highlighter.dict().tag.lower()
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
181 languageMenu = QMenu(
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
182 QCoreApplication.translate("SpellCheckMixin", "Language"),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
183 parent)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
184 languageActions = QActionGroup(languageMenu)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
185
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
186 for language in sorted(enchant.list_languages()):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
187 act = QAction(language, languageActions)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
188 act.setCheckable(True)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
189 act.setChecked(language.lower() == curLanguage)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
190 act.setData(language)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
191 languageMenu.addAction(act)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
192
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
193 languageMenu.triggered.connect(self.__setLanguage)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
194 return languageMenu
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
196 def __createFormatsMenu(self, parent=None):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
197 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
198 Private method to create a menu for selecting the document format.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
199
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
200 @param parent reference to the parent widget (defaults to None)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
201 @type QWidget (optional)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
202 @return menu with document formats
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
203 @rtype QMenu
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
204 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
205 formatMenu = QMenu(
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
206 QCoreApplication.translate("SpellCheckMixin", "Format"),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
207 parent)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
208 formatActions = QActionGroup(formatMenu)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
209
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
210 curFormat = self.__highlighter.chunkers()
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
211 for name, chunkers in (
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
212 (QCoreApplication.translate("SpellCheckMixin", "Text"),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
213 []),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
214 (QCoreApplication.translate("SpellCheckMixin", "HTML"),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
215 [enchant.tokenize.HTMLChunker])
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
216 ):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
217 act = QAction(name, formatActions)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
218 act.setCheckable(True)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
219 act.setChecked(chunkers == curFormat)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
220 act.setData(chunkers)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
221 formatMenu.addAction(act)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
222
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
223 formatMenu.triggered.connect(self.__setFormat)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
224 return formatMenu
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
226 def __cursorForPosition(self, pos):
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
227 """
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
228 Private method to create a text cursor selecting the word at the
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
229 given position.
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
230
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
231 @param pos position of the misspelled word
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
232 @type QPoint
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
233 @return text cursor for the word
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
234 @rtype QTextCursor
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
235 """
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
236 cursor = self.cursorForPosition(pos)
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
237 cursor.select(QTextCursor.SelectionType.WordUnderCursor)
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
238
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
239 if cursor.hasSelection():
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
240 return cursor
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
241 else:
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
242 return None
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
243
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
244 def __cursorForMisspelling(self, pos):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
245 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
246 Private method to create a text cursor selecting the misspelled
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
247 word.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
248
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
249 @param pos position of the misspelled word
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
250 @type QPoint
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
251 @return text cursor for the misspelled word
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
252 @rtype QTextCursor
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
253 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
254 cursor = self.cursorForPosition(pos)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
255 misspelledWords = getattr(cursor.block().userData(),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
256 "misspelled", [])
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
257
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
258 # If the cursor is within a misspelling, select the word
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
259 for (start, end) in misspelledWords:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
260 if start <= cursor.positionInBlock() <= end:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
261 blockPosition = cursor.block().position()
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
262
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
263 cursor.setPosition(blockPosition + start,
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
264 QTextCursor.MoveMode.MoveAnchor)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
265 cursor.setPosition(blockPosition + end,
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
266 QTextCursor.MoveMode.KeepAnchor)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
267 break
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
268
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
269 if cursor.hasSelection():
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
270 return cursor
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
271 else:
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
272 return None
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
274 def __correctWord(self, cursor, word):
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
275 """
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
276 Private method to replace some misspelled text.
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
277
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
278 @param cursor reference to the text cursor for the misspelled word
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
279 @type QTextCursor
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
280 @param word replacement text
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
281 @type str
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
282 """
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
283 cursor.beginEditBlock()
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
284 cursor.removeSelectedText()
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
285 cursor.insertText(word)
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
286 cursor.endEditBlock()
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
287
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
288 def __addToUserDict(self, word, command):
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
289 """
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
290 Private method to add a word to the user word or exclude list.
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
291
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
292 @param word text to be added
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
293 @type str
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
294 @param command command indicating the user dictionary type
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
295 @type str
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
296 """
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
297 if word:
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
298 dictionary = self.__highlighter.dict()
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
299 if command == "add":
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
300 dictionary.add(word)
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
301 elif command == "remove":
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
302 dictionary.remove(word)
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
303
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
304 self.__highlighter.rehighlight()
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
305
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
306 @pyqtSlot(QAction)
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
307 def __spellMenuTriggered(self, act):
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
308 """
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
309 Private slot to handle a selection of the spell menu.
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
310
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
311 @param act reference to the selected action
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
312 @type QAction
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
313 """
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
314 data = act.data()
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
315 if len(data) == 2:
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
316 # replace the misspelled word
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
317 self.__correctWord(*data)
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
318
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
319 elif len(data) == 3:
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
320 # dictionary management action
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
321 _, word, command = data
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
322 self.__addToUserDict(word, command)
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
324 @pyqtSlot(QAction)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
325 def __setLanguage(self, act):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
326 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
327 Private slot to set the selected language.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
328
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
329 @param act reference to the selected action
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
330 @type QAction
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
331 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
332 language = act.data()
8629
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
333 self.setLanguage(language)
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
335 @pyqtSlot(QAction)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
336 def __setFormat(self, act):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
337 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
338 Private slot to set the selected document format.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
339
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
340 @param act reference to the selected action
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
341 @type QAction
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
342 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
343 chunkers = act.data()
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
344 self.__highlighter.setChunkers(chunkers)
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
346 def setFormat(self, formatName):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
347 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
348 Public method to set the document format.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
349
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
350 @param formatName name of the document format
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
351 @type str
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
352 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
353 self.__highlighter.setChunkers(
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
354 [enchant.tokenize.HTMLChunker]
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
355 if format == "html" else
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
356 []
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
357 )
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
359 def dict(self):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
360 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
361 Public method to get a reference to the dictionary in use.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
362
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
363 @return reference to the current dictionary
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
364 @rtype enchant.Dict
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
365 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
366 return self.__highlighter.dict()
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
368 def setDict(self, spellDict):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
369 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
370 Public method to set the dictionary to be used.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
371
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
372 @param spellDict reference to the spell-check dictionary
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
373 @type emchant.Dict
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
374 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
375 self.__highlighter.setDict(spellDict)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
376
8629
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
377 @pyqtSlot(str)
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
378 def setLanguage(self, language):
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
379 """
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
380 Public slot to set the spellchecker language.
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
381
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
382 @param language language to be set
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
383 @type str
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
384 """
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
385 epwl = self.dict().pwl
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
386 pwl = (
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
387 epwl.provider.file
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
388 if isinstance(epwl, enchant.Dict) else
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
389 None
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
390 )
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
391
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
392 epel = self.dict().pel
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
393 pel = (
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
394 epel.provider.file
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
395 if isinstance(epel, enchant.Dict) else
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
396 None
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
397 )
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
398 self.setLanguageWithPWL(language, pwl, pel)
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
399
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
400 @pyqtSlot(str, str, str)
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
401 def setLanguageWithPWL(self, language, pwl, pel):
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
402 """
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
403 Public slot to set the spellchecker language and associated user
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
404 word lists.
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
405
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
406 @param language language to be set
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
407 @type str
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
408 @param pwl file name of the personal word list
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
409 @type str
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
410 @param pel file name of the personal exclude list
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
411 @type str
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
412 """
9021
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
413 try:
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
414 spellDict = enchant.DictWithPWL(language, pwl, pel)
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
415 except DictNotFoundError:
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
416 try:
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
417 # Use English dictionary if a dictionary for the given
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
418 # language is not available.
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
419 spellDict = enchant.DictWithPWL("en", pwl, pel)
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
420 except DictNotFoundError:
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
421 # Still no dictionary could be found. Forget about spell
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
422 # checking.
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
423 spellDict = None
62d6f565f740 Handled an error situation where no spell check dictionary could be found.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8901
diff changeset
424 self.__highlighter.setDict(spellDict)
8629
1b58dc890b87 Extended the Quick Commit (and other commit alike dialogs) to respect the project spell check language settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8432
diff changeset
425
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
426 @classmethod
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
427 def setDefaultLanguage(cls, language, pwl=None, pel=None):
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
428 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
429 Class method to set the default spell-check language.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
430
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
431 @param language language to be set as default
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
432 @type str
8431
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
433 @param pwl file name of the personal word list
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
434 @type str
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
435 @param pel file name of the personal exclude list
8431
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
436 @type str
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
437 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
438 with contextlib.suppress(DictNotFoundError):
8431
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
439 cls.DefaultUserWordList = pwl
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
440 cls.DefaultUserExceptionList = pel
bed315a45088 Started adding support for user word lists to the spell check text edits.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8428
diff changeset
441
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
442 # set default language only, if a dictionary is available
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
443 enchant.Dict(language)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
444 cls.DefaultLanguage = language
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
445
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
446 class EnchantHighlighter(QSyntaxHighlighter):
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 """
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
448 Class implementing a QSyntaxHighlighter subclass that consults a
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
449 pyEnchant dictionary to highlight misspelled words.
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 """
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
451 TokenFilters = (enchant.tokenize.EmailFilter,
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
452 enchant.tokenize.URLFilter)
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
454 # Define the spell-check style once and just assign it as necessary
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
455 ErrorFormat = QTextCharFormat()
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
456 ErrorFormat.setUnderlineColor(Qt.GlobalColor.red)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
457 ErrorFormat.setUnderlineStyle(
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
458 QTextCharFormat.UnderlineStyle.SpellCheckUnderline)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
459
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
460 def __init__(self, *args):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
461 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
462 Constructor
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
463
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
464 @param *args list of arguments for the QSyntaxHighlighter
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
465 @type list
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
466 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
467 QSyntaxHighlighter.__init__(self, *args)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
468
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
469 self.__spellDict = None
8901
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
470 self.__tokenizer = None
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
471 self.__chunkers = []
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
472
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
473 def chunkers(self):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
474 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
475 Public method to get the chunkers in use.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
476
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
477 @return list of chunkers in use
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
478 @rtype list
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
479 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
480 return self.__chunkers
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
481
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
482 def setChunkers(self, chunkers):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
483 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
484 Public method to set the chunkers to be used.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
485
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
486 @param chunkers chunkers to be used
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
487 @type list
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
488 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
489 self.__chunkers = chunkers
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
490 self.setDict(self.dict())
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
491
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
492 def dict(self):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
493 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
494 Public method to get the spelling dictionary in use.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
495
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
496 @return spelling dictionary
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
497 @rtype enchant.Dict
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
498 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
499 return self.__spellDict
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
501 def setDict(self, spellDict):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
502 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
503 Public method to set the spelling dictionary to be used.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
504
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
505 @param spellDict spelling dictionary
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
506 @type enchant.Dict
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
507 """
8901
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
508 if spellDict:
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
509 try:
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
510 self.__tokenizer = enchant.tokenize.get_tokenizer(
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
511 spellDict.tag,
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
512 chunkers=self.__chunkers,
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
513 filters=EnchantHighlighter.TokenFilters)
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
514 except TokenizerNotFoundError:
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
515 # Fall back to the "good for most euro languages"
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
516 # English tokenizer
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
517 self.__tokenizer = enchant.tokenize.get_tokenizer(
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
518 chunkers=self.__chunkers,
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
519 filters=EnchantHighlighter.TokenFilters)
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
520 else:
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
521 self.__tokenizer = None
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
522
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
523 self.__spellDict = spellDict
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
524
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
525 self.rehighlight()
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
526
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
527 def highlightBlock(self, text):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
528 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
529 Public method to apply the text highlight.
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
530
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
531 @param text text to be spell-checked
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
532 @type str
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
533 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
534 """Overridden QSyntaxHighlighter method to apply the highlight"""
8901
adc47f306e51 Added code to EricSpellCheckedTextEdit in order to cope with the situation where the spellchecking libraries (like aspell or hunspell) are not installed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
535 if self.__spellDict is None or self.__tokenizer is None:
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
536 return
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
537
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
538 # Build a list of all misspelled words and highlight them
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
539 misspellings = []
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
540 for (word, pos) in self.__tokenizer(text):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
541 if not self.__spellDict.check(word):
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
542 self.setFormat(pos, len(word),
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
543 EnchantHighlighter.ErrorFormat)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
544 misspellings.append((pos, pos + len(word)))
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
545
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
546 # Store the list so the context menu can reuse this tokenization
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
547 # pass (Block-relative values so editing other blocks won't
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
548 # invalidate them)
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
549 data = QTextBlockUserData()
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
550 data.misspelled = misspellings
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
551 self.setCurrentBlockUserData(data)
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
553 else:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
554
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
555 class SpellCheckMixin():
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
556 """
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
557 Class implementing the spell-check mixin for the widget classes.
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 """
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
559 #
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
560 # This is just a stub to provide the same API as the enchant enabled
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
561 # one.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
562 #
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
563 def __init__(self):
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
564 """
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
565 Constructor
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
566 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
567 pass
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
568
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
569 def setFormat(self, formatName):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
570 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
571 Public method to set the document format.
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
572
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
573 @param formatName name of the document format
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
574 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
575 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
576 pass
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
577
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
578 def dict(self):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
579 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
580 Public method to get a reference to the dictionary in use.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
581
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
582 @return reference to the current dictionary
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
583 @rtype enchant.Dict
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
584 """
8647
cdbce48aded8 Corrected some int-type related issues unfolded by Python 3.10.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8639
diff changeset
585 pass
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
586
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
587 def setDict(self, spellDict):
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
588 """
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
589 Public method to set the dictionary to be used.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
590
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
591 @param spellDict reference to the spell-check dictionary
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
592 @type emchant.Dict
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
593 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
594 pass
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
595
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
596 @pyqtSlot(str)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
597 def setLanguage(self, language):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
598 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
599 Public slot to set the spellchecker language.
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
600
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
601 @param language language to be set
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
602 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
603 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
604 pass
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
606 @pyqtSlot(str, str, str)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
607 def setLanguageWithPWL(self, language, pwl, pel):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
608 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
609 Public slot to set the spellchecker language and associated user
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
610 word lists.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
611
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
612 @param language language to be set
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
613 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
614 @param pwl file name of the personal word list
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
615 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
616 @param pel file name of the personal exclude list
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
617 @type str
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
618 """
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
619 pass
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
620
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
621 @classmethod
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
622 def setDefaultLanguage(cls, language, pwl=None, pel=None):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
623 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
624 Class method to set the default spell-check language.
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
625
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
626 @param language language to be set as default
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
627 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
628 @param pwl file name of the personal word list
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
629 @type str
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
630 @param pel file name of the personal exclude list
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
631 @type str
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
632 """
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
633 pass
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
634
8647
cdbce48aded8 Corrected some int-type related issues unfolded by Python 3.10.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8639
diff changeset
635
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
636 class EricSpellCheckedPlainTextEdit(QPlainTextEdit, SpellCheckMixin):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
637 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
638 Class implementing a QPlainTextEdit with built-in spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
639 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
640 def __init__(self, *args):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
641 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
642 Constructor
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
643
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
644 @param *args list of arguments for the QPlainTextEdit constructor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
645 @type list
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
646 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
647 QPlainTextEdit.__init__(self, *args)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
648 SpellCheckMixin.__init__(self)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
649
8647
cdbce48aded8 Corrected some int-type related issues unfolded by Python 3.10.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8639
diff changeset
650
8639
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
651 class EricSpellCheckedTextEdit(QTextEdit, SpellCheckMixin):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
652 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
653 Class implementing a QTextEdit with built-in spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
654 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
655 def __init__(self, *args):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
656 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
657 Constructor
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
658
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
659 @param *args list of arguments for the QPlainTextEdit constructor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
660 @type list
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
661 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
662 QTextEdit.__init__(self, *args)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
663 SpellCheckMixin.__init__(self)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
664
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
665 self.setFormat("html")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
666
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
667 def setAcceptRichText(self, accept):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
668 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
669 Public method to set the text edit mode.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
670
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
671 @param accept flag indicating to accept rich text
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
672 @type bool
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
673 """
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
674 QTextEdit.setAcceptRichText(self, accept)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8629
diff changeset
675 self.setFormat("html" if accept else "text")
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 if __name__ == '__main__':
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
678 import sys
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
679 import os
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 from PyQt6.QtWidgets import QApplication
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
682 if ENCHANT_AVAILABLE:
8432
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
683 dictPath = os.path.expanduser(os.path.join("~", ".eric7", "spelling"))
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
684 SpellCheckMixin.setDefaultLanguage(
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
685 "en_US",
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
686 os.path.join(dictPath, "pwl.dic"),
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
687 os.path.join(dictPath, "pel.dic")
074407b4c107 Extended the spellcheck text edits to add and remove words from user specific dictionaries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8431
diff changeset
688 )
8428
2deec2f8a9ab Changed some dialogs to use the new QTextEdit and QPlainTextEdit subclasses with spell checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8427
diff changeset
689
8427
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 app = QApplication(sys.argv)
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 spellEdit = EricSpellCheckedPlainTextEdit()
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 spellEdit.show()
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693
5ccf32f95805 EricWidgets: added a QTextEdit and QPlainTextEdit subclass with built-in spell-checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 sys.exit(app.exec())

eric ide

mercurial