10 |
10 |
11 import os |
11 import os |
12 |
12 |
13 from PyQt5.QtCore import pyqtSlot, Qt |
13 from PyQt5.QtCore import pyqtSlot, Qt |
14 from PyQt5.QtGui import QCursor |
14 from PyQt5.QtGui import QCursor |
15 from PyQt5.QtWidgets import QWidget, QToolButton, QMenu, QTreeWidgetItem, \ |
15 from PyQt5.QtWidgets import ( |
16 QApplication, QLineEdit, QDialog |
16 QWidget, QToolButton, QMenu, QTreeWidgetItem, QApplication, QLineEdit, |
|
17 QDialog |
|
18 ) |
17 |
19 |
18 from E5Gui import E5FileDialog, E5MessageBox, E5TextInputDialog |
20 from E5Gui import E5FileDialog, E5MessageBox, E5TextInputDialog |
19 from E5Gui.E5Application import e5App |
21 from E5Gui.E5Application import e5App |
20 |
22 |
21 from .Ui_CondaPackagesWidget import Ui_CondaPackagesWidget |
23 from .Ui_CondaPackagesWidget import Ui_CondaPackagesWidget |
221 self.statusLabel.setText(self.tr("Getting installed packages...")) |
223 self.statusLabel.setText(self.tr("Getting installed packages...")) |
222 QApplication.processEvents() |
224 QApplication.processEvents() |
223 |
225 |
224 # 1. populate with installed packages |
226 # 1. populate with installed packages |
225 self.packagesList.setUpdatesEnabled(False) |
227 self.packagesList.setUpdatesEnabled(False) |
226 installedPackages = \ |
228 installedPackages = self.__conda.getInstalledPackages( |
227 self.__conda.getInstalledPackages(prefix=prefix) |
229 prefix=prefix) |
228 for package, version, build in installedPackages: |
230 for package, version, build in installedPackages: |
229 itm = QTreeWidgetItem(self.packagesList, [package, version]) |
231 itm = QTreeWidgetItem(self.packagesList, [package, version]) |
230 itm.setData(1, self.PackageVersionRole, version) |
232 itm.setData(1, self.PackageVersionRole, version) |
231 itm.setData(1, self.PackageBuildRole, build) |
233 itm.setData(1, self.PackageBuildRole, build) |
232 self.packagesList.setUpdatesEnabled(True) |
234 self.packagesList.setUpdatesEnabled(True) |
233 self.statusLabel.setText(self.tr("Getting outdated packages...")) |
235 self.statusLabel.setText(self.tr("Getting outdated packages...")) |
234 QApplication.processEvents() |
236 QApplication.processEvents() |
235 |
237 |
236 # 2. update with update information |
238 # 2. update with update information |
237 self.packagesList.setUpdatesEnabled(False) |
239 self.packagesList.setUpdatesEnabled(False) |
238 updateablePackages = \ |
240 updateablePackages = self.__conda.getUpdateablePackages( |
239 self.__conda.getUpdateablePackages(prefix=prefix) |
241 prefix=prefix) |
240 for package, version, build in updateablePackages: |
242 for package, version, build in updateablePackages: |
241 items = self.packagesList.findItems( |
243 items = self.packagesList.findItems( |
242 package, Qt.MatchExactly | Qt.MatchCaseSensitive) |
244 package, Qt.MatchExactly | Qt.MatchCaseSensitive) |
243 if items: |
245 if items: |
244 itm = items[0] |
246 itm = items[0] |
611 @pyqtSlot() |
613 @pyqtSlot() |
612 def __cloneEnvironment(self): |
614 def __cloneEnvironment(self): |
613 """ |
615 """ |
614 Private slot to clone a conda environment. |
616 Private slot to clone a conda environment. |
615 """ |
617 """ |
616 from .CondaNewEnvironmentDataDialog import \ |
618 from .CondaNewEnvironmentDataDialog import ( |
617 CondaNewEnvironmentDataDialog |
619 CondaNewEnvironmentDataDialog) |
618 |
620 |
619 prefix = self.environmentsComboBox.itemData( |
621 prefix = self.environmentsComboBox.itemData( |
620 self.environmentsComboBox.currentIndex()) |
622 self.environmentsComboBox.currentIndex()) |
621 if prefix: |
623 if prefix: |
622 dlg = CondaNewEnvironmentDataDialog(self.tr("Clone Environment"), |
624 dlg = CondaNewEnvironmentDataDialog(self.tr("Clone Environment"), |
627 "--name", |
629 "--name", |
628 envName.strip(), |
630 envName.strip(), |
629 "--clone", |
631 "--clone", |
630 prefix, |
632 prefix, |
631 ] |
633 ] |
632 ok, prefix, interpreter = \ |
634 ok, prefix, interpreter = self.__conda.createCondaEnvironment( |
633 self.__conda.createCondaEnvironment(args) |
635 args) |
634 if ok: |
636 if ok: |
635 e5App().getObject("VirtualEnvManager").addVirtualEnv( |
637 e5App().getObject("VirtualEnvManager").addVirtualEnv( |
636 virtEnvName, prefix, interpreter, isConda=True) |
638 virtEnvName, prefix, interpreter, isConda=True) |
637 |
639 |
638 @pyqtSlot() |
640 @pyqtSlot() |
639 def __createEnvironment(self): |
641 def __createEnvironment(self): |
640 """ |
642 """ |
641 Private slot to create a conda environment from a requirements file. |
643 Private slot to create a conda environment from a requirements file. |
642 """ |
644 """ |
643 from .CondaNewEnvironmentDataDialog import \ |
645 from .CondaNewEnvironmentDataDialog import ( |
644 CondaNewEnvironmentDataDialog |
646 CondaNewEnvironmentDataDialog) |
645 |
647 |
646 dlg = CondaNewEnvironmentDataDialog(self.tr("Create Environment"), |
648 dlg = CondaNewEnvironmentDataDialog(self.tr("Create Environment"), |
647 True, self) |
649 True, self) |
648 if dlg.exec_() == QDialog.Accepted: |
650 if dlg.exec_() == QDialog.Accepted: |
649 virtEnvName, envName, requirements = dlg.getData() |
651 virtEnvName, envName, requirements = dlg.getData() |
651 "--name", |
653 "--name", |
652 envName.strip(), |
654 envName.strip(), |
653 "--file", |
655 "--file", |
654 requirements, |
656 requirements, |
655 ] |
657 ] |
656 ok, prefix, interpreter = \ |
658 ok, prefix, interpreter = self.__conda.createCondaEnvironment(args) |
657 self.__conda.createCondaEnvironment(args) |
|
658 if ok: |
659 if ok: |
659 e5App().getObject("VirtualEnvManager").addVirtualEnv( |
660 e5App().getObject("VirtualEnvManager").addVirtualEnv( |
660 virtEnvName, prefix, interpreter, isConda=True) |
661 virtEnvName, prefix, interpreter, isConda=True) |
661 |
662 |
662 @pyqtSlot() |
663 @pyqtSlot() |