|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2008 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing the Editor Spellchecking configuration page. |
|
8 """ |
|
9 |
|
10 from EricWidgets.EricPathPicker import EricPathPickerModes |
|
11 |
|
12 from .ConfigurationPageBase import ConfigurationPageBase |
|
13 from .Ui_EditorSpellCheckingPage import Ui_EditorSpellCheckingPage |
|
14 |
|
15 import Preferences |
|
16 |
|
17 |
|
18 class EditorSpellCheckingPage(ConfigurationPageBase, |
|
19 Ui_EditorSpellCheckingPage): |
|
20 """ |
|
21 Class implementing the Editor Spellchecking configuration page. |
|
22 """ |
|
23 def __init__(self): |
|
24 """ |
|
25 Constructor |
|
26 """ |
|
27 super().__init__() |
|
28 self.setupUi(self) |
|
29 self.setObjectName("EditorSpellCheckingPage") |
|
30 |
|
31 self.pwlPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
|
32 self.pwlPicker.setFilters(self.tr( |
|
33 "Dictionary File (*.dic);;All Files (*)")) |
|
34 |
|
35 self.pelPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
|
36 self.pelPicker.setFilters(self.tr( |
|
37 "Dictionary File (*.dic);;All Files (*)")) |
|
38 |
|
39 from QScintilla.SpellChecker import SpellChecker |
|
40 languages = sorted(SpellChecker.getAvailableLanguages()) |
|
41 self.defaultLanguageCombo.addItems(languages) |
|
42 if languages: |
|
43 self.errorLabel.hide() |
|
44 else: |
|
45 self.spellingFrame.setEnabled(False) |
|
46 |
|
47 # set initial values |
|
48 self.checkingEnabledCheckBox.setChecked( |
|
49 Preferences.getEditor("SpellCheckingEnabled")) |
|
50 |
|
51 self.defaultLanguageCombo.setCurrentIndex( |
|
52 self.defaultLanguageCombo.findText( |
|
53 Preferences.getEditor("SpellCheckingDefaultLanguage"))) |
|
54 |
|
55 self.stringsOnlyCheckBox.setChecked( |
|
56 Preferences.getEditor("SpellCheckStringsOnly")) |
|
57 self.fullCheckUnknownCheckBox.setChecked( |
|
58 Preferences.getEditor("FullSpellCheckUnknown")) |
|
59 self.minimumWordSizeSlider.setValue( |
|
60 Preferences.getEditor("SpellCheckingMinWordSize")) |
|
61 self.spellCheckTextFilesLineEdit.setText( |
|
62 " ".join(Preferences.getEditor("FullSpellCheckExtensions"))) |
|
63 |
|
64 self.initColour( |
|
65 "SpellingMarkers", self.spellingMarkerButton, |
|
66 Preferences.getEditorColour, hasAlpha=True) |
|
67 |
|
68 self.pwlPicker.setText( |
|
69 Preferences.getEditor("SpellCheckingPersonalWordList")) |
|
70 self.pelPicker.setText( |
|
71 Preferences.getEditor("SpellCheckingPersonalExcludeList")) |
|
72 |
|
73 if self.spellingFrame.isEnabled(): |
|
74 self.enabledCheckBox.setChecked( |
|
75 Preferences.getEditor("AutoSpellCheckingEnabled")) |
|
76 else: |
|
77 self.enabledCheckBox.setChecked(False) # not available |
|
78 self.chunkSizeSpinBox.setValue( |
|
79 Preferences.getEditor("AutoSpellCheckChunkSize")) |
|
80 |
|
81 def save(self): |
|
82 """ |
|
83 Public slot to save the Editor Search configuration. |
|
84 """ |
|
85 Preferences.setEditor( |
|
86 "SpellCheckingEnabled", self.checkingEnabledCheckBox.isChecked()) |
|
87 |
|
88 Preferences.setEditor( |
|
89 "SpellCheckingDefaultLanguage", |
|
90 self.defaultLanguageCombo.currentText()) |
|
91 |
|
92 Preferences.setEditor( |
|
93 "SpellCheckStringsOnly", self.stringsOnlyCheckBox.isChecked()) |
|
94 Preferences.setEditor( |
|
95 "FullSpellCheckUnknown", |
|
96 self.fullCheckUnknownCheckBox.isChecked()) |
|
97 Preferences.setEditor( |
|
98 "SpellCheckingMinWordSize", self.minimumWordSizeSlider.value()) |
|
99 Preferences.setEditor( |
|
100 "FullSpellCheckExtensions", |
|
101 [ext.strip() for ext in |
|
102 self.spellCheckTextFilesLineEdit.text().split()]) |
|
103 |
|
104 self.saveColours(Preferences.setEditorColour) |
|
105 |
|
106 Preferences.setEditor( |
|
107 "SpellCheckingPersonalWordList", self.pwlPicker.text()) |
|
108 Preferences.setEditor( |
|
109 "SpellCheckingPersonalExcludeList", self.pelPicker.text()) |
|
110 |
|
111 Preferences.setEditor( |
|
112 "AutoSpellCheckingEnabled", self.enabledCheckBox.isChecked()) |
|
113 Preferences.setEditor( |
|
114 "AutoSpellCheckChunkSize", self.chunkSizeSpinBox.value()) |
|
115 |
|
116 |
|
117 def create(dlg): |
|
118 """ |
|
119 Module function to create the configuration page. |
|
120 |
|
121 @param dlg reference to the configuration dialog |
|
122 @return reference to the instantiated page (ConfigurationPageBase) |
|
123 """ |
|
124 page = EditorSpellCheckingPage() |
|
125 return page |