19 class VirtualenvManagerDialog(QDialog, Ui_VirtualenvManagerDialog): |
19 class VirtualenvManagerDialog(QDialog, Ui_VirtualenvManagerDialog): |
20 """ |
20 """ |
21 Class implementing a dialog to manage the list of defined virtual |
21 Class implementing a dialog to manage the list of defined virtual |
22 environments. |
22 environments. |
23 """ |
23 """ |
|
24 PythonVariantRole = Qt.UserRole |
|
25 |
24 def __init__(self, manager, parent=None): |
26 def __init__(self, manager, parent=None): |
25 """ |
27 """ |
26 Constructor |
28 Constructor |
27 |
29 |
28 @param manager reference to the virtual environment manager |
30 @param manager reference to the virtual environment manager |
44 """ |
46 """ |
45 Private method to update the enabled state of the various buttons. |
47 Private method to update the enabled state of the various buttons. |
46 """ |
48 """ |
47 selectedItemsCount = len(self.venvList.selectedItems()) |
49 selectedItemsCount = len(self.venvList.selectedItems()) |
48 topLevelItemCount = self.venvList.topLevelItemCount() |
50 topLevelItemCount = self.venvList.topLevelItemCount() |
|
51 |
|
52 deletableSelectedItemCount = 0 |
|
53 for itm in self.venvList.selectedItems(): |
|
54 if itm.text(0) != "<default>" and bool(itm.text(1)): |
|
55 deletableSelectedItemCount += 1 |
|
56 |
|
57 deletableItemCount = 0 |
|
58 for index in range(topLevelItemCount): |
|
59 itm = self.venvList.topLevelItem(index) |
|
60 if itm.text(0) != "<default>" and bool(itm.text(1)): |
|
61 deletableItemCount += 1 |
49 |
62 |
50 canBeDeleted = ( |
63 canBeDeleted = ( |
51 selectedItemsCount == 1 and |
64 selectedItemsCount == 1 and |
52 self.venvList.selectedItems()[0].text(0) != "<default>" |
65 self.venvList.selectedItems()[0].text(0) != "<default>" |
53 ) |
66 ) |
55 topLevelItemCount == 1 and |
68 topLevelItemCount == 1 and |
56 self.venvList.topLevelItem(0).text(0) != "<default>" |
69 self.venvList.topLevelItem(0).text(0) != "<default>" |
57 ) |
70 ) |
58 |
71 |
59 self.editButton.setEnabled(selectedItemsCount == 1) |
72 self.editButton.setEnabled(selectedItemsCount == 1) |
|
73 |
60 self.removeButton.setEnabled(selectedItemsCount > 1 or canBeDeleted) |
74 self.removeButton.setEnabled(selectedItemsCount > 1 or canBeDeleted) |
61 self.removeAllButton.setEnabled( |
75 self.removeAllButton.setEnabled( |
62 topLevelItemCount > 1 or canAllBeDeleted) |
76 topLevelItemCount > 1 or canAllBeDeleted) |
63 self.deleteButton.setEnabled(selectedItemsCount > 1 or canBeDeleted) |
77 |
64 self.deleteAllButton.setEnabled( |
78 self.deleteButton.setEnabled(deletableSelectedItemCount) |
65 topLevelItemCount > 1 or canAllBeDeleted) |
79 self.deleteAllButton.setEnabled(deletableItemCount) |
66 |
80 |
67 @pyqtSlot() |
81 @pyqtSlot() |
68 def on_addButton_clicked(self): |
82 def on_addButton_clicked(self): |
69 """ |
83 """ |
70 Private slot to add a new entry. |
84 Private slot to add a new entry. |
71 """ |
85 """ |
72 from .VirtualenvAddEditDialog import VirtualenvAddEditDialog |
86 from .VirtualenvAddEditDialog import VirtualenvAddEditDialog |
73 dlg = VirtualenvAddEditDialog(self.__manager) |
87 dlg = VirtualenvAddEditDialog(self.__manager) |
74 if dlg.exec_() == QDialog.Accepted: |
88 if dlg.exec_() == QDialog.Accepted: |
75 venvName, venvDirectory, venvInterpreter = dlg.getData() |
89 venvName, venvDirectory, venvInterpreter, venvVariant = \ |
|
90 dlg.getData() |
76 |
91 |
77 self.__manager.addVirtualEnv(venvName, venvDirectory, |
92 self.__manager.addVirtualEnv(venvName, venvDirectory, |
78 venvInterpreter) |
93 venvInterpreter, venvVariant) |
79 |
94 |
80 @pyqtSlot() |
95 @pyqtSlot() |
81 def on_newButton_clicked(self): |
96 def on_newButton_clicked(self): |
82 """ |
97 """ |
83 Private slot to create a new virtual environment. |
98 Private slot to create a new virtual environment. |
91 """ |
106 """ |
92 selectedItem = self.venvList.selectedItems()[0] |
107 selectedItem = self.venvList.selectedItems()[0] |
93 oldVenvName = selectedItem.text(0) |
108 oldVenvName = selectedItem.text(0) |
94 |
109 |
95 from .VirtualenvAddEditDialog import VirtualenvAddEditDialog |
110 from .VirtualenvAddEditDialog import VirtualenvAddEditDialog |
96 dlg = VirtualenvAddEditDialog(self.__manager, selectedItem.text(0), |
111 dlg = VirtualenvAddEditDialog( |
97 selectedItem.text(1), |
112 self.__manager, selectedItem.text(0), |
98 selectedItem.text(2)) |
113 selectedItem.text(1), selectedItem.text(2), |
|
114 selectedItem.data(0, VirtualenvManagerDialog.PythonVariantRole) |
|
115 ) |
99 if dlg.exec_() == QDialog.Accepted: |
116 if dlg.exec_() == QDialog.Accepted: |
100 venvName, venvDirectory, venvInterpreter = dlg.getData() |
117 venvName, venvDirectory, venvInterpreter, venvVariant = \ |
|
118 dlg.getData() |
101 if venvName != oldVenvName: |
119 if venvName != oldVenvName: |
102 self.__manager.renameVirtualEnv( |
120 self.__manager.renameVirtualEnv( |
103 oldVenvName, venvName, venvDirectory, venvInterpreter) |
121 oldVenvName, venvName, venvDirectory, venvInterpreter, |
|
122 venvVariant) |
104 else: |
123 else: |
105 self.__manager.setVirtualEnv( |
124 self.__manager.setVirtualEnv( |
106 venvName, venvDirectory, venvInterpreter) |
125 venvName, venvDirectory, venvInterpreter, venvVariant) |
107 |
126 |
108 @pyqtSlot() |
127 @pyqtSlot() |
109 def on_removeButton_clicked(self): |
128 def on_removeButton_clicked(self): |
110 """ |
129 """ |
111 Private slot to remove all selected entries from the list but keep |
130 Private slot to remove all selected entries from the list but keep |
190 """ |
209 """ |
191 Private method to populate the list of virtual environments. |
210 Private method to populate the list of virtual environments. |
192 """ |
211 """ |
193 environments = self.__manager.getEnvironmentEntries() |
212 environments = self.__manager.getEnvironmentEntries() |
194 for venvName in environments: |
213 for venvName in environments: |
195 QTreeWidgetItem(self.venvList, [ |
214 itm = QTreeWidgetItem(self.venvList, [ |
196 venvName, |
215 venvName, |
197 environments[venvName][0], |
216 environments[venvName]["path"], |
198 environments[venvName][1], |
217 environments[venvName]["interpreter"], |
199 ]) |
218 ]) |
|
219 itm.setData(0, VirtualenvManagerDialog.PythonVariantRole, |
|
220 environments[venvName]["variant"]) |
200 |
221 |
201 self.__resizeSections() |
222 self.__resizeSections() |
202 |
223 |
203 def __resizeSections(self): |
224 def __resizeSections(self): |
204 """ |
225 """ |