Plugins/PluginTranslator.py

changeset 6018
1c858879d3d0
child 6026
4773c9469880
diff -r dab01678626d -r 1c858879d3d0 Plugins/PluginTranslator.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/PluginTranslator.py	Sun Dec 10 16:23:29 2017 +0100
@@ -0,0 +1,210 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2014 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Translator plugin.
+"""
+
+from __future__ import unicode_literals
+
+import os
+
+from PyQt5.QtCore import pyqtSignal, QObject, QCoreApplication, QDateTime, Qt
+
+from E5Gui.E5Application import e5App
+
+import Preferences
+
+from UiExtensionPlugins.Translator.Translator import Translator
+
+import UI.Info
+
+# Start-Of-Header
+name = "Translator Plugin"
+author = "Detlev Offenbach <detlev@die-offenbachs.de>"
+autoactivate = True
+deactivateable = True
+version = UI.Info.VersionOnly
+className = "TranslatorPlugin"
+packageName = "__core__"
+shortDescription = "Translation utility using various translators."
+longDescription = \
+    """This plug-in implements a utility to translate text using""" \
+    """ various online translation services."""
+needsRestart = False
+pyqtApi = 2
+python2Compatible = True
+# End-Of-Header
+
+error = ""
+
+translatorPluginObject = None
+    
+
+def createTranslatorPage(configDlg):
+    """
+    Module function to create the Translator configuration page.
+    
+    @param configDlg reference to the configuration dialog
+    @return reference to the configuration page
+    """
+    from UiExtensionPlugins.Translator.ConfigurationPage.TranslatorPage \
+        import TranslatorPage
+    page = TranslatorPage(translatorPluginObject)
+    return page
+    
+
+def getConfigData():
+    """
+    Module function returning data as required by the configuration dialog.
+    
+    @return dictionary containing the relevant data
+    """
+    return {
+        "translatorPage": [
+            QCoreApplication.translate("TranslatorPlugin",
+                                       "Translator"),
+            os.path.join("UiExtensionPlugins", "Translator", "icons",
+                         "flag.png"),
+            createTranslatorPage, None, None],
+    }
+
+
+def prepareUninstall():
+    """
+    Module function to prepare for an uninstallation.
+    """
+    Preferences.Prefs.settings.remove(TranslatorPlugin.PreferencesKey)
+
+
+class TranslatorPlugin(QObject):
+    """
+    Class implementing the Translator plugin.
+    """
+    PreferencesKey = "Translator"
+    
+    updateLanguages = pyqtSignal()
+    
+    def __init__(self, ui):
+        """
+        Constructor
+        
+        @param ui reference to the user interface object (UI.UserInterface)
+        """
+        super(TranslatorPlugin, self).__init__(ui)
+        self.__ui = ui
+        self.__initialize()
+        
+        self.__defaults = {
+            "OriginalLanguage": "en",
+            "TranslationLanguage": "de",
+            "SelectedEngine": "deepl",
+            "EnabledLanguages": ["en", "de", "fr", "cs", "es", "pt",
+                                 "ru", "tr", "zh-CN", "zh-TW"],
+            # service specific settings below
+            # Google
+            "GoogleEnableDictionary": False,
+            "GoogleV2Key": "",
+            # Microsoft
+            "MsTranslatorKey": "",
+            "MsAuthToken": "",
+            "MsAuthTokenExpire": QDateTime(),
+            # MyMemory
+            "MyMemoryKey": "",
+            "MyMemoryEmail": "",
+            # Yandex
+            "YandexKey": "",
+        }
+    
+    def __initialize(self):
+        """
+        Private slot to (re)initialize the plugin.
+        """
+        self.__object = None
+    
+    def activate(self):
+        """
+        Public method to activate this plugin.
+        
+        @return tuple of None and activation status (boolean)
+        """
+        global error
+        error = ""     # clear previous error
+        
+        global translatorPluginObject
+        translatorPluginObject = self
+        
+        self.__object = Translator(self, self.__ui)
+        self.__object.activate()
+        e5App().registerPluginObject("Translator", self.__object)
+        
+        return None, True
+    
+    def deactivate(self):
+        """
+        Public method to deactivate this plugin.
+        """
+        e5App().unregisterPluginObject("Translator")
+        self.__object.deactivate()
+        
+        self.__initialize()
+    
+    def getPreferencesDefault(self, key):
+        """
+        Public method to retrieve the various default settings.
+        
+        @param key the key of the value to get
+        @return the requested setting
+        """
+        return self.__defaults[key]
+    
+    def getPreferences(self, key):
+        """
+        Public method to retrieve the various settings.
+        
+        @param key the key of the value to get
+        @return the requested setting
+        """
+        if key in ["EnabledLanguages"]:
+            return Preferences.toList(
+                Preferences.Prefs.settings.value(
+                    self.PreferencesKey + "/" + key, self.__defaults[key]))
+        elif key in ["GoogleEnableDictionary"]:
+            return Preferences.toBool(
+                Preferences.Prefs.settings.value(
+                    self.PreferencesKey + "/" + key, self.__defaults[key]))
+        elif key in ["MsAuthTokenExpire"]:
+            value = Preferences.Prefs.settings.value(
+                self.PreferencesKey + "/" + key, self.__defaults[key])
+            if isinstance(value, str):
+                if value.startswith("@QDateTime"):
+                    # old value, replace with default
+                    value = self.__defaults[key]
+                else:
+                    value = QDateTime.fromString(value, Qt.ISODate)
+            return value
+        else:
+            return Preferences.Prefs.settings.value(
+                self.PreferencesKey + "/" + key, self.__defaults[key])
+    
+    def setPreferences(self, key, value):
+        """
+        Public method to store the various settings.
+        
+        @param key the key of the setting to be set (string)
+        @param value the value to be set
+        """
+        if key in ["MsAuthTokenExpire"]:
+            Preferences.Prefs.settings.setValue(
+                self.PreferencesKey + "/" + key, value.toString(Qt.ISODate))
+        else:
+            Preferences.Prefs.settings.setValue(
+                self.PreferencesKey + "/" + key, value)
+        
+        if key in ["EnabledLanguages"]:
+            self.updateLanguages.emit()
+
+#
+# eflag: noqa = M801

eric ide

mercurial