Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py

changeset 6598
20917d2d9b4b
parent 6577
232f83b6763b
child 6645
ad476851d7e0
diff -r dc668f774d3d -r 20917d2d9b4b Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py
--- 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):
         """

eric ide

mercurial