--- a/Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py Sat Nov 24 15:37:04 2018 +0100 +++ b/Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py Sat Dec 01 10:06:10 2018 +0100 @@ -91,29 +91,30 @@ Private slot to update the language combo boxes. """ self.__ensureTranslationEngineReady() - - supportedCodes = self.__translationEngine.supportedLanguages() - enabledCodes = self.__plugin.getPreferences("EnabledLanguages") - - # 1. save current selections - origLanguage = self.origLanguageComboBox.itemData( - self.origLanguageComboBox.currentIndex()) - - # 2. reload the original language combo box - self.origLanguageComboBox.blockSignals(True) - self.origLanguageComboBox.clear() - for code in enabledCodes: - if code in supportedCodes: - language = self.__languages.getLanguage(code) - if language: - icon = self.__languages.getLanguageIcon(code) - self.origLanguageComboBox.addItem(icon, language, code) - self.origLanguageComboBox.model().sort(0) - origIndex = self.origLanguageComboBox.findData(origLanguage) - if origIndex == -1: - origIndex = 0 - self.origLanguageComboBox.blockSignals(False) - self.origLanguageComboBox.setCurrentIndex(origIndex) + if self.__translationEngine is not None: + supportedCodes = self.__translationEngine.supportedLanguages() + enabledCodes = self.__plugin.getPreferences("EnabledLanguages") + + # 1. save current selections + origLanguage = self.origLanguageComboBox.itemData( + self.origLanguageComboBox.currentIndex()) + + # 2. reload the original language combo box + self.origLanguageComboBox.blockSignals(True) + self.origLanguageComboBox.clear() + for code in enabledCodes: + if code in supportedCodes: + language = self.__languages.getLanguage(code) + if language: + icon = self.__languages.getLanguageIcon(code) + self.origLanguageComboBox.addItem( + icon, language, code) + self.origLanguageComboBox.model().sort(0) + origIndex = self.origLanguageComboBox.findData(origLanguage) + if origIndex == -1: + origIndex = 0 + self.origLanguageComboBox.blockSignals(False) + self.origLanguageComboBox.setCurrentIndex(origIndex) def __updateEngines(self): """ @@ -326,12 +327,12 @@ @type int """ self.__ensureTranslationEngineReady() - - self.__updateTranslateButton() - self.__updatePronounceButtons() - - self.__plugin.setPreferences( - "SelectedEngine", self.engineComboBox.itemData(index)) + if self.__translationEngine is not None: + self.__updateTranslateButton() + self.__updatePronounceButtons() + + self.__plugin.setPreferences( + "SelectedEngine", self.engineComboBox.itemData(index)) def __updatePronounceButtons(self): """ @@ -378,12 +379,14 @@ self.__translatorRequest = TranslatorRequest(self) self.__ensureTranslationEngineReady() - - result, ok = self.__translationEngine.getTranslation( - self.__translatorRequest, text, originalLanguage, - translationLanguage) - - return result, ok + if self.__translationEngine is None: + return "", False + else: + result, ok = self.__translationEngine.getTranslation( + self.__translatorRequest, text, originalLanguage, + translationLanguage) + + return result, ok def __pronounce(self, text, language): """ @@ -408,30 +411,30 @@ return self.__ensureTranslationEngineReady() - - if not self.__translationEngine.hasTTS(): - E5MessageBox.critical( - self, - self.tr("Translation Error"), - self.tr("The selected translation service does not support" - " the Text-to-Speech function.")) - return - - data, ok = self.__translationEngine.getTextToSpeechData( - self.__translatorRequest, text, language) - if ok: - self.__mediaFile = QTemporaryFile(self) - self.__mediaFile.open() - self.__mediaFile.setAutoRemove(False) - self.__mediaFile.write(data) + if self.__translationEngine is not None: + if not self.__translationEngine.hasTTS(): + E5MessageBox.critical( + self, + self.tr("Translation Error"), + self.tr("The selected translation service does not" + " support the Text-to-Speech function.")) + return - self.__mediaPlayer.setMedia(QMediaContent(), self.__mediaFile) - self.__mediaPlayer.play() - else: - E5MessageBox.critical( - self, - self.tr("Translation Error"), - data) + data, ok = self.__translationEngine.getTextToSpeechData( + self.__translatorRequest, text, language) + if ok: + self.__mediaFile = QTemporaryFile(self) + self.__mediaFile.open() + self.__mediaFile.setAutoRemove(False) + self.__mediaFile.write(data) + + self.__mediaPlayer.setMedia(QMediaContent(), self.__mediaFile) + self.__mediaPlayer.play() + else: + E5MessageBox.critical( + self, + self.tr("Translation Error"), + data) def __mediaPlayerStateChanged(self, state): """