src/eric7/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.py

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

eric ide

mercurial