VirtualEnv/VirtualenvManagerDialog.py

changeset 6349
17b3c75913de
parent 6338
104ee21d765d
child 6362
ec32d1d7f525
equal deleted inserted replaced
6348:d6c0b8ab1fc6 6349:17b3c75913de
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 """

eric ide

mercurial