eric6/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 7229
53054eb5b15a
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2014 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the Time Tracker configuration page.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtCore import pyqtSlot, Qt
13 from PyQt5.QtWidgets import QListWidgetItem
14
15 from E5Gui import E5MessageBox
16
17 from Preferences.ConfigurationPages.ConfigurationPageBase import \
18 ConfigurationPageBase
19 from .Ui_TranslatorPage import Ui_TranslatorPage
20
21 from ..TranslatorLanguagesDb import TranslatorLanguagesDb
22 from .. import TranslatorEngines
23
24
25 class TranslatorPage(ConfigurationPageBase, Ui_TranslatorPage):
26 """
27 Class implementing the Time Tracker configuration page.
28 """
29 def __init__(self, plugin):
30 """
31 Constructor
32
33 @param plugin reference to the plugin object
34 """
35 super(TranslatorPage, self).__init__()
36 self.setupUi(self)
37 self.setObjectName("TranslatorPage")
38
39 self.__plugin = plugin
40 self.__enableLanguageWarning = True
41
42 self.deeplLabel.setText(self.tr(
43 """<p>A key is <b>required</b> to use this service."""
44 """ <a href="{0}">Get a commercial API key.</a></p>""").format(
45 TranslatorEngines.getKeyUrl("deepl")))
46 self.googlev2Label.setText(self.tr(
47 """<p>A key is <b>required</b> to use this service."""
48 """ <a href="{0}">Get a commercial API key.</a></p>""").format(
49 TranslatorEngines.getKeyUrl("googlev2")))
50 self.ibmLabel.setText(self.tr(
51 """<p>A key is <b>required</b> to use this service."""
52 """ <a href="{0}">Register with IBM Cloud.</a></p>""").format(
53 TranslatorEngines.getKeyUrl("ibm_watson")))
54 self.msLabel.setText(self.tr(
55 """<p>A registration of the text translation service is"""
56 """ <b>required</b>. <a href="{0}">Register with Microsoft"""
57 """ Azure.</a></p>""").format(
58 TranslatorEngines.getKeyUrl("microsoft")))
59 self.mymemoryLabel.setText(self.tr(
60 """<p>A key is <b>optional</b> to use this service."""
61 """ <a href="{0}">Get a free API key.</a></p>""").format(
62 TranslatorEngines.getKeyUrl("mymemory")))
63 self.yandexLabel.setText(self.tr(
64 """<p>A key is <b>required</b> to use this service."""
65 """ <a href="{0}">Get a free API key.</a></p>""").format(
66 TranslatorEngines.getKeyUrl("yandex")))
67
68 # set initial values
69 enabledLanguages = self.__plugin.getPreferences("EnabledLanguages")
70 languages = TranslatorLanguagesDb()
71 for languageCode in languages.getAllLanguages():
72 itm = QListWidgetItem()
73 itm.setText(languages.getLanguage(languageCode))
74 itm.setIcon(languages.getLanguageIcon(languageCode))
75 itm.setData(Qt.UserRole, languageCode)
76 if languageCode in enabledLanguages or not enabledLanguages:
77 itm.setCheckState(Qt.Checked)
78 else:
79 itm.setCheckState(Qt.Unchecked)
80 self.languagesList.addItem(itm)
81 self.languagesList.sortItems()
82
83 # DeepL settings
84 self.deeplKeyEdit.setText(
85 self.__plugin.getPreferences("DeeplKey"))
86 # Google settings
87 self.dictionaryCheckBox.setChecked(
88 self.__plugin.getPreferences("GoogleEnableDictionary"))
89 self.googlev2KeyEdit.setText(
90 self.__plugin.getPreferences("GoogleV2Key"))
91 # IBM Watson settings
92 self.ibmUrlEdit.setText(
93 self.__plugin.getPreferences("IbmUrl"))
94 self.ibmKeyEdit.setText(
95 self.__plugin.getPreferences("IbmKey"))
96 # Microsoft settings
97 self.msSubscriptionKeyEdit.setText(
98 self.__plugin.getPreferences("MsTranslatorKey"))
99 # MyMemory settings
100 self.mymemoryKeyEdit.setText(
101 self.__plugin.getPreferences("MyMemoryKey"))
102 self.mymemoryEmailEdit.setText(
103 self.__plugin.getPreferences("MyMemoryEmail"))
104 # Yandex settings
105 self.yandexKeyEdit.setText(
106 self.__plugin.getPreferences("YandexKey"))
107
108 def save(self):
109 """
110 Public slot to save the Pyramid configuration.
111 """
112 enabledLanguages = [
113 itm.data(Qt.UserRole)
114 for itm in self.__checkedLanguageItems()
115 ]
116 self.__plugin.setPreferences(
117 "EnabledLanguages", enabledLanguages)
118
119 # DeepL settings
120 self.__plugin.setPreferences(
121 "DeeplKey", self.deeplKeyEdit.text())
122 # Google settings
123 self.__plugin.setPreferences(
124 "GoogleEnableDictionary", self.dictionaryCheckBox.isChecked())
125 self.__plugin.setPreferences(
126 "GoogleV2Key", self.googlev2KeyEdit.text())
127 # IBM Watson settings
128 self.__plugin.setPreferences(
129 "IbmUrl", self.ibmUrlEdit.text())
130 self.__plugin.setPreferences(
131 "IbmKey", self.ibmKeyEdit.text())
132 # Microsoft settings
133 self.__plugin.setPreferences(
134 "MsTranslatorKey", self.msSubscriptionKeyEdit.text())
135 # MyMemory settings
136 self.__plugin.setPreferences(
137 "MyMemoryKey", self.mymemoryKeyEdit.text())
138 # Yandex settings
139 self.__plugin.setPreferences(
140 "YandexKey", self.yandexKeyEdit.text())
141
142 def __checkedLanguageItems(self):
143 """
144 Private method to get a list of checked language items.
145
146 @return list of checked language items (list of QListWidgetItem)
147 """
148 items = []
149 for index in range(self.languagesList.count()):
150 itm = self.languagesList.item(index)
151 if itm.checkState() == Qt.Checked:
152 items.append(itm)
153
154 return items
155
156 @pyqtSlot()
157 def on_setButton_clicked(self):
158 """
159 Private slot to set or unset all items.
160 """
161 self.__enableLanguageWarning = False
162
163 unset = len(self.__checkedLanguageItems()) > 0
164 for index in range(self.languagesList.count()):
165 itm = self.languagesList.item(index)
166 if unset:
167 itm.setCheckState(Qt.Unchecked)
168 else:
169 itm.setCheckState(Qt.Checked)
170
171 self.__enableLanguageWarning = True
172
173 @pyqtSlot()
174 def on_defaultButton_clicked(self):
175 """
176 Private slot to set the default languages.
177 """
178 self.__enableLanguageWarning = False
179
180 defaults = self.__plugin.getPreferencesDefault("EnabledLanguages")
181 for index in range(self.languagesList.count()):
182 itm = self.languagesList.item(index)
183 if itm.data(Qt.UserRole) in defaults:
184 itm.setCheckState(Qt.Checked)
185 else:
186 itm.setCheckState(Qt.Unchecked)
187
188 self.__enableLanguageWarning = True
189
190 @pyqtSlot(QListWidgetItem)
191 def on_languagesList_itemChanged(self, item):
192 """
193 Private slot to handle the selection of an item.
194
195 @param item reference to the changed item (QListWidgetItem)
196 """
197 if self.__enableLanguageWarning and \
198 len(self.__checkedLanguageItems()) < 2:
199 E5MessageBox.warning(
200 self,
201 self.tr("Enabled Languages"),
202 self.tr("""At least two languages should be selected to"""
203 """ work correctly."""))

eric ide

mercurial