Preferences/ConfigurationPages/WebBrowserSpellCheckingPage.py

changeset 5532
3a7c5deab9b7
child 5558
858abfcbaf28
equal deleted inserted replaced
5530:93f95c4b3153 5532:3a7c5deab9b7
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the Web Browser Spell Checking configuration page.
8 """
9
10 from PyQt5.QtCore import pyqtSlot, Qt, QCoreApplication, QDir, QLibraryInfo, \
11 QLocale
12 from PyQt5.QtWidgets import QListWidgetItem
13
14 from .ConfigurationPageBase import ConfigurationPageBase
15 from .Ui_WebBrowserSpellCheckingPage import Ui_WebBrowserSpellCheckingPage
16
17 import Preferences
18 import Globals
19
20
21 class WebBrowserSpellCheckingPage(ConfigurationPageBase,
22 Ui_WebBrowserSpellCheckingPage):
23 """
24 Class implementing the Web Browser Spell Checking page.
25 """
26 def __init__(self):
27 """
28 Constructor
29 """
30 super(WebBrowserSpellCheckingPage, self).__init__()
31 self.setupUi(self)
32 self.setObjectName("WebBrowserSpellCheckingPage")
33
34 # set initial values
35 self.spellCheckEnabledCheckBox.setChecked(
36 Preferences.getWebBrowser("SpellCheckEnabled"))
37 self.on_spellCheckEnabledCheckBox_clicked()
38
39 if Globals.isMacPlatform():
40 dictionaryDirectories = {
41 QDir.cleanPath(
42 QCoreApplication.applicationDirPath() +
43 "/../Contents/Resources/qtwebengine_dictionaries"),
44 QDir.cleanPath(
45 QCoreApplication.applicationDirPath() +
46 "/../Contents/Frameworks/QtWebEngineCore.framework"
47 "/Resources/qtwebengine_dictionaries"),
48 }
49 else:
50 dictionaryDirectories = {
51 QDir.cleanPath(
52 QCoreApplication.applicationDirPath() +
53 "/qtwebengine_dictionaries"),
54 QDir.cleanPath(
55 QLibraryInfo.location(QLibraryInfo.DataPath) +
56 "/qtwebengine_dictionaries"),
57 }
58 self.spellCheckDictionaryDirectoriesEdit.setPlainText(
59 "\n".join(dictionaryDirectories))
60
61 for path in dictionaryDirectories:
62 directory = QDir(path)
63 fileNames = directory.entryList(["*.bdic"])
64 for fileName in fileNames:
65 lang = fileName[:-5]
66 langStr = self.__createLanguageString(lang)
67 if self.spellCheckLanguagesList.findItems(langStr,
68 Qt.MatchExactly):
69 continue
70
71 itm = QListWidgetItem(langStr, self.spellCheckLanguagesList)
72 itm.setData(Qt.UserRole, lang)
73 itm.setFlags(itm.flags() | Qt.ItemIsUserCheckable)
74 itm.setCheckState(Qt.Unchecked)
75 self.spellCheckLanguagesList.sortItems(Qt.AscendingOrder)
76
77 spellCheckLanguages = Preferences.getWebBrowser("SpellCheckLanguages")
78 topIndex = 0
79 for lang in spellCheckLanguages:
80 items = self.spellCheckLanguagesList.findItems(
81 self.__createLanguageString(lang), Qt.MatchExactly)
82 if items:
83 itm = items[0]
84 self.spellCheckLanguagesList.takeItem(
85 self.spellCheckLanguagesList.row(itm))
86 self.spellCheckLanguagesList.insertItem(topIndex, itm)
87 itm.setCheckState(Qt.Checked)
88 topIndex += 1
89
90 if self.spellCheckLanguagesList.count():
91 self.noLanguagesLabel.hide()
92 else:
93 self.spellCheckLanguagesList.hide()
94
95 def save(self):
96 """
97 Public slot to save the Help Viewers configuration.
98 """
99 languages = []
100 for row in range(self.spellCheckLanguagesList.count()):
101 itm = self.spellCheckLanguagesList.item(row)
102 if itm.checkState() == Qt.Checked:
103 languages.append(itm.data(Qt.UserRole))
104
105 Preferences.setWebBrowser(
106 "SpellCheckEnabled",
107 self.spellCheckEnabledCheckBox.isChecked())
108 Preferences.setWebBrowser(
109 "SpellCheckLanguages",
110 languages)
111
112 @pyqtSlot()
113 def on_spellCheckEnabledCheckBox_clicked(self):
114 """
115 Private slot handling a change of the spell checking enabled state.
116
117 @param checked state of the check box
118 @type bool
119 """
120 enable = self.spellCheckEnabledCheckBox.isChecked()
121 self.noLanguagesLabel.setEnabled(enable)
122 self.spellCheckLanguagesList.setEnabled(enable)
123
124 def __createLanguageString(self, language):
125 """
126 Private method to create a language string given a language identifier.
127
128 @param language language identifier
129 @type str
130 @return language string
131 @rtype str
132 """
133 loc = QLocale(language)
134
135 if loc.language() == QLocale.C:
136 return language
137
138 country = QLocale.countryToString(loc.country())
139 lang = QLocale.languageToString(loc.language())
140 languageString = "{0}/{1} [{2}]".format(lang, country, language)
141 return languageString
142
143
144 def create(dlg):
145 """
146 Module function to create the configuration page.
147
148 @param dlg reference to the configuration dialog
149 @type Configuration
150 @return reference to the instantiated page
151 @rtype ConfigurationPageBase
152 """
153 page = WebBrowserSpellCheckingPage()
154 return page

eric ide

mercurial