--- 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())