127 ## )) |
127 ## )) |
128 ## self.listOutdatedPackagesAct.triggered.connect( |
128 ## self.listOutdatedPackagesAct.triggered.connect( |
129 ## self.__listOutdatedPackages) |
129 ## self.__listOutdatedPackages) |
130 ## self.actions.append(self.listOutdatedPackagesAct) |
130 ## self.actions.append(self.listOutdatedPackagesAct) |
131 ## |
131 ## |
132 ############################################## |
132 ## ############################################## |
133 ## Actions for installing packages |
133 ## ## Actions for installing packages |
134 ############################################## |
134 ## ############################################## |
135 |
135 ## |
136 self.installPackagesAct = E5Action( |
136 ## self.installPackagesAct = E5Action( |
137 self.tr('Install Packages'), |
137 ## self.tr('Install Packages'), |
138 self.tr('&Install Packages'), |
138 ## self.tr('&Install Packages'), |
139 0, 0, |
139 ## 0, 0, |
140 self, 'pip_install_packages') |
140 ## self, 'pip_install_packages') |
141 self.installPackagesAct.setStatusTip(self.tr( |
141 ## self.installPackagesAct.setStatusTip(self.tr( |
142 'Install packages according to user input')) |
142 ## 'Install packages according to user input')) |
143 self.installPackagesAct.setWhatsThis(self.tr( |
143 ## self.installPackagesAct.setWhatsThis(self.tr( |
144 """<b>Install Packages</b>""" |
144 ## """<b>Install Packages</b>""" |
145 """<p>This installs packages according to user input.</p>""" |
145 ## """<p>This installs packages according to user input.</p>""" |
146 )) |
146 ## )) |
147 self.installPackagesAct.triggered.connect(self.__installPackages) |
147 ## self.installPackagesAct.triggered.connect(self.__installPackages) |
148 self.actions.append(self.installPackagesAct) |
148 ## self.actions.append(self.installPackagesAct) |
149 |
149 ## |
150 self.installLocalPackageAct = E5Action( |
150 ## self.installLocalPackageAct = E5Action( |
151 self.tr('Install Local Package'), |
151 ## self.tr('Install Local Package'), |
152 self.tr('Install Local Package'), |
152 ## self.tr('Install Local Package'), |
153 0, 0, |
153 ## 0, 0, |
154 self, 'pip_install_local_package') |
154 ## self, 'pip_install_local_package') |
155 self.installLocalPackageAct.setStatusTip(self.tr( |
155 ## self.installLocalPackageAct.setStatusTip(self.tr( |
156 'Install a package from local storage')) |
156 ## 'Install a package from local storage')) |
157 self.installLocalPackageAct.setWhatsThis(self.tr( |
157 ## self.installLocalPackageAct.setWhatsThis(self.tr( |
158 """<b>Install Local Package</b>""" |
158 ## """<b>Install Local Package</b>""" |
159 """<p>This installs a package available on local storage.</p>""" |
159 ## """<p>This installs a package available on local storage.</p>""" |
160 )) |
160 ## )) |
161 self.installLocalPackageAct.triggered.connect( |
161 ## self.installLocalPackageAct.triggered.connect( |
162 self.__installLocalPackage) |
162 ## self.__installLocalPackage) |
163 self.actions.append(self.installLocalPackageAct) |
163 ## self.actions.append(self.installLocalPackageAct) |
164 |
164 ## |
165 self.installRequirementsAct = E5Action( |
165 ## self.installRequirementsAct = E5Action( |
166 self.tr('Install Requirements'), |
166 ## self.tr('Install Requirements'), |
167 self.tr('Install Requirements'), |
167 ## self.tr('Install Requirements'), |
168 0, 0, |
168 ## 0, 0, |
169 self, 'pip_install_requirements') |
169 ## self, 'pip_install_requirements') |
170 self.installRequirementsAct.setStatusTip(self.tr( |
170 ## self.installRequirementsAct.setStatusTip(self.tr( |
171 'Install packages according to a requirements file')) |
171 ## 'Install packages according to a requirements file')) |
172 self.installRequirementsAct.setWhatsThis(self.tr( |
172 ## self.installRequirementsAct.setWhatsThis(self.tr( |
173 """<b>Install Requirements</b>""" |
173 ## """<b>Install Requirements</b>""" |
174 """<p>This installs packages according to a requirements""" |
174 ## """<p>This installs packages according to a requirements""" |
175 """ file.</p>""" |
175 ## """ file.</p>""" |
176 )) |
176 ## )) |
177 self.installRequirementsAct.triggered.connect( |
177 ## self.installRequirementsAct.triggered.connect( |
178 self.__installRequirements) |
178 ## self.__installRequirements) |
179 self.actions.append(self.installRequirementsAct) |
179 ## self.actions.append(self.installRequirementsAct) |
180 |
180 ## |
181 self.installPipAct = E5Action( |
181 ## self.installPipAct = E5Action( |
182 self.tr('Install Pip'), |
182 ## self.tr('Install Pip'), |
183 self.tr('Install Pip'), |
183 ## self.tr('Install Pip'), |
184 0, 0, |
184 ## 0, 0, |
185 self, 'pip_install_pip') |
185 ## self, 'pip_install_pip') |
186 self.installPipAct.setStatusTip(self.tr( |
186 ## self.installPipAct.setStatusTip(self.tr( |
187 'Install the pip package itself')) |
187 ## 'Install the pip package itself')) |
188 self.installPipAct.setWhatsThis(self.tr( |
188 ## self.installPipAct.setWhatsThis(self.tr( |
189 """<b>Install Pip</b>""" |
189 ## """<b>Install Pip</b>""" |
190 """<p>This installs the pip package itself.</p>""" |
190 ## """<p>This installs the pip package itself.</p>""" |
191 )) |
191 ## )) |
192 self.installPipAct.triggered.connect(self.__installPip) |
192 ## self.installPipAct.triggered.connect(self.__installPip) |
193 self.actions.append(self.installPipAct) |
193 ## self.actions.append(self.installPipAct) |
194 |
194 ## |
195 self.repairPipAct = E5Action( |
195 ## self.repairPipAct = E5Action( |
196 self.tr('Repair Pip'), |
196 ## self.tr('Repair Pip'), |
197 self.tr('Repair Pip'), |
197 ## self.tr('Repair Pip'), |
198 0, 0, |
198 ## 0, 0, |
199 self, 'pip_repair_pip') |
199 ## self, 'pip_repair_pip') |
200 self.repairPipAct.setStatusTip(self.tr( |
200 ## self.repairPipAct.setStatusTip(self.tr( |
201 'Repair the pip package')) |
201 ## 'Repair the pip package')) |
202 self.repairPipAct.setWhatsThis(self.tr( |
202 ## self.repairPipAct.setWhatsThis(self.tr( |
203 """<b>Repair Pip</b>""" |
203 ## """<b>Repair Pip</b>""" |
204 """<p>This repairs the pip package by re-installing it.</p>""" |
204 ## """<p>This repairs the pip package by re-installing it.</p>""" |
205 )) |
205 ## )) |
206 self.repairPipAct.triggered.connect(self.__repairPip) |
206 ## self.repairPipAct.triggered.connect(self.__repairPip) |
207 self.actions.append(self.repairPipAct) |
207 ## self.actions.append(self.repairPipAct) |
208 |
208 ## |
209 self.upgradePipAct = E5Action( |
209 ## self.upgradePipAct = E5Action( |
210 self.tr('Upgrade Pip'), |
210 ## self.tr('Upgrade Pip'), |
211 self.tr('Upgrade &Pip'), |
211 ## self.tr('Upgrade &Pip'), |
212 0, 0, |
212 ## 0, 0, |
213 self, 'pip_upgrade_pip') |
213 ## self, 'pip_upgrade_pip') |
214 self.upgradePipAct.setStatusTip(self.tr( |
214 ## self.upgradePipAct.setStatusTip(self.tr( |
215 'Upgrade the pip package itself')) |
215 ## 'Upgrade the pip package itself')) |
216 self.upgradePipAct.setWhatsThis(self.tr( |
216 ## self.upgradePipAct.setWhatsThis(self.tr( |
217 """<b>Upgrade Pip</b>""" |
217 ## """<b>Upgrade Pip</b>""" |
218 """<p>This upgrades the pip package itself.</p>""" |
218 ## """<p>This upgrades the pip package itself.</p>""" |
219 )) |
219 ## )) |
220 self.upgradePipAct.triggered.connect(self.upgradePip) |
220 ## self.upgradePipAct.triggered.connect(self.upgradePip) |
221 self.actions.append(self.upgradePipAct) |
221 ## self.actions.append(self.upgradePipAct) |
222 |
222 ## |
223 self.upgradePackagesAct = E5Action( |
223 ## self.upgradePackagesAct = E5Action( |
224 self.tr('Upgrade Packages'), |
224 ## self.tr('Upgrade Packages'), |
225 self.tr('&Upgrade Packages'), |
225 ## self.tr('&Upgrade Packages'), |
226 0, 0, |
226 ## 0, 0, |
227 self, 'pip_upgrade_packages') |
227 ## self, 'pip_upgrade_packages') |
228 self.upgradePackagesAct.setStatusTip(self.tr( |
228 ## self.upgradePackagesAct.setStatusTip(self.tr( |
229 'Upgrade packages according to user input')) |
229 ## 'Upgrade packages according to user input')) |
230 self.upgradePackagesAct.setWhatsThis(self.tr( |
230 ## self.upgradePackagesAct.setWhatsThis(self.tr( |
231 """<b>Upgrade Packages</b>""" |
231 ## """<b>Upgrade Packages</b>""" |
232 """<p>This upgrades packages according to user input.</p>""" |
232 ## """<p>This upgrades packages according to user input.</p>""" |
233 )) |
233 ## )) |
234 self.upgradePackagesAct.triggered.connect(self.__upgradePackages) |
234 ## self.upgradePackagesAct.triggered.connect(self.__upgradePackages) |
235 self.actions.append(self.upgradePackagesAct) |
235 ## self.actions.append(self.upgradePackagesAct) |
236 |
236 ## |
237 ############################################## |
237 ## ############################################## |
238 ## Actions for uninstalling packages |
238 ## ## Actions for uninstalling packages |
239 ############################################## |
239 ## ############################################## |
240 |
240 ## |
241 self.uninstallPackagesAct = E5Action( |
241 ## self.uninstallPackagesAct = E5Action( |
242 self.tr('Uninstall Packages'), |
242 ## self.tr('Uninstall Packages'), |
243 self.tr('Uninstall Packages'), |
243 ## self.tr('Uninstall Packages'), |
244 0, 0, |
244 ## 0, 0, |
245 self, 'pip_uninstall_packages') |
245 ## self, 'pip_uninstall_packages') |
246 self.uninstallPackagesAct.setStatusTip(self.tr( |
246 ## self.uninstallPackagesAct.setStatusTip(self.tr( |
247 'Uninstall packages according to user input')) |
247 ## 'Uninstall packages according to user input')) |
248 self.uninstallPackagesAct.setWhatsThis(self.tr( |
248 ## self.uninstallPackagesAct.setWhatsThis(self.tr( |
249 """<b>Uninstall Packages</b>""" |
249 ## """<b>Uninstall Packages</b>""" |
250 """<p>This uninstalls packages according to user input.</p>""" |
250 ## """<p>This uninstalls packages according to user input.</p>""" |
251 )) |
251 ## )) |
252 self.uninstallPackagesAct.triggered.connect(self.__uninstallPackages) |
252 ## self.uninstallPackagesAct.triggered.connect(self.__uninstallPackages) |
253 self.actions.append(self.uninstallPackagesAct) |
253 ## self.actions.append(self.uninstallPackagesAct) |
254 |
254 ## |
255 self.uninstallRequirementsAct = E5Action( |
255 ## self.uninstallRequirementsAct = E5Action( |
256 self.tr('Uninstall Requirements'), |
256 ## self.tr('Uninstall Requirements'), |
257 self.tr('Uninstall Requirements'), |
257 ## self.tr('Uninstall Requirements'), |
258 0, 0, |
258 ## 0, 0, |
259 self, 'pip_uninstall_requirements') |
259 ## self, 'pip_uninstall_requirements') |
260 self.uninstallRequirementsAct.setStatusTip(self.tr( |
260 ## self.uninstallRequirementsAct.setStatusTip(self.tr( |
261 'Uninstall packages according to a requirements file')) |
261 ## 'Uninstall packages according to a requirements file')) |
262 self.uninstallRequirementsAct.setWhatsThis(self.tr( |
262 ## self.uninstallRequirementsAct.setWhatsThis(self.tr( |
263 """<b>Uninstall Requirements</b>""" |
263 ## """<b>Uninstall Requirements</b>""" |
264 """<p>This uninstalls packages according to a requirements""" |
264 ## """<p>This uninstalls packages according to a requirements""" |
265 """ file.</p>""" |
265 ## """ file.</p>""" |
266 )) |
266 ## )) |
267 self.uninstallRequirementsAct.triggered.connect( |
267 ## self.uninstallRequirementsAct.triggered.connect( |
268 self.__uninstallRequirements) |
268 ## self.__uninstallRequirements) |
269 self.actions.append(self.uninstallRequirementsAct) |
269 ## self.actions.append(self.uninstallRequirementsAct) |
270 |
270 ## |
271 ############################################## |
271 ## ############################################## |
272 ## Actions for generating requirements files |
272 ## ## Actions for generating requirements files |
273 ############################################## |
273 ## ############################################## |
274 |
274 ## |
275 self.generateRequirementsAct = E5Action( |
275 ## self.generateRequirementsAct = E5Action( |
276 self.tr('Generate Requirements'), |
276 ## self.tr('Generate Requirements'), |
277 self.tr('&Generate Requirements...'), |
277 ## self.tr('&Generate Requirements...'), |
278 0, 0, |
278 ## 0, 0, |
279 self, 'pip_generate_requirements') |
279 ## self, 'pip_generate_requirements') |
280 self.generateRequirementsAct.setStatusTip(self.tr( |
280 ## self.generateRequirementsAct.setStatusTip(self.tr( |
281 'Generate the contents of a requirements file')) |
281 ## 'Generate the contents of a requirements file')) |
282 self.generateRequirementsAct.setWhatsThis(self.tr( |
282 ## self.generateRequirementsAct.setWhatsThis(self.tr( |
283 """<b>Generate Requirements</b>""" |
283 ## """<b>Generate Requirements</b>""" |
284 """<p>This generates the contents of a requirements file.</p>""" |
284 ## """<p>This generates the contents of a requirements file.</p>""" |
285 )) |
285 ## )) |
286 self.generateRequirementsAct.triggered.connect( |
286 ## self.generateRequirementsAct.triggered.connect( |
287 self.__generateRequirements) |
287 ## self.__generateRequirements) |
288 self.actions.append(self.generateRequirementsAct) |
288 ## self.actions.append(self.generateRequirementsAct) |
289 |
289 ## |
290 ## ############################################## |
290 ## ############################################## |
291 ## ## Actions for generating requirements files |
291 ## ## Actions for generating requirements files |
292 ## ############################################## |
292 ## ############################################## |
293 ## |
293 ## |
294 ## self.searchPyPIAct = E5Action( |
294 ## self.searchPyPIAct = E5Action( |
304 ## """ Index.</p>""" |
304 ## """ Index.</p>""" |
305 ## )) |
305 ## )) |
306 ## self.searchPyPIAct.triggered.connect(self.__searchPyPI) |
306 ## self.searchPyPIAct.triggered.connect(self.__searchPyPI) |
307 ## self.actions.append(self.searchPyPIAct) |
307 ## self.actions.append(self.searchPyPIAct) |
308 ## |
308 ## |
309 ############################################## |
309 ## ############################################## |
310 ## Actions for editing configuration files |
310 ## ## Actions for editing configuration files |
311 ############################################## |
311 ## ############################################## |
312 |
312 ## |
313 self.editUserConfigAct = E5Action( |
313 ## self.editUserConfigAct = E5Action( |
314 self.tr('Edit User Configuration'), |
314 ## self.tr('Edit User Configuration'), |
315 self.tr('Edit User Configuration...'), |
315 ## self.tr('Edit User Configuration...'), |
316 0, 0, |
316 ## 0, 0, |
317 self, 'pip_edit_user_config') |
317 ## self, 'pip_edit_user_config') |
318 self.editUserConfigAct.setStatusTip(self.tr( |
318 ## self.editUserConfigAct.setStatusTip(self.tr( |
319 'Open the per user configuration file in an editor')) |
319 ## 'Open the per user configuration file in an editor')) |
320 self.editUserConfigAct.setWhatsThis(self.tr( |
320 ## self.editUserConfigAct.setWhatsThis(self.tr( |
321 """<b>Edit User Configuration</b>""" |
321 ## """<b>Edit User Configuration</b>""" |
322 """<p>This opens the per user configuration file in an editor.""" |
322 ## """<p>This opens the per user configuration file in an editor.""" |
323 """</p>""" |
323 ## """</p>""" |
324 )) |
324 ## )) |
325 self.editUserConfigAct.triggered.connect(self.__editUserConfiguration) |
325 ## self.editUserConfigAct.triggered.connect(self.__editUserConfiguration) |
326 self.actions.append(self.editUserConfigAct) |
326 ## self.actions.append(self.editUserConfigAct) |
327 |
327 ## |
328 self.editVirtualenvConfigAct = E5Action( |
328 ## self.editVirtualenvConfigAct = E5Action( |
329 self.tr('Edit Current Virtualenv Configuration'), |
329 ## self.tr('Edit Current Virtualenv Configuration'), |
330 self.tr('Edit Current Virtualenv Configuration...'), |
330 ## self.tr('Edit Current Virtualenv Configuration...'), |
331 0, 0, |
331 ## 0, 0, |
332 self, 'pip_edit_virtualenv_config') |
332 ## self, 'pip_edit_virtualenv_config') |
333 self.editVirtualenvConfigAct.setStatusTip(self.tr( |
333 ## self.editVirtualenvConfigAct.setStatusTip(self.tr( |
334 'Open the current virtualenv configuration file in an editor')) |
334 ## 'Open the current virtualenv configuration file in an editor')) |
335 self.editVirtualenvConfigAct.setWhatsThis(self.tr( |
335 ## self.editVirtualenvConfigAct.setWhatsThis(self.tr( |
336 """<b>Edit Current Virtualenv Configuration</b>""" |
336 ## """<b>Edit Current Virtualenv Configuration</b>""" |
337 """<p>This opens the current virtualenv configuration file in""" |
337 ## """<p>This opens the current virtualenv configuration file in""" |
338 """ an editor. </p>""" |
338 ## """ an editor. </p>""" |
339 )) |
339 ## )) |
340 self.editVirtualenvConfigAct.triggered.connect( |
340 ## self.editVirtualenvConfigAct.triggered.connect( |
341 self.__editVirtualenvConfiguration) |
341 ## self.__editVirtualenvConfiguration) |
342 self.actions.append(self.editVirtualenvConfigAct) |
342 ## self.actions.append(self.editVirtualenvConfigAct) |
343 |
343 ## |
344 self.pipConfigAct = E5Action( |
344 ## self.pipConfigAct = E5Action( |
345 self.tr('Configure'), |
345 ## self.tr('Configure'), |
346 self.tr('Configure...'), |
346 ## self.tr('Configure...'), |
347 0, 0, self, 'pip_configure') |
347 ## 0, 0, self, 'pip_configure') |
348 self.pipConfigAct.setStatusTip(self.tr( |
348 ## self.pipConfigAct.setStatusTip(self.tr( |
349 'Show the configuration dialog with the Python Package Management' |
349 ## 'Show the configuration dialog with the Python Package Management' |
350 ' page selected' |
350 ## ' page selected' |
351 )) |
351 ## )) |
352 self.pipConfigAct.setWhatsThis(self.tr( |
352 ## self.pipConfigAct.setWhatsThis(self.tr( |
353 """<b>Configure</b>""" |
353 ## """<b>Configure</b>""" |
354 """<p>Show the configuration dialog with the Python Package""" |
354 ## """<p>Show the configuration dialog with the Python Package""" |
355 """ Management page selected.</p>""" |
355 ## """ Management page selected.</p>""" |
356 )) |
356 ## )) |
357 self.pipConfigAct.triggered.connect(self.__pipConfigure) |
357 ## self.pipConfigAct.triggered.connect(self.__pipConfigure) |
358 self.actions.append(self.pipConfigAct) |
358 ## self.actions.append(self.pipConfigAct) |
359 |
359 ## |
360 def initMenu(self): |
360 ## def initMenu(self): |
361 """ |
361 ## """ |
362 Public slot to initialize the menu. |
362 ## Public slot to initialize the menu. |
363 |
363 ## |
364 @return the menu generated |
364 ## @return the menu generated |
365 @rtype QMenu |
365 ## @rtype QMenu |
366 """ |
366 ## """ |
367 ## self.__menus = {} # clear menus references |
367 ## self.__menus = {} # clear menus references |
368 ## |
368 ## |
369 menu = QMenu() |
369 ## menu = QMenu() |
370 ## menu.setTearOffEnabled(True) |
370 ## menu.setTearOffEnabled(True) |
371 ## menu.setIcon(UI.PixmapCache.getIcon("pypi.png")) |
371 ## menu.setIcon(UI.PixmapCache.getIcon("pypi.png")) |
372 ## |
372 ## |
373 ## menu.addAction(self.selectEnvironmentAct) |
373 ## menu.addAction(self.selectEnvironmentAct) |
374 ## menu.addSeparator() |
374 ## menu.addSeparator() |
375 ## menu.addAction(self.listPackagesAct) |
375 ## menu.addAction(self.listPackagesAct) |
376 ## menu.addAction(self.listUptodatePackagesAct) |
376 ## menu.addAction(self.listUptodatePackagesAct) |
377 ## menu.addAction(self.listOutdatedPackagesAct) |
377 ## menu.addAction(self.listOutdatedPackagesAct) |
378 ## menu.addSeparator() |
378 ## menu.addSeparator() |
379 menu.addAction(self.installPipAct) |
379 ## menu.addAction(self.installPipAct) |
380 menu.addSeparator() |
380 ## menu.addSeparator() |
381 menu.addAction(self.installPackagesAct) |
381 ## menu.addAction(self.installPackagesAct) |
382 menu.addAction(self.installLocalPackageAct) |
382 ## menu.addAction(self.installLocalPackageAct) |
383 menu.addAction(self.installRequirementsAct) |
383 ## menu.addAction(self.installRequirementsAct) |
384 menu.addSeparator() |
384 ## menu.addSeparator() |
385 menu.addAction(self.upgradePipAct) |
385 ## menu.addAction(self.upgradePipAct) |
386 ## menu.addAction(self.upgradePackagesAct) |
386 ## menu.addAction(self.upgradePackagesAct) |
387 menu.addSeparator() |
387 ## menu.addSeparator() |
388 ## menu.addAction(self.uninstallPackagesAct) |
388 ## menu.addAction(self.uninstallPackagesAct) |
389 menu.addAction(self.uninstallRequirementsAct) |
389 ## menu.addAction(self.uninstallRequirementsAct) |
390 menu.addSeparator() |
390 ## menu.addSeparator() |
391 menu.addAction(self.generateRequirementsAct) |
391 ## menu.addAction(self.generateRequirementsAct) |
392 menu.addSeparator() |
392 ## menu.addSeparator() |
393 ## menu.addAction(self.searchPyPIAct) |
393 ## menu.addAction(self.searchPyPIAct) |
394 ## menu.addSeparator() |
394 ## menu.addSeparator() |
395 menu.addAction(self.repairPipAct) |
395 ## menu.addAction(self.repairPipAct) |
396 menu.addSeparator() |
396 ## menu.addSeparator() |
397 menu.addAction(self.editUserConfigAct) |
397 ## menu.addAction(self.editUserConfigAct) |
398 menu.addAction(self.editVirtualenvConfigAct) |
398 ## menu.addAction(self.editVirtualenvConfigAct) |
399 menu.addSeparator() |
399 ## menu.addSeparator() |
400 menu.addAction(self.pipConfigAct) |
400 ## menu.addAction(self.pipConfigAct) |
401 |
401 ## |
402 ## self.__menus["main"] = menu |
402 ## self.__menus["main"] = menu |
403 ## |
403 ## |
404 menu.aboutToShow.connect(self.__aboutToShowMenu) |
404 ## menu.aboutToShow.connect(self.__aboutToShowMenu) |
405 |
405 ## |
406 return menu |
406 ## return menu |
407 |
407 ## |
408 def __aboutToShowMenu(self): |
408 ## def __aboutToShowMenu(self): |
409 """ |
409 ## """ |
410 Private slot to set the action enabled status. |
410 ## Private slot to set the action enabled status. |
411 """ |
411 ## """ |
412 enable = bool(Preferences.getPip("CurrentEnvironment")) |
412 ## enable = bool(Preferences.getPip("CurrentEnvironment")) |
413 for act in self.actions: |
413 ## for act in self.actions: |
414 if act not in [self.selectEnvironmentAct, |
414 ## if act not in [self.selectEnvironmentAct, |
415 self.installPipAct, |
415 ## self.installPipAct, |
416 self.editUserConfigAct, |
416 ## self.editUserConfigAct, |
417 self.editVirtualenvConfigAct, |
417 ## self.editVirtualenvConfigAct, |
418 self.pipConfigAct]: |
418 ## self.pipConfigAct]: |
419 act.setEnabled(enable) |
419 ## act.setEnabled(enable) |
420 ## |
420 ## |
421 ## def getMenu(self, name): |
421 ## def getMenu(self, name): |
422 ## """ |
422 ## """ |
423 ## Public method to get a reference to the requested menu. |
423 ## Public method to get a reference to the requested menu. |
424 ## |
424 ## |
686 ## self, "outdated", Preferences.getPip("PipSearchIndex"), |
687 ## self, "outdated", Preferences.getPip("PipSearchIndex"), |
687 ## self.tr("Outdated Packages")) |
688 ## self.tr("Outdated Packages")) |
688 ## self.__listOutdatedDialog.show() |
689 ## self.__listOutdatedDialog.show() |
689 ## self.__listOutdatedDialog.start() |
690 ## self.__listOutdatedDialog.start() |
690 ## |
691 ## |
691 def __editUserConfiguration(self): |
692 ## def __editUserConfiguration(self): |
692 """ |
693 ## """ |
693 Private slot to edit the user configuration. |
694 ## Private slot to edit the user configuration. |
694 """ |
695 ## """ |
695 self.__editConfiguration() |
696 ## self.__editConfiguration() |
696 |
697 ## |
697 def __editVirtualenvConfiguration(self): |
698 ## def __editVirtualenvConfiguration(self): |
698 """ |
699 ## """ |
699 Private slot to edit the current virtualenv configuration. |
700 ## Private slot to edit the current virtualenv configuration. |
700 """ |
701 ## """ |
701 self.__editConfiguration(virtualenv=True) |
702 ## self.__editConfiguration(virtualenv=True) |
702 |
703 ## |
703 def __editConfiguration(self, virtualenv=False): |
704 ## def __editConfiguration(self, virtualenv=False): |
704 """ |
705 ## """ |
705 Private method to edit a configuration. |
706 ## Private method to edit a configuration. |
706 |
707 ## |
707 @param virtualenv flag indicating to edit the current virtualenv |
708 ## @param virtualenv flag indicating to edit the current virtualenv |
708 configuration file |
709 ## configuration file |
709 @type bool |
710 ## @type bool |
710 """ |
711 ## """ |
711 from QScintilla.MiniEditor import MiniEditor |
712 ## from QScintilla.MiniEditor import MiniEditor |
712 if virtualenv: |
713 ## if virtualenv: |
713 cfgFile = self.__getVirtualenvConfig() |
714 ## cfgFile = self.__getVirtualenvConfig() |
714 if not cfgFile: |
715 ## if not cfgFile: |
715 return |
716 ## return |
716 else: |
717 ## else: |
717 cfgFile = self.__getUserConfig() |
718 ## cfgFile = self.__getUserConfig() |
718 cfgDir = os.path.dirname(cfgFile) |
719 ## cfgDir = os.path.dirname(cfgFile) |
719 if not cfgDir: |
720 ## if not cfgDir: |
720 E5MessageBox.critical( |
721 ## E5MessageBox.critical( |
721 None, |
722 ## None, |
722 self.tr("Edit Configuration"), |
723 ## self.tr("Edit Configuration"), |
723 self.tr("""No valid configuration path determined.""" |
724 ## self.tr("""No valid configuration path determined.""" |
724 """ Is a virtual environment selected? Aborting""")) |
725 ## """ Is a virtual environment selected? Aborting""")) |
725 return |
726 ## return |
726 |
727 ## |
727 try: |
728 ## try: |
728 if not os.path.isdir(cfgDir): |
729 ## if not os.path.isdir(cfgDir): |
729 os.makedirs(cfgDir) |
730 ## os.makedirs(cfgDir) |
730 except OSError: |
731 ## except OSError: |
731 E5MessageBox.critical( |
732 ## E5MessageBox.critical( |
732 None, |
733 ## None, |
733 self.tr("Edit Configuration"), |
734 ## self.tr("Edit Configuration"), |
734 self.tr("""No valid configuration path determined.""" |
735 ## self.tr("""No valid configuration path determined.""" |
735 """ Is a virtual environment selected? Aborting""")) |
736 ## """ Is a virtual environment selected? Aborting""")) |
736 return |
737 ## return |
737 |
738 ## |
738 if not os.path.exists(cfgFile): |
739 ## if not os.path.exists(cfgFile): |
739 try: |
740 ## try: |
740 f = open(cfgFile, "w") |
741 ## f = open(cfgFile, "w") |
741 f.write("[global]\n") |
742 ## f.write("[global]\n") |
742 f.close() |
743 ## f.close() |
743 except (IOError, OSError): |
744 ## except (IOError, OSError): |
744 # ignore these |
745 ## # ignore these |
745 pass |
746 ## pass |
746 |
747 ## |
747 # check, if the destination is writeable |
748 ## # check, if the destination is writeable |
748 if not os.access(cfgFile, os.W_OK): |
749 ## if not os.access(cfgFile, os.W_OK): |
749 E5MessageBox.critical( |
750 ## E5MessageBox.critical( |
750 None, |
751 ## None, |
751 self.tr("Edit Configuration"), |
752 ## self.tr("Edit Configuration"), |
752 self.tr("""No valid configuartion path determined.""" |
753 ## self.tr("""No valid configuartion path determined.""" |
753 """ Is a virtual environment selected? Aborting""")) |
754 ## """ Is a virtual environment selected? Aborting""")) |
754 return |
755 ## return |
755 |
756 ## |
756 self.__editor = MiniEditor(cfgFile, "Properties") |
757 ## self.__editor = MiniEditor(cfgFile, "Properties") |
757 self.__editor.show() |
758 ## self.__editor.show() |
758 |
759 ## |
759 def __installPip(self, userSite=False): |
760 def installPip(self, venvName, userSite=False): |
760 """ |
761 """ |
761 Private slot to install pip. |
762 Public method to install pip. |
762 |
763 |
|
764 @param venvName name of the environment to install pip into |
|
765 @type str |
763 @param userSite flag indicating an install to the user install |
766 @param userSite flag indicating an install to the user install |
764 directory |
767 directory |
765 @type bool |
768 @type bool |
766 """ |
769 """ |
767 from .PipSelectionDialog import PipSelectionDialog |
|
768 dlg = PipSelectionDialog(self) |
|
769 if dlg.exec_() != QDialog.Accepted: |
|
770 return |
|
771 |
|
772 venvName, userSite = dlg.getData() |
|
773 interpreter = self.getVirtualenvInterpreter(venvName) |
770 interpreter = self.getVirtualenvInterpreter(venvName) |
774 if not interpreter: |
771 if not interpreter: |
775 return |
772 return |
776 |
773 |
777 dia = PipDialog(self.tr('Install PIP')) |
774 dia = PipDialog(self.tr('Install PIP')) |
792 |
789 |
793 res = dia.startProcesses(commands) |
790 res = dia.startProcesses(commands) |
794 if res: |
791 if res: |
795 dia.exec_() |
792 dia.exec_() |
796 |
793 |
|
794 ## @pyqtSlot() |
|
795 ## def upgradePip(self, venvName="", userSite=False): |
|
796 ## """ |
|
797 ## Public method to upgrade pip itself. |
|
798 ## |
|
799 ## @param venvName name of the virtual environment to be used |
|
800 ## @type str |
|
801 ## @param userSite flag indicating an install to the user install |
|
802 ## directory |
|
803 ## @type bool |
|
804 ## @return flag indicating a successful execution |
|
805 ## @rtype bool |
|
806 ## """ |
|
807 ## # Upgrading pip needs to be treated specially because |
|
808 ## # it must be done using the python executable |
|
809 ## |
|
810 ## if not venvName: |
|
811 ## from .PipSelectionDialog import PipSelectionDialog |
|
812 ## dlg = PipSelectionDialog(self) |
|
813 ## if dlg.exec_() != QDialog.Accepted: |
|
814 ## return |
|
815 ## |
|
816 ## venvName, userSite = dlg.getData() |
|
817 ## |
|
818 ## interpreter = self.getVirtualenvInterpreter(venvName) |
|
819 ## if not interpreter: |
|
820 ## return |
|
821 ## |
|
822 ## if Preferences.getPip("PipSearchIndex"): |
|
823 ## indexUrl = Preferences.getPip("PipSearchIndex") + "/simple" |
|
824 ## args = ["-m", "pip", "install", "--index-url", indexUrl, |
|
825 ## "--upgrade"] |
|
826 ## else: |
|
827 ## args = ["-m", "pip", "install", "--upgrade"] |
|
828 ## if userSite: |
|
829 ## args.append("--user") |
|
830 ## args.append("pip") |
|
831 ## |
|
832 ## dia = PipDialog(self.tr('Upgrade PIP')) |
|
833 ## res = dia.startProcess(interpreter, args) |
|
834 ## if res: |
|
835 ## dia.exec_() |
|
836 ## return res |
|
837 ## |
797 @pyqtSlot() |
838 @pyqtSlot() |
798 def upgradePip(self, venvName="", userSite=False): |
839 def repairPip(self, venvName): |
799 """ |
840 """ |
800 Public method to upgrade pip itself. |
841 Public method to repair the pip installation. |
801 |
842 |
802 @param venvName name of the virtual environment to be used |
843 @param venvName name of the environment to install pip into |
803 @type str |
844 @type str |
804 @param userSite flag indicating an install to the user install |
|
805 directory |
|
806 @type bool |
|
807 @return flag indicating a successful execution |
845 @return flag indicating a successful execution |
808 @rtype bool |
846 @rtype bool |
809 """ |
847 """ |
810 # Upgrading pip needs to be treated specially because |
|
811 # it must be done using the python executable |
|
812 |
|
813 if not venvName: |
|
814 from .PipSelectionDialog import PipSelectionDialog |
|
815 dlg = PipSelectionDialog(self) |
|
816 if dlg.exec_() != QDialog.Accepted: |
|
817 return |
|
818 |
|
819 venvName, userSite = dlg.getData() |
|
820 |
|
821 interpreter = self.getVirtualenvInterpreter(venvName) |
|
822 if not interpreter: |
|
823 return |
|
824 |
|
825 if Preferences.getPip("PipSearchIndex"): |
|
826 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple" |
|
827 args = ["-m", "pip", "install", "--index-url", indexUrl, |
|
828 "--upgrade"] |
|
829 else: |
|
830 args = ["-m", "pip", "install", "--upgrade"] |
|
831 if userSite: |
|
832 args.append("--user") |
|
833 args.append("pip") |
|
834 |
|
835 dia = PipDialog(self.tr('Upgrade PIP')) |
|
836 res = dia.startProcess(interpreter, args) |
|
837 if res: |
|
838 dia.exec_() |
|
839 return res |
|
840 |
|
841 @pyqtSlot() |
|
842 def __repairPip(self): |
|
843 """ |
|
844 Private method to repair the pip installation. |
|
845 |
|
846 @return flag indicating a successful execution |
|
847 @rtype bool |
|
848 """ |
|
849 from .PipSelectionDialog import PipSelectionDialog |
|
850 dlg = PipSelectionDialog(self) |
|
851 if dlg.exec_() != QDialog.Accepted: |
|
852 return False |
|
853 |
|
854 venvName, userSite = dlg.getData() |
|
855 interpreter = self.getVirtualenvInterpreter(venvName) |
848 interpreter = self.getVirtualenvInterpreter(venvName) |
856 if not interpreter: |
849 if not interpreter: |
857 return |
850 return |
858 |
851 |
859 # python -m pip install --ignore-installed pip |
852 # python -m pip install --ignore-installed pip |