PluginExtensionCorba.py

changeset 1
d4384e4d7aff
parent 0
02171512ef2f
child 2
68c017d640b0
--- a/PluginExtensionCorba.py	Wed Nov 30 09:45:16 2022 +0100
+++ b/PluginExtensionCorba.py	Wed Nov 30 17:56:36 2022 +0100
@@ -0,0 +1,229 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module documentation goes here.
+"""
+
+import os
+
+from PyQt6.QtCore import QCoreApplication, QObject, QTranslator
+
+from eric7 import Globals, Preferences
+from eric7.EricWidgets import EricMessageBox
+from eric7.EricWidgets.EricApplication import ericApp
+from ExtensionCorba.ProjectInterfacesBrowser import ProjectInterfacesBrowser
+
+# Start-Of-Header
+name = "Corba Extension Plugin"
+author = "Detlev Offenbach <detlev@die-offenbachs.de>"
+autoactivate = True
+deactivateable = True
+version = "10.0.0"
+className = "CorbaExtensionPlugin"
+packageName = "ExtensionCorba"
+shortDescription = "Support for the development of CORBA projects"
+longDescription = (
+    "This plugin adds support for the development of CORBA related projects."
+)
+needsRestart = False
+pyqtApi = 2
+# End-Of-Header
+
+error = ""
+
+corbaExtensionPluginObject = None
+
+
+def exeDisplayData():
+    """
+    Module function to support the display of some executable info.
+
+    @return dictionary containing the data to query the presence of
+        the executable
+    @rtype dict
+    """
+    global corbaExtensionPluginObject
+
+    exe = corbaExtensionPluginObject.getPreferences("omniidl")
+    if not exe:
+        exe = "omniidl"
+        if Globals.isWindowsPlatform():
+            exe += ".exe"
+
+    data = {
+        "programEntry": True,
+        "header": "CORBA IDL compiler",
+        "exe": exe,
+        "versionCommand": "-V",
+        "versionStartsWith": "omniidl",
+        "versionRe": "",
+        "versionPosition": -1,
+        "version": "",
+        "versionCleanup": None,
+        "exeModule": None,
+    }
+
+    return data
+
+
+def getConfigData():
+    """
+    Module function returning data as required by the configuration dialog.
+
+    @return dictionary containing the relevant data
+    @rtype dict
+    """
+    iconSuffix = "dark" if ericApp().usesDarkPalette() else "light"
+
+    return {
+        "corbaPage": [
+            QCoreApplication.translate("CorbaExtensionPlugin", "CORBA"),
+            os.path.join(
+                "ExtensionCorba", "icons", "preferences-orbit-{0}".format(iconSuffix)
+            ),
+            createCorbaPage,
+            None,
+            None,
+        ],
+    }
+
+
+def createCorbaPage(configDlg):
+    """
+    Module function to create the CORBA configuration page.
+
+    @param configDlg reference to the configuration dialog
+    @type ConfigurationWidget
+    @return reference to the configuration page
+    @rtype CorbaPage
+    """
+    global corbaExtensionPluginObject
+
+    from ExtensionCorba.ConfigurationPage.CorbaPage import CorbaPage
+
+    page = CorbaPage(corbaExtensionPluginObject)
+    return page
+
+
+def prepareUninstall():
+    """
+    Module function to prepare for an un-installation.
+    """
+    Preferences.getSettings().remove(CorbaExtensionPlugin.PreferencesKey)
+
+
+class CorbaExtensionPlugin(QObject):
+    """
+    Class documentation goes here.
+    """
+
+    PreferencesKey = "Corba"
+
+    def __init__(self, ui):
+        """
+        Constructor
+
+        @param ui reference to the user interface object
+        @type UI.UserInterface
+        """
+        super(CorbaExtensionPlugin, self).__init__(ui)
+        self.__ui = ui
+        self.__initialize()
+
+        self.__defaults = {
+            "omniidl": "",
+        }
+
+    def __initialize(self):
+        """
+        Private slot to (re)initialize the plugin.
+        """
+        self.__browser = None
+
+    def activate(self):
+        """
+        Public method to activate this plug-in.
+
+        @return tuple of None and activation status
+        @rtype bool
+        """
+        global error, corbaExtensionPluginObject
+        error = ""  # clear previous error
+
+        if self.__ui.versionIsNewer("22.12"):
+            corbaExtensionPluginObject = self
+
+            self.__browser = ProjectInterfacesBrowser(self)
+
+            return None, True
+        else:
+            EricMessageBox.warning(
+                self.__ui,
+                self.tr("CORBA Extension"),
+                self.tr(
+                    "The CORBA extension cannot be activated because it requires eric7"
+                    " 23.1 or newer."
+                ),
+            )
+            error = self.tr(
+                "The CORBA extension cannot be activated because it requires eric7"
+                " 23.1 or newer."
+            )
+
+            return None, False
+
+    def deactivate(self):
+        """
+        Public method to deactivate this plug-in.
+        """
+        self.__initialize()
+
+    def __loadTranslator(self):
+        """
+        Private method to load the translation file.
+        """
+        if self.__ui is not None:
+            loc = self.__ui.getLocale()
+            if loc and loc != "C":
+                locale_dir = os.path.join(
+                    os.path.dirname(__file__), "ExtensionCorba", "i18n"
+                )
+                translation = "corba_{0}".format(loc)
+                translator = QTranslator(None)
+                loaded = translator.load(translation, locale_dir)
+                if loaded:
+                    self.__translator = translator
+                    ericApp().installTranslator(self.__translator)
+                else:
+                    print(
+                        "Warning: translation file '{0}' could not be"
+                        " loaded.".format(translation)
+                    )
+                    print("Using default.")
+
+    def getPreferences(self, key):
+        """
+        Public method to retrieve the various settings values.
+
+        @param key the key of the value to get
+        @type str
+        @return the requested setting value
+        @rtype any
+        """
+        return Preferences.Prefs.settings.value(
+            self.PreferencesKey + "/" + key, self.__defaults[key]
+        )
+
+    def setPreferences(self, key, value):
+        """
+        Public method to store the various settings values.
+
+        @param key the key of the setting to be set
+        @type str
+        @param value the value to be set
+        @type any
+        """
+        Preferences.Prefs.settings.setValue(self.PreferencesKey + "/" + key, value)

eric ide

mercurial