src/eric7/Project/ProjectTranslationsBrowser.py

branch
server
changeset 10635
dcec2e0c0036
parent 10439
21c28b0f9e41
child 10704
27d21e5163b8
--- a/src/eric7/Project/ProjectTranslationsBrowser.py	Fri Mar 08 16:08:43 2024 +0100
+++ b/src/eric7/Project/ProjectTranslationsBrowser.py	Sun Mar 10 16:15:14 2024 +0100
@@ -23,7 +23,7 @@
 from eric7.EricGui.EricOverrideCursor import EricOverridenCursor
 from eric7.EricWidgets import EricMessageBox
 from eric7.EricWidgets.EricApplication import ericApp
-from eric7.SystemUtilities import OSUtilities, QtUtilities
+from eric7.SystemUtilities import FileSystemUtilities, OSUtilities, QtUtilities
 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
 from eric7.UI.NotificationWidget import NotificationTypes
 
@@ -177,127 +177,144 @@
             "PySide6",
             "PySide6C",
         ]:
-            act = self.menu.addAction(
-                self.tr("Generate translation"), self.__generateSelected
-            )
-            self.tsMenuActions.append(act)
-            self.tsprocMenuActions.append(act)
-            act = self.menu.addAction(
-                self.tr("Generate translation (with obsolete)"),
-                self.__generateObsoleteSelected,
-            )
-            self.tsMenuActions.append(act)
-            self.tsprocMenuActions.append(act)
-            act = self.menu.addAction(
-                self.tr("Generate all translations"), self.__generateAll
-            )
-            self.tsprocMenuActions.append(act)
-            act = self.menu.addAction(
-                self.tr("Generate all translations (with obsolete)"),
-                self.__generateObsoleteAll,
-            )
-            self.tsprocMenuActions.append(act)
-            self.menu.addSeparator()
-            self.__qtLinguistAct = self.menu.addAction(
-                self.tr("Open in Qt-Linguist"), self._openItem
-            )
-            self.tsMenuActions.append(self.__qtLinguistAct)
-            act = self.menu.addAction(
-                self.tr("Open in Editor"), self.__openFileInEditor
-            )
-            self.tsMenuActions.append(act)
-            self.menu.addSeparator()
-            act = self.menu.addAction(
-                self.tr("Release translation"), self.__releaseSelected
-            )
-            self.tsMenuActions.append(act)
-            self.qmprocMenuActions.append(act)
-            act = self.menu.addAction(
-                self.tr("Release all translations"), self.__releaseAll
-            )
-            self.qmprocMenuActions.append(act)
-            self.menu.addSeparator()
-            act = self.menu.addAction(self.tr("Preview translation"), self.__TRPreview)
-            self.qmMenuActions.append(act)
-            act = self.menu.addAction(
-                self.tr("Preview all translations"), self.__TRPreviewAll
-            )
-            self.menu.addSeparator()
-        else:
-            if self.hooks["extractMessages"] is not None:
+            if FileSystemUtilities.isRemoteFileName(self.project.getProjectPath()):
                 act = self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "extractMessages", self.tr("Extract messages")
-                    ),
-                    self.__extractMessages,
+                    self.tr("Open in Editor"), self.__openFileInEditor
                 )
-                self.menuActions.append(act)
+                self.tsMenuActions.append(act)
                 self.menu.addSeparator()
-            if self.hooks["generateSelected"] is not None:
+            else:
                 act = self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateSelected", self.tr("Generate translation")
-                    ),
-                    self.__generateSelected,
+                    self.tr("Generate translation"), self.__generateSelected
                 )
                 self.tsMenuActions.append(act)
                 self.tsprocMenuActions.append(act)
-            if self.hooks["generateSelectedWithObsolete"] is not None:
                 act = self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateSelectedWithObsolete",
-                        self.tr("Generate translation (with obsolete)"),
-                    ),
+                    self.tr("Generate translation (with obsolete)"),
                     self.__generateObsoleteSelected,
                 )
                 self.tsMenuActions.append(act)
                 self.tsprocMenuActions.append(act)
-            if self.hooks["generateAll"] is not None:
                 act = self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateAll", self.tr("Generate all translations")
-                    ),
-                    self.__generateAll,
+                    self.tr("Generate all translations"), self.__generateAll
                 )
                 self.tsprocMenuActions.append(act)
-            if self.hooks["generateAllWithObsolete"] is not None:
                 act = self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateAllWithObsolete",
-                        self.tr("Generate all translations (with obsolete)"),
-                    ),
+                    self.tr("Generate all translations (with obsolete)"),
                     self.__generateObsoleteAll,
                 )
                 self.tsprocMenuActions.append(act)
-            self.menu.addSeparator()
-            if self.hooks["open"] is not None:
+                self.menu.addSeparator()
+                self.__qtLinguistAct = self.menu.addAction(
+                    self.tr("Open in Qt-Linguist"), self._openItem
+                )
+                self.tsMenuActions.append(self.__qtLinguistAct)
                 act = self.menu.addAction(
-                    self.hooksMenuEntries.get("open", self.tr("Open")), self._openItem
+                    self.tr("Open in Editor"), self.__openFileInEditor
                 )
                 self.tsMenuActions.append(act)
-            act = self.menu.addAction(
-                self.tr("Open in Editor"), self.__openFileInEditor
-            )
-            self.tsMenuActions.append(act)
-            self.menu.addSeparator()
-            if self.hooks["releaseSelected"] is not None:
+                self.menu.addSeparator()
                 act = self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "releaseSelected", self.tr("Release translation")
-                    ),
-                    self.__releaseSelected,
+                    self.tr("Release translation"), self.__releaseSelected
                 )
                 self.tsMenuActions.append(act)
                 self.qmprocMenuActions.append(act)
-            if self.hooks["releaseAll"] is not None:
                 act = self.menu.addAction(
-                    self.hooksMenuEntries.get(
-                        "releaseAll", self.tr("Release all translations")
-                    ),
-                    self.__releaseAll,
+                    self.tr("Release all translations"), self.__releaseAll
                 )
                 self.qmprocMenuActions.append(act)
-            self.menu.addSeparator()
+                self.menu.addSeparator()
+                act = self.menu.addAction(
+                    self.tr("Preview translation"), self.__TRPreview
+                )
+                self.qmMenuActions.append(act)
+                act = self.menu.addAction(
+                    self.tr("Preview all translations"), self.__TRPreviewAll
+                )
+                self.menu.addSeparator()
+        else:
+            if FileSystemUtilities.isRemoteFileName(self.project.getProjectPath()):
+                act = self.menu.addAction(
+                    self.tr("Open in Editor"), self.__openFileInEditor
+                )
+                self.tsMenuActions.append(act)
+                self.menu.addSeparator()
+            else:
+                if self.hooks["extractMessages"] is not None:
+                    act = self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "extractMessages", self.tr("Extract messages")
+                        ),
+                        self.__extractMessages,
+                    )
+                    self.menuActions.append(act)
+                    self.menu.addSeparator()
+                if self.hooks["generateSelected"] is not None:
+                    act = self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateSelected", self.tr("Generate translation")
+                        ),
+                        self.__generateSelected,
+                    )
+                    self.tsMenuActions.append(act)
+                    self.tsprocMenuActions.append(act)
+                if self.hooks["generateSelectedWithObsolete"] is not None:
+                    act = self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateSelectedWithObsolete",
+                            self.tr("Generate translation (with obsolete)"),
+                        ),
+                        self.__generateObsoleteSelected,
+                    )
+                    self.tsMenuActions.append(act)
+                    self.tsprocMenuActions.append(act)
+                if self.hooks["generateAll"] is not None:
+                    act = self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateAll", self.tr("Generate all translations")
+                        ),
+                        self.__generateAll,
+                    )
+                    self.tsprocMenuActions.append(act)
+                if self.hooks["generateAllWithObsolete"] is not None:
+                    act = self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateAllWithObsolete",
+                            self.tr("Generate all translations (with obsolete)"),
+                        ),
+                        self.__generateObsoleteAll,
+                    )
+                    self.tsprocMenuActions.append(act)
+                self.menu.addSeparator()
+                if self.hooks["open"] is not None:
+                    act = self.menu.addAction(
+                        self.hooksMenuEntries.get("open", self.tr("Open")),
+                        self._openItem,
+                    )
+                    self.tsMenuActions.append(act)
+                act = self.menu.addAction(
+                    self.tr("Open in Editor"), self.__openFileInEditor
+                )
+                self.tsMenuActions.append(act)
+                self.menu.addSeparator()
+                if self.hooks["releaseSelected"] is not None:
+                    act = self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "releaseSelected", self.tr("Release translation")
+                        ),
+                        self.__releaseSelected,
+                    )
+                    self.tsMenuActions.append(act)
+                    self.qmprocMenuActions.append(act)
+                if self.hooks["releaseAll"] is not None:
+                    act = self.menu.addAction(
+                        self.hooksMenuEntries.get(
+                            "releaseAll", self.tr("Release all translations")
+                        ),
+                        self.__releaseAll,
+                    )
+                    self.qmprocMenuActions.append(act)
+                self.menu.addSeparator()
         act = self.menu.addAction(
             self.tr("Remove from project"), self.__removeLanguageFile
         )
@@ -312,75 +329,79 @@
             self.tr("Add translation files..."), self.__addTranslationFiles
         )
         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("Configure..."), self._configure)
 
         self.backMenu = QMenu(self)
-        if self.project.getProjectType() in [
-            "PyQt5",
-            "PyQt5C",
-            "PyQt6",
-            "PyQt6C",
-            "E7Plugin",
-            "PySide2",
-            "PySide2C",
-            "PySide6",
-            "PySide6C",
-        ]:
-            act = self.backMenu.addAction(
-                self.tr("Generate all translations"), self.__generateAll
-            )
-            self.tsprocBackMenuActions.append(act)
-            act = self.backMenu.addAction(
-                self.tr("Generate all translations (with obsolete)"),
-                self.__generateObsoleteAll,
-            )
-            self.tsprocBackMenuActions.append(act)
-            act = self.backMenu.addAction(
-                self.tr("Release all translations"), self.__releaseAll
-            )
-            self.qmprocBackMenuActions.append(act)
-            self.backMenu.addSeparator()
-            act = self.backMenu.addAction(
-                self.tr("Preview all translations"), self.__TRPreview
-            )
-        else:
-            if self.hooks["extractMessages"] is not None:
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            if self.project.getProjectType() in [
+                "PyQt5",
+                "PyQt5C",
+                "PyQt6",
+                "PyQt6C",
+                "E7Plugin",
+                "PySide2",
+                "PySide2C",
+                "PySide6",
+                "PySide6C",
+            ]:
                 act = self.backMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "extractMessages", self.tr("Extract messages")
-                    ),
-                    self.__extractMessages,
-                )
-                self.backMenu.addSeparator()
-            if self.hooks["generateAll"] is not None:
-                act = self.backMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateAll", self.tr("Generate all translations")
-                    ),
-                    self.__generateAll,
+                    self.tr("Generate all translations"), self.__generateAll
                 )
                 self.tsprocBackMenuActions.append(act)
-            if self.hooks["generateAllWithObsolete"] is not None:
                 act = self.backMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateAllWithObsolete",
-                        self.tr("Generate all translations (with obsolete)"),
-                    ),
+                    self.tr("Generate all translations (with obsolete)"),
                     self.__generateObsoleteAll,
                 )
                 self.tsprocBackMenuActions.append(act)
-            if self.hooks["releaseAll"] is not None:
                 act = self.backMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "releaseAll", self.tr("Release all translations")
-                    ),
-                    self.__releaseAll,
+                    self.tr("Release all translations"), self.__releaseAll
                 )
                 self.qmprocBackMenuActions.append(act)
-        self.backMenu.addSeparator()
+                self.backMenu.addSeparator()
+                act = self.backMenu.addAction(
+                    self.tr("Preview all translations"), self.__TRPreview
+                )
+            else:
+                if self.hooks["extractMessages"] is not None:
+                    act = self.backMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "extractMessages", self.tr("Extract messages")
+                        ),
+                        self.__extractMessages,
+                    )
+                    self.backMenu.addSeparator()
+                if self.hooks["generateAll"] is not None:
+                    act = self.backMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateAll", self.tr("Generate all translations")
+                        ),
+                        self.__generateAll,
+                    )
+                    self.tsprocBackMenuActions.append(act)
+                if self.hooks["generateAllWithObsolete"] is not None:
+                    act = self.backMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateAllWithObsolete",
+                            self.tr("Generate all translations (with obsolete)"),
+                        ),
+                        self.__generateObsoleteAll,
+                    )
+                    self.tsprocBackMenuActions.append(act)
+                if self.hooks["releaseAll"] is not None:
+                    act = self.backMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "releaseAll", self.tr("Release all translations")
+                        ),
+                        self.__releaseAll,
+                    )
+                    self.qmprocBackMenuActions.append(act)
+            self.backMenu.addSeparator()
         self.__addTranslationBackAct = self.backMenu.addAction(
             self.tr("New translation..."), self.project.addLanguage
         )
@@ -408,86 +429,101 @@
             "PySide6",
             "PySide6C",
         ]:
-            act = self.multiMenu.addAction(
-                self.tr("Generate translations"), self.__generateSelected
-            )
-            self.tsMultiMenuActions.append(act)
-            self.tsprocMultiMenuActions.append(act)
-            act = self.multiMenu.addAction(
-                self.tr("Generate translations (with obsolete)"),
-                self.__generateObsoleteSelected,
-            )
-            self.tsMultiMenuActions.append(act)
-            self.tsprocMultiMenuActions.append(act)
-            self.multiMenu.addSeparator()
-            self.__qtLinguistMultiAct = self.multiMenu.addAction(
-                self.tr("Open in Qt-Linguist"), self._openItem
-            )
-            self.tsMultiMenuActions.append(self.__qtLinguistMultiAct)
-            act = self.multiMenu.addAction(
-                self.tr("Open in Editor"), self.__openFileInEditor
-            )
-            self.tsMultiMenuActions.append(act)
-            self.multiMenu.addSeparator()
-            act = self.multiMenu.addAction(
-                self.tr("Release translations"), self.__releaseSelected
-            )
-            self.tsMultiMenuActions.append(act)
-            self.qmprocMultiMenuActions.append(act)
-            self.multiMenu.addSeparator()
-            act = self.multiMenu.addAction(
-                self.tr("Preview translations"), self.__TRPreview
-            )
-            self.qmMultiMenuActions.append(act)
-        else:
-            if self.hooks["extractMessages"] is not None:
+            if FileSystemUtilities.isRemoteFileName(self.project.getProjectPath()):
                 act = self.multiMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "extractMessages", self.tr("Extract messages")
-                    ),
-                    self.__extractMessages,
+                    self.tr("Open in Editor"), self.__openFileInEditor
                 )
-                self.multiMenuActions.append(act)
+                self.tsMultiMenuActions.append(act)
                 self.multiMenu.addSeparator()
-            if self.hooks["generateSelected"] is not None:
+            else:
                 act = self.multiMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateSelected", self.tr("Generate translations")
-                    ),
-                    self.__generateSelected,
+                    self.tr("Generate translations"), self.__generateSelected
                 )
                 self.tsMultiMenuActions.append(act)
                 self.tsprocMultiMenuActions.append(act)
-            if self.hooks["generateSelectedWithObsolete"] is not None:
                 act = self.multiMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateSelectedWithObsolete",
-                        self.tr("Generate translations (with obsolete)"),
-                    ),
+                    self.tr("Generate translations (with obsolete)"),
                     self.__generateObsoleteSelected,
                 )
                 self.tsMultiMenuActions.append(act)
                 self.tsprocMultiMenuActions.append(act)
-            self.multiMenu.addSeparator()
-            if self.hooks["open"] is not None:
+                self.multiMenu.addSeparator()
+                self.__qtLinguistMultiAct = self.multiMenu.addAction(
+                    self.tr("Open in Qt-Linguist"), self._openItem
+                )
+                self.tsMultiMenuActions.append(self.__qtLinguistMultiAct)
                 act = self.multiMenu.addAction(
-                    self.hooksMenuEntries.get("open", self.tr("Open")), self._openItem
+                    self.tr("Open in Editor"), self.__openFileInEditor
                 )
                 self.tsMultiMenuActions.append(act)
-            act = self.multiMenu.addAction(
-                self.tr("Open in Editor"), self.__openFileInEditor
-            )
-            self.tsMultiMenuActions.append(act)
-            self.multiMenu.addSeparator()
-            if self.hooks["releaseSelected"] is not None:
+                self.multiMenu.addSeparator()
                 act = self.multiMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "releaseSelected", self.tr("Release translations")
-                    ),
-                    self.__releaseSelected,
+                    self.tr("Release translations"), self.__releaseSelected
                 )
                 self.tsMultiMenuActions.append(act)
                 self.qmprocMultiMenuActions.append(act)
+                self.multiMenu.addSeparator()
+                act = self.multiMenu.addAction(
+                    self.tr("Preview translations"), self.__TRPreview
+                )
+                self.qmMultiMenuActions.append(act)
+        else:
+            if FileSystemUtilities.isRemoteFileName(self.project.getProjectPath()):
+                act = self.multiMenu.addAction(
+                    self.tr("Open in Editor"), self.__openFileInEditor
+                )
+                self.tsMultiMenuActions.append(act)
+                self.multiMenu.addSeparator()
+            else:
+                if self.hooks["extractMessages"] is not None:
+                    act = self.multiMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "extractMessages", self.tr("Extract messages")
+                        ),
+                        self.__extractMessages,
+                    )
+                    self.multiMenuActions.append(act)
+                    self.multiMenu.addSeparator()
+                if self.hooks["generateSelected"] is not None:
+                    act = self.multiMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateSelected", self.tr("Generate translations")
+                        ),
+                        self.__generateSelected,
+                    )
+                    self.tsMultiMenuActions.append(act)
+                    self.tsprocMultiMenuActions.append(act)
+                if self.hooks["generateSelectedWithObsolete"] is not None:
+                    act = self.multiMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateSelectedWithObsolete",
+                            self.tr("Generate translations (with obsolete)"),
+                        ),
+                        self.__generateObsoleteSelected,
+                    )
+                    self.tsMultiMenuActions.append(act)
+                    self.tsprocMultiMenuActions.append(act)
+                self.multiMenu.addSeparator()
+                if self.hooks["open"] is not None:
+                    act = self.multiMenu.addAction(
+                        self.hooksMenuEntries.get("open", self.tr("Open")),
+                        self._openItem,
+                    )
+                    self.tsMultiMenuActions.append(act)
+                act = self.multiMenu.addAction(
+                    self.tr("Open in Editor"), self.__openFileInEditor
+                )
+                self.tsMultiMenuActions.append(act)
+                self.multiMenu.addSeparator()
+                if self.hooks["releaseSelected"] is not None:
+                    act = self.multiMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "releaseSelected", self.tr("Release translations")
+                        ),
+                        self.__releaseSelected,
+                    )
+                    self.tsMultiMenuActions.append(act)
+                    self.qmprocMultiMenuActions.append(act)
         self.multiMenu.addSeparator()
         act = self.multiMenu.addAction(
             self.tr("Remove from project"), self.__removeLanguageFile
@@ -499,81 +535,85 @@
         self.multiMenu.addAction(self.tr("Configure..."), self._configure)
 
         self.dirMenu = QMenu(self)
-        if self.project.getProjectType() in [
-            "PyQt5",
-            "PyQt5C",
-            "PyQt6",
-            "PyQt6C",
-            "E7Plugin",
-            "PySide2",
-            "PySide2C",
-            "PySide6",
-            "PySide6C",
-        ]:
-            act = self.dirMenu.addAction(
-                self.tr("Generate all translations"), self.__generateAll
-            )
-            self.tsprocDirMenuActions.append(act)
-            act = self.dirMenu.addAction(
-                self.tr("Generate all translations (with obsolete)"),
-                self.__generateObsoleteAll,
-            )
-            self.tsprocDirMenuActions.append(act)
-            act = self.dirMenu.addAction(
-                self.tr("Release all translations"), self.__releaseAll
-            )
-            self.qmprocDirMenuActions.append(act)
-            self.dirMenu.addSeparator()
-            act = self.dirMenu.addAction(
-                self.tr("Preview all translations"), self.__TRPreview
-            )
-        else:
-            if self.hooks["extractMessages"] is not None:
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            if self.project.getProjectType() in [
+                "PyQt5",
+                "PyQt5C",
+                "PyQt6",
+                "PyQt6C",
+                "E7Plugin",
+                "PySide2",
+                "PySide2C",
+                "PySide6",
+                "PySide6C",
+            ]:
                 act = self.dirMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "extractMessages", self.tr("Extract messages")
-                    ),
-                    self.__extractMessages,
-                )
-                self.dirMenuActions.append(act)
-                self.dirMenu.addSeparator()
-            if self.hooks["generateAll"] is not None:
-                act = self.dirMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateAll", self.tr("Generate all translations")
-                    ),
-                    self.__generateAll,
+                    self.tr("Generate all translations"), self.__generateAll
                 )
                 self.tsprocDirMenuActions.append(act)
-            if self.hooks["generateAllWithObsolete"] is not None:
                 act = self.dirMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "generateAllWithObsolete",
-                        self.tr("Generate all translations (with obsolete)"),
-                    ),
+                    self.tr("Generate all translations (with obsolete)"),
                     self.__generateObsoleteAll,
                 )
                 self.tsprocDirMenuActions.append(act)
-            if self.hooks["releaseAll"] is not None:
                 act = self.dirMenu.addAction(
-                    self.hooksMenuEntries.get(
-                        "releaseAll", self.tr("Release all translations")
-                    ),
-                    self.__releaseAll,
+                    self.tr("Release all translations"), self.__releaseAll
                 )
                 self.qmprocDirMenuActions.append(act)
+                self.dirMenu.addSeparator()
+                act = self.dirMenu.addAction(
+                    self.tr("Preview all translations"), self.__TRPreview
+                )
+            else:
+                if self.hooks["extractMessages"] is not None:
+                    act = self.dirMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "extractMessages", self.tr("Extract messages")
+                        ),
+                        self.__extractMessages,
+                    )
+                    self.dirMenuActions.append(act)
+                    self.dirMenu.addSeparator()
+                if self.hooks["generateAll"] is not None:
+                    act = self.dirMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateAll", self.tr("Generate all translations")
+                        ),
+                        self.__generateAll,
+                    )
+                    self.tsprocDirMenuActions.append(act)
+                if self.hooks["generateAllWithObsolete"] is not None:
+                    act = self.dirMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "generateAllWithObsolete",
+                            self.tr("Generate all translations (with obsolete)"),
+                        ),
+                        self.__generateObsoleteAll,
+                    )
+                    self.tsprocDirMenuActions.append(act)
+                if self.hooks["releaseAll"] is not None:
+                    act = self.dirMenu.addAction(
+                        self.hooksMenuEntries.get(
+                            "releaseAll", self.tr("Release all translations")
+                        ),
+                        self.__releaseAll,
+                    )
+                    self.qmprocDirMenuActions.append(act)
         self.dirMenu.addSeparator()
         act = self.dirMenu.addAction(self.tr("Delete"), self._deleteDirectory)
         self.dirMenuActions.append(act)
         self.dirMenu.addSeparator()
-        self.__addTranslationDirAct = self.dirMenu.addAction(
-            self.tr("New translation..."), self.project.addLanguage
-        )
-        self.dirMenu.addAction(
-            self.tr("Add translation files..."), self.__addTranslationFiles
-        )
-        self.dirMenu.addSeparator()
-        self.dirMenu.addAction(self.tr("Show in File Manager"), self._showInFileManager)
+        if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+            self.__addTranslationDirAct = self.dirMenu.addAction(
+                self.tr("New translation..."), self.project.addLanguage
+            )
+            self.dirMenu.addAction(
+                self.tr("Add translation files..."), self.__addTranslationFiles
+            )
+            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("Configure..."), self._configure)
@@ -655,8 +695,9 @@
             elif tsFiles > 0:
                 for act in self.tsMenuActions:
                     act.setEnabled(True)
-                self.__qtLinguistAct.setEnabled(QtUtilities.hasQtLinguist())
-                self.__qtLinguistMultiAct.setEnabled(QtUtilities.hasQtLinguist())
+                if FileSystemUtilities.isPlainFileName(self.project.getProjectPath()):
+                    self.__qtLinguistAct.setEnabled(QtUtilities.hasQtLinguist())
+                    self.__qtLinguistMultiAct.setEnabled(QtUtilities.hasQtLinguist())
                 for act in self.qmMenuActions:
                     act.setEnabled(False)
             elif qmFiles > 0:
@@ -727,17 +768,20 @@
         """
         Private slot called by the dirMenu aboutToShow signal.
         """
-        if self.project.getProjectType() in [
-            "PyQt5",
-            "PyQt5C",
-            "PyQt6",
-            "PyQt6C",
-            "E7Plugin",
-            "PySide2",
-            "PySide2C",
-            "PySide6",
-            "PySide6C",
-        ]:
+        if (
+            FileSystemUtilities.isPlainFileName(self.project.getProjectPath())
+            and self.project.getProjectType() in [
+                "PyQt5",
+                "PyQt5C",
+                "PyQt6",
+                "PyQt6C",
+                "E7Plugin",
+                "PySide2",
+                "PySide2C",
+                "PySide6",
+                "PySide6C",
+            ]
+        ):
             if self.pylupdateProcRunning:
                 for act in self.tsprocDirMenuActions:
                     act.setEnabled(False)
@@ -756,17 +800,20 @@
         """
         Private slot called by the backMenu aboutToShow signal.
         """
-        if self.project.getProjectType() in [
-            "PyQt5",
-            "PyQt5C",
-            "PyQt6",
-            "PyQt6C",
-            "E7Plugin",
-            "PySide2",
-            "PySide2C",
-            "PySide6",
-            "PySide6C",
-        ]:
+        if (
+            FileSystemUtilities.isPlainFileName(self.project.getProjectPath())
+            and self.project.getProjectType() in [
+                "PyQt5",
+                "PyQt5C",
+                "PyQt6",
+                "PyQt6C",
+                "E7Plugin",
+                "PySide2",
+                "PySide2C",
+                "PySide6",
+                "PySide6C",
+            ]
+        ):
             if self.pylupdateProcRunning:
                 for act in self.tsprocBackMenuActions:
                     act.setEnabled(False)
@@ -795,7 +842,10 @@
                 # hook support
                 if self.hooks["open"] is not None:
                     self.hooks["open"](itm.fileName())
-                elif itm.isLinguistFile():
+                elif (
+                    itm.isLinguistFile()
+                    and FileSystemUtilities.isPlainFileName(itm.fileName())
+                ):
                     if itm.fileExt() == ".ts":
                         self.linguistFile.emit(itm.fileName())
                     else:

eric ide

mercurial