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 |