24 from E5Network.E5XmlRpcClient import E5XmlRpcClient |
24 from E5Network.E5XmlRpcClient import E5XmlRpcClient |
25 |
25 |
26 from .Ui_PipPackagesWidget import Ui_PipPackagesWidget |
26 from .Ui_PipPackagesWidget import Ui_PipPackagesWidget |
27 |
27 |
28 import UI.PixmapCache |
28 import UI.PixmapCache |
|
29 import Globals |
29 |
30 |
30 |
31 |
31 class PipPackagesWidget(QWidget, Ui_PipPackagesWidget): |
32 class PipPackagesWidget(QWidget, Ui_PipPackagesWidget): |
32 """ |
33 """ |
33 Class implementing the pip packages management widget. |
34 Class implementing the pip packages management widget. |
151 if venvName: |
152 if venvName: |
152 available = len(self.packagesList.findItems( |
153 available = len(self.packagesList.findItems( |
153 "pip", Qt.MatchExactly | Qt.MatchCaseSensitive)) == 1 |
154 "pip", Qt.MatchExactly | Qt.MatchCaseSensitive)) == 1 |
154 |
155 |
155 return available |
156 return available |
|
157 |
|
158 def __availablePipVersion(self): |
|
159 """ |
|
160 Private method to get the pip version of the selected environment. |
|
161 |
|
162 @return tuple containing the version number or tuple with all zeros |
|
163 in case pip is not available |
|
164 @rtype tuple of int |
|
165 """ |
|
166 pipVersionTuple = (0, 0, 0) |
|
167 venvName = self.environmentsComboBox.currentText() |
|
168 if venvName: |
|
169 pipList = self.packagesList.findItems( |
|
170 "pip", Qt.MatchExactly | Qt.MatchCaseSensitive) |
|
171 if len(pipList) > 0: |
|
172 pipVersionTuple = Globals.versionToTuple(pipList[0].text(1)) |
|
173 |
|
174 return pipVersionTuple |
156 |
175 |
157 ####################################################################### |
176 ####################################################################### |
158 ## Slots handling widget signals below |
177 ## Slots handling widget signals below |
159 ####################################################################### |
178 ####################################################################### |
160 |
179 |
972 """ |
991 """ |
973 Private slot to set the action enabled status. |
992 Private slot to set the action enabled status. |
974 """ |
993 """ |
975 enable = bool(self.environmentsComboBox.currentText()) |
994 enable = bool(self.environmentsComboBox.currentText()) |
976 enablePip = self.__isPipAvailable() |
995 enablePip = self.__isPipAvailable() |
|
996 enablePipCache = self.__availablePipVersion() >= (20, 1, 0) |
977 |
997 |
978 self.__installPipAct.setEnabled(not enablePip) |
998 self.__installPipAct.setEnabled(not enablePip) |
979 self.__installPipUserAct.setEnabled(not enablePip) |
999 self.__installPipUserAct.setEnabled(not enablePip) |
980 self.__repairPipAct.setEnabled(enablePip) |
1000 self.__repairPipAct.setEnabled(enablePip) |
981 |
1001 |
984 |
1004 |
985 self.__installRequirementsAct.setEnabled(enablePip) |
1005 self.__installRequirementsAct.setEnabled(enablePip) |
986 self.__uninstallRequirementsAct.setEnabled(enablePip) |
1006 self.__uninstallRequirementsAct.setEnabled(enablePip) |
987 self.__generateRequirementsAct.setEnabled(enablePip) |
1007 self.__generateRequirementsAct.setEnabled(enablePip) |
988 |
1008 |
989 self.__cacheInfoAct.setEnabled(enablePip) |
1009 self.__cacheInfoAct.setEnabled(enablePipCache) |
990 self.__cacheShowListAct.setEnabled(enablePip) |
1010 self.__cacheShowListAct.setEnabled(enablePipCache) |
991 self.__cacheRemoveAct.setEnabled(enablePip) |
1011 self.__cacheRemoveAct.setEnabled(enablePipCache) |
992 self.__cachePurgeAct.setEnabled(enablePip) |
1012 self.__cachePurgeAct.setEnabled(enablePipCache) |
993 |
1013 |
994 self.__editVirtualenvConfigAct.setEnabled(enable) |
1014 self.__editVirtualenvConfigAct.setEnabled(enable) |
995 |
1015 |
996 @pyqtSlot() |
1016 @pyqtSlot() |
997 def __installPip(self): |
1017 def __installPip(self): |