CondaInterface/CondaPackagesWidget.py

branch
conda
changeset 6706
d792e054cde2
parent 6705
8cf1c3851b5c
child 6712
91fa67e8ebbc
equal deleted inserted replaced
6705:8cf1c3851b5c 6706:d792e054cde2
21 21
22 class CondaPackagesWidget(QWidget, Ui_CondaPackagesWidget): 22 class CondaPackagesWidget(QWidget, Ui_CondaPackagesWidget):
23 """ 23 """
24 Class implementing the conda packages management widget. 24 Class implementing the conda packages management widget.
25 """ 25 """
26 PackageVersionRole = Qt.UserRole + 1
27 PackageBuildRole = Qt.UserRole + 2
28
26 def __init__(self, conda, parent=None): 29 def __init__(self, conda, parent=None):
27 """ 30 """
28 Constructor 31 Constructor
29 32
30 @param conda reference to the conda interface 33 @param conda reference to the conda interface
48 self.condaMenuButton.setShowMenuInside(True) 51 self.condaMenuButton.setShowMenuInside(True)
49 52
50 self.__initCondaMenu() 53 self.__initCondaMenu()
51 self.__populateEnvironments() 54 self.__populateEnvironments()
52 self.__updateActionButtons() 55 self.__updateActionButtons()
56
57 self.__conda.condaEnvironmentCreated.connect(
58 self.on_refreshButton_clicked)
59 self.__conda.condaEnvironmentRemoved.connect(
60 self.on_refreshButton_clicked)
53 61
54 def __populateEnvironments(self): 62 def __populateEnvironments(self):
55 """ 63 """
56 Private method to get a list of environments and populate the selector. 64 Private method to get a list of environments and populate the selector.
57 """ 65 """
128 # 1. populate with installed packages 136 # 1. populate with installed packages
129 installedPackages = \ 137 installedPackages = \
130 self.__conda.getInstalledPackages(prefix=prefix) 138 self.__conda.getInstalledPackages(prefix=prefix)
131 for package, version, build in installedPackages: 139 for package, version, build in installedPackages:
132 itm = QTreeWidgetItem(self.packagesList, [package, version]) 140 itm = QTreeWidgetItem(self.packagesList, [package, version])
133 itm.setToolTip(1, self.tr("Build: {0}").format(build)) 141 itm.setData(1, self.PackageVersionRole, version)
142 itm.setData(1, self.PackageBuildRole, build)
134 143
135 # 2. update with update information 144 # 2. update with update information
136 updateablePackages = \ 145 updateablePackages = \
137 self.__conda.getUpdateablePackages(prefix=prefix) 146 self.__conda.getUpdateablePackages(prefix=prefix)
138 for package, version, build in updateablePackages: 147 for package, version, build in updateablePackages:
139 items = self.packagesList.findItems( 148 items = self.packagesList.findItems(
140 package, Qt.MatchExactly | Qt.MatchCaseSensitive) 149 package, Qt.MatchExactly | Qt.MatchCaseSensitive)
141 if items: 150 if items:
142 items[0].setText(2, version) 151 itm = items[0]
143 items[0].setToolTip(2, self.tr("Build: {0}").format(build)) 152 itm.setText(2, version)
153 itm.setData(2, self.PackageVersionRole, version)
154 itm.setData(2, self.PackageBuildRole, build)
155 if itm.data(1, self.PackageVersionRole) == version:
156 # build must be different, show in version display
157 itm.setText(1, self.tr("{0} (Build: {1})").format(
158 itm.data(1, self.PackageVersionRole),
159 itm.data(1, self.PackageBuildRole),
160 ))
161 itm.setText(2, self.tr("{0} (Build: {1})").format(
162 itm.data(2, self.PackageVersionRole),
163 itm.data(2, self.PackageBuildRole),
164 ))
144 165
145 self.packagesList.sortItems(0, Qt.AscendingOrder) 166 self.packagesList.sortItems(0, Qt.AscendingOrder)
146 self.packagesList.setUpdatesEnabled(True) 167 self.packagesList.setUpdatesEnabled(True)
147 QApplication.restoreOverrideCursor() 168 QApplication.restoreOverrideCursor()
148 169
178 self.__updateActionButtons() 199 self.__updateActionButtons()
179 200
180 @pyqtSlot() 201 @pyqtSlot()
181 def on_upgradeButton_clicked(self): 202 def on_upgradeButton_clicked(self):
182 """ 203 """
183 Slot documentation goes here. 204 Private slot to upgrade selected packages of the selected environment.
184 """ 205 """
185 # TODO: not implemented yet 206 packages = [itm.text(0) for itm in self.__selectedUpdateableItems()]
186 raise NotImplementedError 207 if packages:
208 prefix = self.environmentsComboBox.itemData(
209 self.environmentsComboBox.currentIndex())
210 ok = self.__conda.updatePackages(packages, prefix=prefix)
211 if ok:
212 self.on_refreshButton_clicked()
187 213
188 @pyqtSlot() 214 @pyqtSlot()
189 def on_upgradeAllButton_clicked(self): 215 def on_upgradeAllButton_clicked(self):
190 """ 216 """
191 Slot documentation goes here. 217 Private slot to upgrade all packages of the selected environment.
192 """ 218 """
193 # TODO: not implemented yet 219 prefix = self.environmentsComboBox.itemData(
194 raise NotImplementedError 220 self.environmentsComboBox.currentIndex())
221 ok = self.__conda.updateAllPackages(prefix=prefix)
222 if ok:
223 self.on_refreshButton_clicked()
195 224
196 @pyqtSlot() 225 @pyqtSlot()
197 def on_uninstallButton_clicked(self): 226 def on_uninstallButton_clicked(self):
198 """ 227 """
199 Slot documentation goes here. 228 Private slot to remove selected packages of the selected environment.
200 """ 229 """
201 # TODO: not implemented yet 230 packages = [itm.text(0) for itm in self.packagesList.selectedItems()]
202 raise NotImplementedError 231 if packages:
232 prefix = self.environmentsComboBox.itemData(
233 self.environmentsComboBox.currentIndex())
234 ok = self.__conda.uninstallPackages(packages, prefix=prefix)
235 if ok:
236 self.on_refreshButton_clicked()

eric ide

mercurial