src/eric7/PipInterface/PipPackagesWidget.py

branch
eric7
changeset 10084
125166c6b66c
parent 10069
435cc5875135
child 10093
245505200513
--- a/src/eric7/PipInterface/PipPackagesWidget.py	Sun May 28 18:04:11 2023 +0200
+++ b/src/eric7/PipInterface/PipPackagesWidget.py	Mon May 29 16:18:38 2023 +0200
@@ -177,8 +177,8 @@
 
         @param pip reference to the global pip interface
         @type Pip
-        @param parent reference to the parent widget
-        @type QWidget
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
         """
         super().__init__(parent)
         self.setupUi(self)
@@ -246,9 +246,10 @@
         venvManager.virtualEnvironmentRemoved.connect(self.on_refreshButton_clicked)
         self.__selectedEnvironment = None
 
-        project = ericApp().getObject("Project")
-        project.projectOpened.connect(self.__projectOpened)
-        project.projectClosed.connect(self.__projectClosed)
+        with contextlib.suppress(KeyError):
+            project = ericApp().getObject("Project")
+            project.projectOpened.connect(self.__projectOpened)
+            project.projectClosed.connect(self.__projectClosed)
 
         self.__initPipMenu()
         self.__populateEnvironments()
@@ -1554,7 +1555,28 @@
         """
         Private slot to open the configuration page.
         """
-        ericApp().getObject("UserInterface").showPreferences("pipPage")
+        try:
+            ericApp().getObject("UserInterface").showPreferences("pipPage")
+        except KeyError:
+            # we were called from outside the eric IDE
+            from eric7.Preferences.ConfigurationDialog import (  # noqa: I101
+                ConfigurationDialog,
+                ConfigurationMode,
+            )
+
+            dlg = ConfigurationDialog(
+                None,
+                "Configuration",
+                True,
+                fromEric=False,
+                displayMode=ConfigurationMode.PIPMANAGERMODE,
+            )
+            dlg.show()
+            dlg.showConfigurationPageByName("pipPage")
+            dlg.exec()
+            if dlg.result() == QDialog.DialogCode.Accepted:
+                dlg.setPreferences()
+                Preferences.syncPreferences()
 
     @pyqtSlot()
     def __showCacheInfo(self):

eric ide

mercurial