eric7/VirtualEnv/VirtualenvManagerWidgets.py

Fri, 10 Jun 2022 18:13:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 10 Jun 2022 18:13:47 +0200
branch
eric7
changeset 9144
135240382a3e
parent 8881
54e42bc2437a
child 9146
409d93549d61
permissions
-rw-r--r--

Virtual Environments
- added the capability to upgrade a virtual environment

8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8611
diff changeset
3 # Copyright (c) 2018 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to manage the list of defined virtual
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 environments.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
11 import os
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
12
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtCore import pyqtSlot, Qt
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from PyQt6.QtWidgets import (
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 QWidget, QDialog, QDialogButtonBox, QTreeWidgetItem, QHeaderView,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 QVBoxLayout
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 )
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from EricWidgets.EricPathPicker import EricPathPickerModes
8611
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
20 from EricWidgets.EricMainWindow import EricMainWindow
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 from .Ui_VirtualenvManagerWidget import Ui_VirtualenvManagerWidget
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 import Utilities
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 import UI.PixmapCache
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
28 # TODO: add a list refresh button
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 class VirtualenvManagerWidget(QWidget, Ui_VirtualenvManagerWidget):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Class implementing a widget to manage the list of defined virtual
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 environments.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 IsGlobalRole = Qt.ItemDataRole.UserRole + 1
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 IsCondaRole = Qt.ItemDataRole.UserRole + 2
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 IsRemoteRole = Qt.ItemDataRole.UserRole + 3
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 ExecPathRole = Qt.ItemDataRole.UserRole + 4
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 def __init__(self, manager, parent=None):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 Constructor
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @param manager reference to the virtual environment manager
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @type VirtualenvManager
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @param parent reference to the parent widget
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @type QWidget
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 super().__init__(parent)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.setupUi(self)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__manager = manager
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
53 self.refreshButton.setIcon(UI.PixmapCache.getIcon("reload"))
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.addButton.setIcon(UI.PixmapCache.getIcon("plus"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.newButton.setIcon(UI.PixmapCache.getIcon("new"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.editButton.setIcon(UI.PixmapCache.getIcon("edit"))
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
57 self.upgradeButton.setIcon(UI.PixmapCache.getIcon("upgrade"))
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.removeButton.setIcon(UI.PixmapCache.getIcon("minus"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.removeAllButton.setIcon(UI.PixmapCache.getIcon("minus_3"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.deleteButton.setIcon(UI.PixmapCache.getIcon("fileDelete"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.deleteAllButton.setIcon(UI.PixmapCache.getIcon("fileDeleteList"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.saveButton.setIcon(UI.PixmapCache.getIcon("fileSave"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 baseDir = self.__manager.getVirtualEnvironmentsBaseDir()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 if not baseDir:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 baseDir = Utilities.getHomeDir()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.envBaseDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.envBaseDirectoryPicker.setWindowTitle(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.tr("Virtualenv Base Directory"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.envBaseDirectoryPicker.setText(baseDir)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.__populateVenvList()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.__updateButtons()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.venvList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.__manager.virtualEnvironmentsListChanged.connect(self.__refresh)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 def __updateButtons(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 Private method to update the enabled state of the various buttons.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 selectedItemsCount = len(self.venvList.selectedItems())
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 topLevelItemCount = self.venvList.topLevelItemCount()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 deletableSelectedItemCount = 0
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 for itm in self.venvList.selectedItems():
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 if (
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 itm.text(0) != "<default>" and
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 bool(itm.text(1)) and
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 not itm.data(0, VirtualenvManagerWidget.IsGlobalRole) and
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 not itm.data(0, VirtualenvManagerWidget.IsRemoteRole)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 ):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 deletableSelectedItemCount += 1
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 deletableItemCount = 0
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 for index in range(topLevelItemCount):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 itm = self.venvList.topLevelItem(index)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 if (
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 itm.text(0) != "<default>" and
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 bool(itm.text(1)) and
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 not itm.data(0, VirtualenvManagerWidget.IsRemoteRole)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 ):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 deletableItemCount += 1
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 canBeRemoved = (
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 selectedItemsCount == 1 and
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.venvList.selectedItems()[0].text(0) != "<default>"
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 )
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 canAllBeRemoved = (
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 topLevelItemCount == 1 and
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.venvList.topLevelItem(0).text(0) != "<default>"
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 )
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.editButton.setEnabled(selectedItemsCount == 1)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 self.removeButton.setEnabled(selectedItemsCount > 1 or canBeRemoved)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 self.removeAllButton.setEnabled(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 topLevelItemCount > 1 or canAllBeRemoved)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 self.deleteButton.setEnabled(deletableSelectedItemCount)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 self.deleteAllButton.setEnabled(deletableItemCount)
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
124
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
125 if selectedItemsCount == 1:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
126 venvName = self.venvList.selectedItems()[0].text(0)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
127 venvDirectory = self.__manager.getVirtualenvDirectory(venvName)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
128 self.upgradeButton.setEnabled(os.path.exists(os.path.join(
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
129 venvDirectory, "pyvenv.cfg")))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
130 else:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
131 self.upgradeButton.setEnabled(False)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
132
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
133 @pyqtSlot()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
134 def on_refreshButton_clicked(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
135 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
136 Private slot to refresh the list of virtual environments.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
137 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
138 self.__manager.reloadSettings()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
139 self.__refresh()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 def on_addButton_clicked(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 Private slot to add a new entry.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 from .VirtualenvAddEditDialog import VirtualenvAddEditDialog
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 dlg = VirtualenvAddEditDialog(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.__manager,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 baseDir=self.envBaseDirectoryPicker.text()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 )
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 if dlg.exec() == QDialog.DialogCode.Accepted:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 (venvName, venvDirectory, venvInterpreter, isGlobal, isConda,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 isRemote, execPath) = dlg.getData()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.__manager.addVirtualEnv(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 venvName, venvDirectory, venvInterpreter, isGlobal, isConda,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 isRemote, execPath)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 def on_newButton_clicked(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 Private slot to create a new virtual environment.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 self.__manager.createVirtualEnv(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 baseDir=self.envBaseDirectoryPicker.text())
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 def on_editButton_clicked(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 Private slot to edit the selected entry.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 selectedItem = self.venvList.selectedItems()[0]
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 oldVenvName = selectedItem.text(0)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 from .VirtualenvAddEditDialog import VirtualenvAddEditDialog
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 dlg = VirtualenvAddEditDialog(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 self.__manager, selectedItem.text(0),
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 selectedItem.text(1), selectedItem.text(2),
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 selectedItem.data(0, VirtualenvManagerWidget.IsGlobalRole),
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 selectedItem.data(0, VirtualenvManagerWidget.IsCondaRole),
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 selectedItem.data(0, VirtualenvManagerWidget.IsRemoteRole),
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 selectedItem.data(0, VirtualenvManagerWidget.ExecPathRole),
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 baseDir=self.envBaseDirectoryPicker.text()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 )
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 if dlg.exec() == QDialog.DialogCode.Accepted:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 (venvName, venvDirectory, venvInterpreter, isGlobal, isConda,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 isRemote, execPath) = dlg.getData()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 if venvName != oldVenvName:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 self.__manager.renameVirtualEnv(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 oldVenvName, venvName, venvDirectory, venvInterpreter,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 isGlobal, isConda, isRemote, execPath)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 else:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 self.__manager.setVirtualEnv(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 venvName, venvDirectory, venvInterpreter, isGlobal,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 isConda, isRemote, execPath)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 @pyqtSlot()
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
198 def on_upgradeButton_clicked(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
199 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
200 Private slot to upgrade a virtual environment.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
201 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
202 self.__manager.upgradeVirtualEnv(
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
203 self.venvList.selectedItems()[0].text(0))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
204
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
205 @pyqtSlot()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 def on_removeButton_clicked(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 Private slot to remove all selected entries from the list but keep
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 their directories.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 selectedVenvs = []
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 for itm in self.venvList.selectedItems():
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 selectedVenvs.append(itm.text(0))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 if selectedVenvs:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self.__manager.removeVirtualEnvs(selectedVenvs)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 def on_removeAllButton_clicked(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 Private slot to remove all entries from the list but keep their
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 directories.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 venvNames = []
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 for index in range(self.venvList.topLevelItemCount()):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 itm = self.venvList.topLevelItem(index)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 venvNames.append(itm.text(0))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 if venvNames:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.__manager.removeVirtualEnvs(venvNames)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 def on_deleteButton_clicked(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 Private slot to delete all selected entries from the list and disk.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 selectedVenvs = []
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 for itm in self.venvList.selectedItems():
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 selectedVenvs.append(itm.text(0))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 if selectedVenvs:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 self.__manager.deleteVirtualEnvs(selectedVenvs)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 def on_deleteAllButton_clicked(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 Private slot to delete all entries from the list and disk.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 venvNames = []
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 for index in range(self.venvList.topLevelItemCount()):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 itm = self.venvList.topLevelItem(index)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 venvNames.append(itm.text(0))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 if venvNames:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 self.__manager.deleteVirtualEnvs(venvNames)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 def on_venvList_itemSelectionChanged(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 Private slot handling a change of the selected items.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 self.__updateButtons()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 def __refresh(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 Private slot to refresh the list of shown items.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 # 1. remember selected entries
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 selectedVenvs = []
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 for itm in self.venvList.selectedItems():
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 selectedVenvs.append(itm.text(0))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 # 2. clear the list
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 self.venvList.clear()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 # 3. re-populate the list
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 self.__populateVenvList()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 # 4. re-establish selection
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 for venvName in selectedVenvs:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 itms = self.venvList.findItems(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 venvName, Qt.MatchFlag.MatchExactly, 0)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 if itms:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 itms[0].setSelected(True)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 def __populateVenvList(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 Private method to populate the list of virtual environments.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 environments = self.__manager.getEnvironmentEntries()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 for venvName in environments:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 itm = QTreeWidgetItem(self.venvList, [
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 venvName,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 environments[venvName]["path"],
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 environments[venvName]["interpreter"],
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 ])
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 itm.setData(0, VirtualenvManagerWidget.IsGlobalRole,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 environments[venvName]["is_global"])
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 itm.setData(0, VirtualenvManagerWidget.IsCondaRole,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 environments[venvName]["is_conda"])
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 itm.setData(0, VirtualenvManagerWidget.IsRemoteRole,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 environments[venvName]["is_remote"])
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 itm.setData(0, VirtualenvManagerWidget.ExecPathRole,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 environments[venvName]["exec_path"])
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 # show remote environments with underlined font
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 if environments[venvName]["is_remote"]:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 font = itm.font(0)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 font.setUnderline(True)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 for column in range(itm.columnCount()):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 itm.setFont(column, font)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 else:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 # local environments
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 # show global environments with bold font
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 if environments[venvName]["is_global"]:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 font = itm.font(0)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 font.setBold(True)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 for column in range(itm.columnCount()):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 itm.setFont(column, font)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 # show Anaconda environments with italic font
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 if environments[venvName]["is_conda"]:
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 font = itm.font(0)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 font.setItalic(True)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 for column in range(itm.columnCount()):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 itm.setFont(column, font)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 self.__resizeSections()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 def __resizeSections(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 Private method to resize the sections of the environment list to their
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 contents.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 self.venvList.header().resizeSections(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 QHeaderView.ResizeMode.ResizeToContents)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 self.venvList.header().setStretchLastSection(True)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 @pyqtSlot()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 def on_saveButton_clicked(self):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 Private slot to save the base directory name.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 baseDir = self.envBaseDirectoryPicker.text()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 self.__manager.setVirtualEnvironmentsBaseDir(baseDir)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 class VirtualenvManagerDialog(QDialog):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 Class implementing the virtual environments manager dialog variant.
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 def __init__(self, manager, parent=None):
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 Constructor
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 @param manager reference to the virtual environment manager
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 @type VirtualenvManager
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 @param parent reference to the parent widget
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 @type QWidget
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 """
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 super().__init__(parent)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 self.setSizeGripEnabled(True)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 self.__layout = QVBoxLayout(self)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 self.setLayout(self.__layout)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 self.cw = VirtualenvManagerWidget(manager, self)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 self.__layout.addWidget(self.cw)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 self.buttonBox = QDialogButtonBox(
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 QDialogButtonBox.StandardButton.Close,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 Qt.Orientation.Horizontal,
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 self)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 self.__layout.addWidget(self.buttonBox)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 self.resize(700, 500)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 self.setWindowTitle(self.tr("Manage Virtual Environments"))
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 self.buttonBox.accepted.connect(self.accept)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 self.buttonBox.rejected.connect(self.reject)
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383
8611
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
384
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
385 class VirtualenvManagerWindow(EricMainWindow):
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
386 """
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
387 Main window class for the standalone virtual environments manager.
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
388 """
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
389 def __init__(self, parent=None):
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
390 """
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
391 Constructor
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
392
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
393 @param parent reference to the parent widget (QWidget)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
394 """
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
395 super().__init__(parent)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
396
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
397 from VirtualEnv.VirtualenvManager import VirtualenvManager
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
398 self.__virtualenvManager = VirtualenvManager(self)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
399
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
400 self.__centralWidget = QWidget(self)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
401 self.__layout = QVBoxLayout(self.__centralWidget)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
402 self.__centralWidget.setLayout(self.__layout)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
403
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
404 self.__virtualenvManagerWidget = VirtualenvManagerWidget(
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
405 self.__virtualenvManager, self.__centralWidget)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
406 self.__layout.addWidget(self.__virtualenvManagerWidget)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
407
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
408 self.__buttonBox = QDialogButtonBox(
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
409 QDialogButtonBox.StandardButton.Close,
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
410 Qt.Orientation.Horizontal,
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
411 self)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
412 self.__layout.addWidget(self.__buttonBox)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
413
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
414 self.setCentralWidget(self.__centralWidget)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
415 self.resize(700, 500)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
416 self.setWindowTitle(self.tr("Manage Virtual Environments"))
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
417
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
418 self.__buttonBox.accepted.connect(self.close)
0b1a09e47e98 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
419 self.__buttonBox.rejected.connect(self.close)

eric ide

mercurial