Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py

changeset 6411
7fd9b7ecbcfe
parent 6048
82ad8ec9548c
child 6412
d71b094845e7
equal deleted inserted replaced
6410:98a5d0cd72f5 6411:7fd9b7ecbcfe
94 def __updateLanguages(self): 94 def __updateLanguages(self):
95 """ 95 """
96 Private slot to update the language combo boxes. 96 Private slot to update the language combo boxes.
97 """ 97 """
98 supportedCodes = self.__translationEngine.supportedLanguages() 98 supportedCodes = self.__translationEngine.supportedLanguages()
99 enabledCodes = self.__plugin.getPreferences("EnabledLanguages")
100
101 # 1. save current selections
99 origLanguage = self.origLanguageComboBox.itemData( 102 origLanguage = self.origLanguageComboBox.itemData(
100 self.origLanguageComboBox.currentIndex()) 103 self.origLanguageComboBox.currentIndex())
101 transLanguage = self.transLanguageComboBox.itemData( 104 transLanguage = self.transLanguageComboBox.itemData(
102 self.transLanguageComboBox.currentIndex()) 105 self.transLanguageComboBox.currentIndex())
106
107 # 2. reload the original language combo box
108 self.origLanguageComboBox.blockSignals(True)
103 self.origLanguageComboBox.clear() 109 self.origLanguageComboBox.clear()
104 self.transLanguageComboBox.clear() 110 for code in enabledCodes:
105 for code in self.__plugin.getPreferences("EnabledLanguages"):
106 if code in supportedCodes: 111 if code in supportedCodes:
107 language = self.__languages.getLanguage(code) 112 language = self.__languages.getLanguage(code)
108 if language: 113 if language:
109 icon = self.__languages.getLanguageIcon(code) 114 icon = self.__languages.getLanguageIcon(code)
110 self.origLanguageComboBox.addItem(icon, language, code) 115 self.origLanguageComboBox.addItem(icon, language, code)
111 self.transLanguageComboBox.addItem(icon, language, code)
112 self.origLanguageComboBox.model().sort(0) 116 self.origLanguageComboBox.model().sort(0)
113 self.transLanguageComboBox.model().sort(0) 117 origIndex = self.origLanguageComboBox.findData(origLanguage)
114 self.origLanguageComboBox.setCurrentIndex( 118 if origIndex == -1:
115 self.origLanguageComboBox.findData(origLanguage)) 119 origIndex = 0
116 self.transLanguageComboBox.setCurrentIndex( 120 self.origLanguageComboBox.blockSignals(False)
117 self.transLanguageComboBox.findData(transLanguage)) 121 self.origLanguageComboBox.setCurrentIndex(origIndex)
122
123 # 3. reload the target language combo box, if the target is not
124 # dependent upon the source language
125 supportedTargetCodes = \
126 self.__translationEngine.supportedTargetLanguages(
127 self.origLanguageComboBox.itemData(
128 self.origLanguageComboBox.currentIndex()
129 )
130 )
131 if supportedTargetCodes is None:
132 # supported target codes are independent
133 self.transLanguageComboBox.clear()
134 for code in enabledCodes:
135 if code in supportedCodes:
136 language = self.__languages.getLanguage(code)
137 if language:
138 icon = self.__languages.getLanguageIcon(code)
139 self.transLanguageComboBox.addItem(icon, language,
140 code)
141 self.transLanguageComboBox.model().sort(0)
142 index = self.transLanguageComboBox.findData(transLanguage)
143 if index == -1:
144 index = 0
145 self.transLanguageComboBox.setCurrentIndex(index)
146 else:
147 self.on_origLanguageComboBox_currentIndexChanged(origIndex)
118 148
119 def __updateEngines(self): 149 def __updateEngines(self):
120 """ 150 """
121 Private slot to update the engines combo box. 151 Private slot to update the engines combo box.
122 """ 152 """
188 @pyqtSlot() 218 @pyqtSlot()
189 def on_swapButton_clicked(self): 219 def on_swapButton_clicked(self):
190 """ 220 """
191 Private slot to swap the languages. 221 Private slot to swap the languages.
192 """ 222 """
193 oIdx = self.origLanguageComboBox.currentIndex() 223 # save selected language codes
194 self.origLanguageComboBox.setCurrentIndex( 224 oLanguage = self.origLanguageComboBox.itemData(
225 self.origLanguageComboBox.currentIndex())
226
227 tLanguage = self.transLanguageComboBox.itemData(
195 self.transLanguageComboBox.currentIndex()) 228 self.transLanguageComboBox.currentIndex())
196 self.transLanguageComboBox.setCurrentIndex(oIdx) 229
230 oIdx = self.origLanguageComboBox.findData(tLanguage)
231 if oIdx < 0:
232 oIdx = 0
233 self.origLanguageComboBox.setCurrentIndex(oIdx)
234
235 tIdx = self.transLanguageComboBox.findData(oLanguage)
236 if tIdx < 0:
237 tIdx = 0
238 self.transLanguageComboBox.setCurrentIndex(tIdx)
197 239
198 origText = self.origEdit.toPlainText() 240 origText = self.origEdit.toPlainText()
199 self.origEdit.setPlainText(self.transEdit.toPlainText()) 241 self.origEdit.setPlainText(self.transEdit.toPlainText())
200 self.transEdit.setPlainText(origText) 242 self.transEdit.setPlainText(origText)
201 243
210 @pyqtSlot() 252 @pyqtSlot()
211 def on_origEdit_textChanged(self): 253 def on_origEdit_textChanged(self):
212 """ 254 """
213 Private slot to handle changes of the original text. 255 Private slot to handle changes of the original text.
214 """ 256 """
215 enable = bool(self.origEdit.toPlainText())
216 self.translateButton.setEnabled(enable)
217 self.__updatePronounceButtons() 257 self.__updatePronounceButtons()
218 self.__updateClearButton() 258 self.__updateClearButton()
259 self.__updateTranslateButton()
219 260
220 @pyqtSlot() 261 @pyqtSlot()
221 def on_transEdit_textChanged(self): 262 def on_transEdit_textChanged(self):
222 """ 263 """
223 Private slot to handle changes of the translation text. 264 Private slot to handle changes of the translation text.
232 273
233 @param index current index (integer) 274 @param index current index (integer)
234 """ 275 """
235 self.__plugin.setPreferences( 276 self.__plugin.setPreferences(
236 "OriginalLanguage", self.origLanguageComboBox.itemData(index)) 277 "OriginalLanguage", self.origLanguageComboBox.itemData(index))
278
279 supportedTargetCodes = \
280 self.__translationEngine.supportedTargetLanguages(
281 self.origLanguageComboBox.itemData(index)
282 )
283 if supportedTargetCodes is not None:
284 enabledCodes = self.__plugin.getPreferences("EnabledLanguages")
285 transLanguage = self.transLanguageComboBox.itemData(
286 self.transLanguageComboBox.currentIndex())
287 self.transLanguageComboBox.clear()
288 if len(supportedTargetCodes) > 0:
289 for code in enabledCodes:
290 if code in supportedTargetCodes:
291 language = self.__languages.getLanguage(code)
292 if language:
293 icon = self.__languages.getLanguageIcon(code)
294 self.transLanguageComboBox.addItem(
295 icon, language, code)
296 self.transLanguageComboBox.model().sort(0)
297 index = self.transLanguageComboBox.findData(transLanguage)
298 if index == -1:
299 index = 0
300 self.transLanguageComboBox.setCurrentIndex(index)
301
302 self.__updateTranslateButton()
237 303
238 @pyqtSlot(int) 304 @pyqtSlot(int)
239 def on_transLanguageComboBox_currentIndexChanged(self, index): 305 def on_transLanguageComboBox_currentIndexChanged(self, index):
240 """ 306 """
241 Private slot to handle the selection of the translation language. 307 Private slot to handle the selection of the translation language.
270 336
271 def __updatePronounceButtons(self): 337 def __updatePronounceButtons(self):
272 """ 338 """
273 Private slot to set the state of the pronounce buttons. 339 Private slot to set the state of the pronounce buttons.
274 """ 340 """
275 hasTTS = self.__translationEngine.hasTTS() 341 if self.__translationEngine is not None:
342 hasTTS = self.__translationEngine.hasTTS()
343 else:
344 hasTTS = False
276 self.pronounceOrigButton.setEnabled( 345 self.pronounceOrigButton.setEnabled(
277 hasTTS and bool(self.origEdit.toPlainText())) 346 hasTTS and bool(self.origEdit.toPlainText()))
278 self.pronounceTransButton.setEnabled( 347 self.pronounceTransButton.setEnabled(
279 hasTTS and bool(self.transEdit.toPlainText())) 348 hasTTS and bool(self.transEdit.toPlainText()))
280 349
283 Private slot to set the state of the clear button. 352 Private slot to set the state of the clear button.
284 """ 353 """
285 enable = bool(self.origEdit.toPlainText()) or \ 354 enable = bool(self.origEdit.toPlainText()) or \
286 bool(self.transEdit.toPlainText()) 355 bool(self.transEdit.toPlainText())
287 self.clearButton.setEnabled(enable) 356 self.clearButton.setEnabled(enable)
357
358 def __updateTranslateButton(self):
359 """
360 Private slot to set the state of the translate button.
361 """
362 enable = bool(self.origEdit.toPlainText())
363 enable &= bool(self.__translationLanguage())
364 self.translateButton.setEnabled(enable)
288 365
289 def __translate(self, text, originalLanguage, translationLanguage): 366 def __translate(self, text, originalLanguage, translationLanguage):
290 """ 367 """
291 Private method to translate the given text. 368 Private method to translate the given text.
292 369

eric ide

mercurial