diff -r 509768769afe -r 58f82c179d2b Plugins/UiExtensionPlugins/PipInterface/Pip.py --- a/Plugins/UiExtensionPlugins/PipInterface/Pip.py Fri May 18 18:31:14 2018 +0200 +++ b/Plugins/UiExtensionPlugins/PipInterface/Pip.py Fri May 18 19:04:15 2018 +0200 @@ -127,7 +127,6 @@ ## Actions for installing packages ############################################## - # TODO: add action to install a downloaded wheel via pip self.installPackagesAct = E5Action( self.tr('Install Packages'), self.tr('&Install Packages'), @@ -142,6 +141,21 @@ self.installPackagesAct.triggered.connect(self.__installPackages) self.actions.append(self.installPackagesAct) + self.installLocalPackageAct = E5Action( + self.tr('Install Local Package'), + self.tr('Install Local Package'), + 0, 0, + self, 'pip_install_local_package') + self.installLocalPackageAct.setStatusTip(self.tr( + 'Install a package from local storage')) + self.installLocalPackageAct.setWhatsThis(self.tr( + """<b>Install Local Package</b>""" + """<p>This installs a package available on local storage.</p>""" + )) + self.installLocalPackageAct.triggered.connect( + self.__installLocalPackage) + self.actions.append(self.installLocalPackageAct) + self.installRequirementsAct = E5Action( self.tr('Install Requirements'), self.tr('Install Requirements'), @@ -356,6 +370,7 @@ menu.addSeparator() menu.addAction(self.installPipAct) menu.addAction(self.installPackagesAct) + menu.addAction(self.installLocalPackageAct) menu.addAction(self.installRequirementsAct) menu.addSeparator() menu.addAction(self.upgradePipAct) @@ -932,13 +947,23 @@ if packages: self.installPackages(packages, cmd=command) + def __installLocalPackage(self): + """ + Private slot to install a package available on local storage. + """ + from .PipFileSelectionDialog import PipFileSelectionDialog + dlg = PipFileSelectionDialog(self.__plugin, "package") + if dlg.exec_() == QDialog.Accepted: + command, package = dlg.getData() + if package and os.path.exists(package): + self.installPackages([package], cmd=command) + def __installRequirements(self): """ Private slot to install packages as given in a requirements file. """ - from .PipRequirementsSelectionDialog import \ - PipRequirementsSelectionDialog - dlg = PipRequirementsSelectionDialog(self.__plugin) + from .PipFileSelectionDialog import PipFileSelectionDialog + dlg = PipFileSelectionDialog(self.__plugin, "requirements") if dlg.exec_() == QDialog.Accepted: command, requirements = dlg.getData() if requirements and os.path.exists(requirements): @@ -1002,9 +1027,8 @@ """ Private slot to uninstall packages as given in a requirements file. """ - from .PipRequirementsSelectionDialog import \ - PipRequirementsSelectionDialog - dlg = PipRequirementsSelectionDialog(self.__plugin) + from .PipFileSelectionDialog import PipFileSelectionDialog + dlg = PipFileSelectionDialog(self.__plugin, "requirements") if dlg.exec_() == QDialog.Accepted: command, requirements = dlg.getData() if requirements and os.path.exists(requirements):