PluginExtensionIrc.py

changeset 11
d1af35d0bcc6
parent 9
bd9ede602f1c
--- a/PluginExtensionIrc.py	Sat May 03 16:23:18 2025 +0200
+++ b/PluginExtensionIrc.py	Wed May 07 18:04:16 2025 +0200
@@ -16,6 +16,7 @@
 from eric7 import EricUtilities, Preferences
 from eric7.EricGui import EricPixmapCache
 from eric7.EricGui.EricAction import EricAction
+from eric7.EricWidgets import EricMessageBox
 from eric7.EricWidgets.EricApplication import ericApp
 from eric7.UI.UserInterface import UserInterfaceSide
 
@@ -25,7 +26,7 @@
     "author": "Detlev Offenbach <detlev@die-offenbachs.de>",
     "autoactivate": True,
     "deactivateable": True,
-    "version": "10.0.1",
+    "version": "10.0.2",
     "className": "IrcExtensionPlugin",
     "packageName": "ExtensionIrc",
     "shortDescription": "This plug-in adds a widget to communicate via IRC messa",
@@ -87,7 +88,7 @@
 
 class IrcExtensionPlugin(QObject):
     """
-    Class documentation goes here.
+    Class implementing a plug-in providing IRC communication capability.
     """
 
     PreferencesKey = "IRC"
@@ -168,51 +169,67 @@
         error = ""  # clear previous error
         ircExtensionPluginObject = self
 
-        # Create the IRC user interface
-        logging.getLogger(__name__).debug("Creating IRC Widget...")
-        from ExtensionIrc.IrcWidget import IrcWidget  # noqa: I-101, I-102
+        if self.__ui.versionIsNewer("25.4"):
+            # Create the IRC user interface
+            logging.getLogger(__name__).debug("Creating IRC Widget...")
+            from ExtensionIrc.IrcWidget import IrcWidget  # noqa: I-101, I-102
 
-        usesDarkPalette = ericApp().usesDarkPalette()
-        self.__iconType = "dark" if usesDarkPalette else "light"
+            usesDarkPalette = ericApp().usesDarkPalette()
+            self.__iconType = "dark" if usesDarkPalette else "light"
 
-        self.__irc = IrcWidget(plugin=self)
-        iconName = "sbIrc96" if self.__ui.getLayoutType() == "Sidebars" else "irc"
-        self.__ui.addSideWidget(
-            UserInterfaceSide.Right,
-            self.__irc,
-            self.getIcon(iconName),
-            self.tr("IRC"),
-        )
+            self.__irc = IrcWidget(plugin=self)
+            iconName = "sbIrc96" if self.__ui.getLayoutType() == "Sidebars" else "irc"
+            self.__ui.addSideWidget(
+                UserInterfaceSide.Right,
+                self.__irc,
+                self.getIcon(iconName),
+                self.tr("IRC"),
+            )
 
-        self.__activateAct = EricAction(
-            self.tr("IRC"),
-            self.tr("&IRC"),
-            QKeySequence(self.tr("Ctrl+Alt+Shift+I")),
-            0,
-            self,
-            "irc_widget_activate",
-        )
-        self.__activateAct.setStatusTip(
-            self.tr("Switch the input focus to the IRC window.")
-        )
-        self.__activateAct.setWhatsThis(
-            self.tr(
-                """<b>Activate IRC</b>"""
-                """<p>This switches the input focus to the IRC window.</p>"""
+            self.__activateAct = EricAction(
+                self.tr("IRC"),
+                self.tr("&IRC"),
+                QKeySequence(self.tr("Ctrl+Alt+Shift+I")),
+                0,
+                self,
+                "irc_widget_activate",
+            )
+            self.__activateAct.setStatusTip(
+                self.tr("Switch the input focus to the IRC window.")
+            )
+            self.__activateAct.setWhatsThis(
+                self.tr(
+                    """<b>Activate IRC</b>"""
+                    """<p>This switches the input focus to the IRC window.</p>"""
+                )
             )
-        )
-        self.__activateAct.triggered.connect(self.__activateWidget)
+            self.__activateAct.triggered.connect(self.__activateWidget)
 
-        self.__ui.addEricActions([self.__activateAct], "ui")
-        menu = self.__ui.getMenu("subwindow")
-        menu.addAction(self.__activateAct)
+            self.__ui.addEricActions([self.__activateAct], "ui")
+            menu = self.__ui.getMenu("subwindow")
+            menu.addAction(self.__activateAct)
+
+            ericApp().getObject("PluginManager").shutdown.connect(self.__irc.shutdown)
+
+            self.__irc.autoConnected.connect(self.__activateWidget)
+            self.__irc.autoConnect()
 
-        ericApp().getObject("PluginManager").shutdown.connect(self.__irc.shutdown)
+            return None, True
+        else:
+            EricMessageBox.warning(
+                self.__ui,
+                self.tr("IRC Extension"),
+                self.tr(
+                    "The IRC extension cannot be activated because it requires eric7"
+                    " 25.5 or newer."
+                ),
+            )
+            error = self.tr(
+                "The IRC extension cannot be activated because it requires eric7 25.5"
+                " or newer."
+            )
 
-        self.__irc.autoConnected.connect(self.__activateWidget)
-        self.__irc.autoConnect()
-
-        return None, True
+            return None, False
 
     def deactivate(self):
         """
@@ -300,7 +317,7 @@
 
     def __activateWidget(self):
         """
-        Private slot to handle the activation of the MQTT Monitor.
+        Private slot to handle the activation of the IRC widget.
         """
         uiLayoutType = self.__ui.getLayoutType()
 

eric ide

mercurial