src/eric7/Project/ProjectFormsBrowser.py

branch
server
changeset 10635
dcec2e0c0036
parent 10439
21c28b0f9e41
child 10680
306373ccf8fd
diff -r dda7e43934dc -r dcec2e0c0036 src/eric7/Project/ProjectFormsBrowser.py
--- a/src/eric7/Project/ProjectFormsBrowser.py	Fri Mar 08 16:08:43 2024 +0100
+++ b/src/eric7/Project/ProjectFormsBrowser.py	Sun Mar 10 16:15:14 2024 +0100
@@ -22,7 +22,7 @@
 from eric7.EricWidgets.EricApplication import ericApp
 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog
 from eric7.Globals import getConfig
-from eric7.SystemUtilities import QtUtilities
+from eric7.SystemUtilities import FileSystemUtilities, QtUtilities
 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
 from eric7.UI.NotificationWidget import NotificationTypes
 
@@ -202,49 +202,57 @@
 
         self.menu = QMenu(self)
         if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
-            self.menu.addAction(self.tr("Compile form"), self.__compileForm)
-            self.menu.addAction(self.tr("Compile all forms"), self.__compileAllForms)
-            self.menu.addAction(
-                self.tr("Generate Dialog Code..."), self.__generateDialogCode
-            )
-            self.menu.addSeparator()
-            self.__pyuicConfigAct = self.menu.addAction(
-                self.tr("Configure uic Compiler"), self.__configureUicCompiler
-            )
-            self.menu.addSeparator()
-            self.menu.addAction(
-                self.tr("Open in Qt-Designer"), self.__openFile
-            ).setEnabled(QtUtilities.hasQtDesigner())
-            self.menu.addAction(self.tr("Open in Editor"), self.__openFileInEditor)
-            self.menu.addSeparator()
-            self.menu.addAction(self.tr("Preview form"), self.__UIPreview)
-            self.menu.addAction(self.tr("Preview translations"), self.__TRPreview)
-        else:
-            if self.hooks["compileForm"] is not None:
+            if FileSystemUtilities.isRemoteFileName(self.project.getProjectPath()):
+                self.menu.addAction(self.tr("Open in Editor"), self.__openFileInEditor)
+            else:
+                self.menu.addAction(self.tr("Compile form"), self.__compileForm)
+                self.menu.addAction(
+                    self.tr("Compile all forms"), self.__compileAllForms
+                )
+                self.menu.addAction(
+                    self.tr("Generate Dialog Code..."), self.__generateDialogCode
+                )
+                self.menu.addSeparator()
+                self.__pyuicConfigAct = self.menu.addAction(
+                    self.tr("Configure uic Compiler"), self.__configureUicCompiler
+                )
+                self.menu.addSeparator()
                 self.menu.addAction(
-                    self.hooksMenuEntries.get("compileForm", self.tr("Compile form")),
-                    self.__compileForm,
-                )
-            if self.hooks["compileAllForms"] is not None:
-                self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "compileAllForms", self.tr("Compile all forms")
-                    ),
-                    self.__compileAllForms,
-                )
-            if self.hooks["generateDialogCode"] is not None:
-                self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateDialogCode", self.tr("Generate Dialog Code...")
-                    ),
-                    self.__generateDialogCode,
-                )
-            if (
-                self.hooks["compileForm"] is not None
-                or self.hooks["compileAllForms"] is not None
-                or self.hooks["generateDialogCode"] is not None
-            ):
+                    self.tr("Open in Qt-Designer"), self.__openFile
+                ).setEnabled(QtUtilities.hasQtDesigner())
+                self.menu.addAction(self.tr("Open in Editor"), self.__openFileInEditor)
                 self.menu.addSeparator()
+                self.menu.addAction(self.tr("Preview form"), self.__UIPreview)
+                self.menu.addAction(self.tr("Preview translations"), self.__TRPreview)
+        else:
+            if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+                if self.hooks["compileForm"] is not None:
+                    self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "compileForm", self.tr("Compile form")
+                        ),
+                        self.__compileForm,
+                    )
+                if self.hooks["compileAllForms"] is not None:
+                    self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "compileAllForms", self.tr("Compile all forms")
+                        ),
+                        self.__compileAllForms,
+                    )
+                if self.hooks["generateDialogCode"] is not None:
+                    self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateDialogCode", self.tr("Generate Dialog Code...")
+                        ),
+                        self.__generateDialogCode,
+                    )
+                if (
+                    self.hooks["compileForm"] is not None
+                    or self.hooks["compileAllForms"] is not None
+                    or self.hooks["generateDialogCode"] is not None
+                ):
+                    self.menu.addSeparator()
             if self.hooks["open"] is not None:
                 self.menu.addAction(
                     self.hooksMenuEntries.get("open", self.tr("Open")), self.__openFile
@@ -258,18 +266,22 @@
         act = self.menu.addAction(self.tr("Delete"), self.__deleteFile)
         self.menuActions.append(act)
         self.menu.addSeparator()
-        if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
-            self.menu.addAction(self.tr("New form..."), self.__newForm)
-        else:
-            if self.hooks["newForm"] is not None:
-                self.menu.addAction(
-                    self.hooksMenuEntries.get("newForm", self.tr("New form...")),
-                    self.__newForm,
-                )
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
+                self.menu.addAction(self.tr("New form..."), self.__newForm)
+            else:
+                if self.hooks["newForm"] is not None:
+                    self.menu.addAction(
+                        self.hooksMenuEntries.get("newForm", self.tr("New form...")),
+                        self.__newForm,
+                    )
         self.menu.addAction(self.tr("Add forms..."), self.__addFormFiles)
         self.menu.addAction(self.tr("Add forms directory..."), self.__addFormsDirectory)
         self.menu.addSeparator()
-        self.menu.addAction(self.tr("Show in File Manager"), self._showInFileManager)
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            self.menu.addAction(
+                self.tr("Show in File Manager"), self._showInFileManager
+            )
         self.menu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard)
         self.menu.addSeparator()
         self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
@@ -278,37 +290,38 @@
         self.menu.addAction(self.tr("Configure..."), self._configure)
 
         self.backMenu = QMenu(self)
-        if (
-            projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]
-            or self.hooks["compileAllForms"] is not None
-        ):
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            if (
+                projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]
+                or self.hooks["compileAllForms"] is not None
+            ):
+                self.backMenu.addAction(
+                    self.tr("Compile all forms"), self.__compileAllForms
+                )
+                self.backMenu.addSeparator()
+                self.__pyuicBackConfigAct = self.backMenu.addAction(
+                    self.tr("Configure uic Compiler"), self.__configureUicCompiler
+                )
+                self.backMenu.addSeparator()
+                self.backMenu.addAction(self.tr("New form..."), self.__newForm)
+            else:
+                if self.hooks["newForm"] is not None:
+                    self.backMenu.addAction(
+                        self.hooksMenuEntries.get("newForm", self.tr("New form...")),
+                        self.__newForm,
+                    )
             self.backMenu.addAction(
-                self.tr("Compile all forms"), self.__compileAllForms
+                self.tr("Add forms..."), lambda: self.project.addFiles("FORMS")
             )
-            self.backMenu.addSeparator()
-            self.__pyuicBackConfigAct = self.backMenu.addAction(
-                self.tr("Configure uic Compiler"), self.__configureUicCompiler
+            self.backMenu.addAction(
+                self.tr("Add forms directory..."),
+                lambda: self.project.addDirectory("FORMS"),
             )
             self.backMenu.addSeparator()
-            self.backMenu.addAction(self.tr("New form..."), self.__newForm)
-        else:
-            if self.hooks["newForm"] is not None:
-                self.backMenu.addAction(
-                    self.hooksMenuEntries.get("newForm", self.tr("New form...")),
-                    self.__newForm,
-                )
-        self.backMenu.addAction(
-            self.tr("Add forms..."), lambda: self.project.addFiles("FORMS")
-        )
-        self.backMenu.addAction(
-            self.tr("Add forms directory..."),
-            lambda: self.project.addDirectory("FORMS"),
-        )
-        self.backMenu.addSeparator()
-        self.backMenu.addAction(
-            self.tr("Show in File Manager"), self._showProjectInFileManager
-        )
-        self.backMenu.addSeparator()
+            self.backMenu.addAction(
+                self.tr("Show in File Manager"), self._showProjectInFileManager
+            )
+            self.backMenu.addSeparator()
         self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
         self.backMenu.addAction(
             self.tr("Collapse all directories"), self._collapseAllDirs
@@ -320,29 +333,39 @@
         # create the menu for multiple selected files
         self.multiMenu = QMenu(self)
         if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
-            self.multiMenu.addAction(
-                self.tr("Compile forms"), self.__compileSelectedForms
-            )
-            self.multiMenu.addSeparator()
-            self.__pyuicMultiConfigAct = self.multiMenu.addAction(
-                self.tr("Configure uic Compiler"), self.__configureUicCompiler
-            )
-            self.multiMenu.addSeparator()
-            self.multiMenu.addAction(
-                self.tr("Open in Qt-Designer"), self.__openFile
-            ).setEnabled(QtUtilities.hasQtDesigner())
-            self.multiMenu.addAction(self.tr("Open in Editor"), self.__openFileInEditor)
-            self.multiMenu.addSeparator()
-            self.multiMenu.addAction(self.tr("Preview translations"), self.__TRPreview)
-        else:
-            if self.hooks["compileSelectedForms"] is not None:
-                act = self.multiMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "compileSelectedForms", self.tr("Compile forms")
-                    ),
-                    self.__compileSelectedForms,
+            if FileSystemUtilities.isRemoteFileName(self.project.getProjectPath()):
+                self.multiMenu.addAction(
+                    self.tr("Open in Editor"), self.__openFileInEditor
+                )
+            else:
+                self.multiMenu.addAction(
+                    self.tr("Compile forms"), self.__compileSelectedForms
+                )
+                self.multiMenu.addSeparator()
+                self.__pyuicMultiConfigAct = self.multiMenu.addAction(
+                    self.tr("Configure uic Compiler"), self.__configureUicCompiler
                 )
                 self.multiMenu.addSeparator()
+                self.multiMenu.addAction(
+                    self.tr("Open in Qt-Designer"), self.__openFile
+                ).setEnabled(QtUtilities.hasQtDesigner())
+                self.multiMenu.addAction(
+                    self.tr("Open in Editor"), self.__openFileInEditor
+                )
+                self.multiMenu.addSeparator()
+                self.multiMenu.addAction(
+                    self.tr("Preview translations"), self.__TRPreview
+                )
+        else:
+            if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+                if self.hooks["compileSelectedForms"] is not None:
+                    act = self.multiMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "compileSelectedForms", self.tr("Compile forms")
+                        ),
+                        self.__compileSelectedForms,
+                    )
+                    self.multiMenu.addSeparator()
             if self.hooks["open"] is not None:
                 self.multiMenu.addAction(
                     self.hooksMenuEntries.get("open", self.tr("Open")), self.__openFile
@@ -362,41 +385,47 @@
         self.multiMenu.addAction(self.tr("Configure..."), self._configure)
 
         self.dirMenu = QMenu(self)
-        if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
-            self.dirMenu.addAction(self.tr("Compile all forms"), self.__compileAllForms)
-            self.dirMenu.addSeparator()
-            self.__pyuicDirConfigAct = self.dirMenu.addAction(
-                self.tr("Configure uic Compiler"), self.__configureUicCompiler
-            )
-            self.dirMenu.addSeparator()
-        else:
-            if self.hooks["compileAllForms"] is not None:
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
                 self.dirMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "compileAllForms", self.tr("Compile all forms")
-                    ),
-                    self.__compileAllForms,
+                    self.tr("Compile all forms"), self.__compileAllForms
+                )
+                self.dirMenu.addSeparator()
+                self.__pyuicDirConfigAct = self.dirMenu.addAction(
+                    self.tr("Configure uic Compiler"), self.__configureUicCompiler
                 )
                 self.dirMenu.addSeparator()
+            else:
+                if self.hooks["compileAllForms"] is not None:
+                    self.dirMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "compileAllForms", self.tr("Compile all forms")
+                        ),
+                        self.__compileAllForms,
+                    )
+                    self.dirMenu.addSeparator()
         act = self.dirMenu.addAction(self.tr("Remove from project"), self._removeDir)
         self.dirMenuActions.append(act)
         act = self.dirMenu.addAction(self.tr("Delete"), self._deleteDirectory)
         self.dirMenuActions.append(act)
         self.dirMenu.addSeparator()
-        if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
-            self.dirMenu.addAction(self.tr("New form..."), self.__newForm)
-        else:
-            if self.hooks["newForm"] is not None:
-                self.dirMenu.addAction(
-                    self.hooksMenuEntries.get("newForm", self.tr("New form...")),
-                    self.__newForm,
-                )
-        self.dirMenu.addAction(self.tr("Add forms..."), self.__addFormFiles)
-        self.dirMenu.addAction(
-            self.tr("Add forms directory..."), self.__addFormsDirectory
-        )
-        self.dirMenu.addSeparator()
-        self.dirMenu.addAction(self.tr("Show in File Manager"), self._showInFileManager)
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
+                self.dirMenu.addAction(self.tr("New form..."), self.__newForm)
+            else:
+                if self.hooks["newForm"] is not None:
+                    self.dirMenu.addAction(
+                        self.hooksMenuEntries.get("newForm", self.tr("New form...")),
+                        self.__newForm,
+                    )
+            self.dirMenu.addAction(self.tr("Add forms..."), self.__addFormFiles)
+            self.dirMenu.addAction(
+                self.tr("Add forms directory..."), self.__addFormsDirectory
+            )
+            self.dirMenu.addSeparator()
+            self.dirMenu.addAction(
+                self.tr("Show in File Manager"), self._showInFileManager
+            )
         self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard)
         self.dirMenu.addSeparator()
         self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
@@ -407,32 +436,33 @@
         self.dirMenu.addAction(self.tr("Configure..."), self._configure)
 
         self.dirMultiMenu = QMenu(self)
-        if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            if projectType in ["PyQt5", "PyQt6", "E7Plugin", "PySide2", "PySide6"]:
+                self.dirMultiMenu.addAction(
+                    self.tr("Compile all forms"), self.__compileAllForms
+                )
+                self.dirMultiMenu.addSeparator()
+                self.__pyuicDirMultiConfigAct = self.dirMultiMenu.addAction(
+                    self.tr("Configure uic Compiler"), self.__configureUicCompiler
+                )
+                self.dirMultiMenu.addSeparator()
+            else:
+                if self.hooks["compileAllForms"] is not None:
+                    self.dirMultiMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "compileAllForms", self.tr("Compile all forms")
+                        ),
+                        self.__compileAllForms,
+                    )
+                    self.dirMultiMenu.addSeparator()
             self.dirMultiMenu.addAction(
-                self.tr("Compile all forms"), self.__compileAllForms
+                self.tr("Add forms..."), lambda: self.project.addFiles("FORMS")
             )
-            self.dirMultiMenu.addSeparator()
-            self.__pyuicDirMultiConfigAct = self.dirMultiMenu.addAction(
-                self.tr("Configure uic Compiler"), self.__configureUicCompiler
+            self.dirMultiMenu.addAction(
+                self.tr("Add forms directory..."),
+                lambda: self.project.addDirectory("FORMS"),
             )
             self.dirMultiMenu.addSeparator()
-        else:
-            if self.hooks["compileAllForms"] is not None:
-                self.dirMultiMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "compileAllForms", self.tr("Compile all forms")
-                    ),
-                    self.__compileAllForms,
-                )
-                self.dirMultiMenu.addSeparator()
-        self.dirMultiMenu.addAction(
-            self.tr("Add forms..."), lambda: self.project.addFiles("FORMS")
-        )
-        self.dirMultiMenu.addAction(
-            self.tr("Add forms directory..."),
-            lambda: self.project.addDirectory("FORMS"),
-        )
-        self.dirMultiMenu.addSeparator()
         self.dirMultiMenu.addAction(
             self.tr("Expand all directories"), self._expandAllDirs
         )
@@ -459,12 +489,13 @@
         if not self.project.isOpen():
             return
 
-        enable = self.project.getProjectType() in ("PyQt5", "PyQt6", "E7Plugin")
-        self.__pyuicConfigAct.setEnabled(enable)
-        self.__pyuicMultiConfigAct.setEnabled(enable)
-        self.__pyuicDirConfigAct.setEnabled(enable)
-        self.__pyuicDirMultiConfigAct.setEnabled(enable)
-        self.__pyuicBackConfigAct.setEnabled(enable)
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            enable = self.project.getProjectType() in ("PyQt5", "PyQt6", "E7Plugin")
+            self.__pyuicConfigAct.setEnabled(enable)
+            self.__pyuicMultiConfigAct.setEnabled(enable)
+            self.__pyuicDirConfigAct.setEnabled(enable)
+            self.__pyuicDirMultiConfigAct.setEnabled(enable)
+            self.__pyuicBackConfigAct.setEnabled(enable)
 
         with contextlib.suppress(Exception):  # secok
             categories = self.getSelectedItemsCountCategorized(
@@ -579,7 +610,10 @@
         itmList = self.getSelectedItems()
         for itm in itmList:
             if isinstance(itm, ProjectBrowserFileItem):
-                if itm.isDesignerFile():
+                if (
+                    itm.isDesignerFile()
+                    and FileSystemUtilities.isPlainFileName(itm.fileName())
+                ):
                     self.designerFile.emit(itm.fileName())
                 else:
                     self.sourceFile.emit(itm.fileName())

eric ide

mercurial