Mon, 18 Feb 2019 19:49:43 +0100
PipInterface: continued with the pip interface widget.
# -*- coding: utf-8 -*- # Copyright (c) 2019 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing the pip packages management widget. """ from __future__ import unicode_literals from PyQt5.QtCore import pyqtSlot, Qt from PyQt5.QtGui import QCursor from PyQt5.QtWidgets import QWidget, QToolButton, QApplication from .Ui_PipPackagesWidget import Ui_PipPackagesWidget import UI.PixmapCache from .Pip import Pip class PipPackagesWidget(QWidget, Ui_PipPackagesWidget): """ Class documentation goes here. """ def __init__(self, parent=None): """ Constructor @param parent reference to the parent widget @type QWidget """ super(PipPackagesWidget, self).__init__(parent) self.setupUi(self) self.pipMenuButton.setObjectName( "navigation_supermenu_button") self.pipMenuButton.setIcon(UI.PixmapCache.getIcon("superMenu")) self.pipMenuButton.setToolTip(self.tr("pip Menu")) self.pipMenuButton.setPopupMode(QToolButton.InstantPopup) self.pipMenuButton.setToolButtonStyle(Qt.ToolButtonIconOnly) self.pipMenuButton.setFocusPolicy(Qt.NoFocus) self.pipMenuButton.setAutoRaise(True) self.pipMenuButton.setShowMenuInside(True) self.searchToggleButton.setIcon(UI.PixmapCache.getIcon("find")) self.__pip = Pip(self) self.__initPipMenu() self.__populateEnvironments() self.__updateActionButtons() self.statusLabel.hide() self.searchWidget.hide() def __initPipMenu(self): """ Private method to create the super menu and attach it to the super menu button. """ self.__pip.initActions() self.__pipMenu = self.__pip.initMenu() self.pipMenuButton.setMenu(self.__pipMenu) def __populateEnvironments(self): """ Private method to get a list of environments and populate the selector. """ self.environmentsComboBox.addItem("") projectVenv = self.__pip.getProjectEnvironmentString() if projectVenv: self.environmentsComboBox.addItem(projectVenv) self.environmentsComboBox.addItems(self.__pip.getVirtualenvNames()) def __updateActionButtons(self): """ Private method to set the state of the action buttons. """ # TODO: not yet implemented pass ####################################################################### ## Slots handling widget signals below ####################################################################### @pyqtSlot(int) def on_environmentsComboBox_currentIndexChanged(self, index): """ Private slot handling the selection of a conda environment. @param index index of the selected conda environment @type int """ self.packagesList.clear() venvName = self.environmentsComboBox.currentText() if venvName: interpreter = self.__pip.getVirtualenvInterpreter(venvName) if interpreter: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.statusLabel.show() self.statusLabel.setText( self.tr("Getting installed packages...")) QApplication.processEvents() # 1. populate with installed packages pass # TODO: add code to list installed # 2. update with update information pass # TODO: add code to list outdated self.packagesList.sortItems(0, Qt.AscendingOrder) for col in range(self.packagesList.columnCount()): self.packagesList.resizeColumnToContents(col) self.packagesList.setUpdatesEnabled(True) QApplication.restoreOverrideCursor() self.statusLabel.hide() self.__updateActionButtons() self.__updateSearchActionButtons() ####################################################################### ## Search widget related methods below ####################################################################### def __updateSearchActionButtons(self): """ Private method to update the action button states of the search widget. """ # TODO: adjust this like search dialog enable = len(self.searchResultList.selectedItems()) == 1 self.installButton.setEnabled( enable and self.environmentsComboBox.currentIndex() > 0) self.showDetailsButton.setEnabled( enable and bool(self.searchResultList.selectedItems()[0].parent())) @pyqtSlot(bool) def on_searchToggleButton_toggled(self, checked): """ Private slot to togle the search widget. @param checked state of the search widget button @type bool """ self.searchWidget.setVisible(checked) if checked: self.searchEdit.setFocus(Qt.OtherFocusReason) self.searchEdit.selectAll() self.__updateSearchActionButtons() ####################################################################### ## Menu related methods below #######################################################################