eric7/PipInterface/PipLicensesDialog.py

branch
eric7
changeset 9103
8ac26b4c4316
parent 9014
cdf68c00881d
child 9108
19a57544f32c
equal deleted inserted replaced
9102:78dc7b63a06d 9103:8ac26b4c4316
51 self.setupUi(self) 51 self.setupUi(self)
52 52
53 self.__pip = pip 53 self.__pip = pip
54 self.__environment = environment 54 self.__environment = environment
55 55
56 self.__allFilter = self.tr("<All>")
57
56 self.__saveCSVButton = self.buttonBox.addButton( 58 self.__saveCSVButton = self.buttonBox.addButton(
57 self.tr("Save as CSV..."), QDialogButtonBox.ButtonRole.ActionRole) 59 self.tr("Save as CSV..."), QDialogButtonBox.ButtonRole.ActionRole)
58 self.__saveCSVButton.clicked.connect(self.__saveAsCSV) 60 self.__saveCSVButton.clicked.connect(self.__saveAsCSV)
59 61
60 self.buttonBox.button( 62 self.buttonBox.button(
72 )) 74 ))
73 else: 75 else:
74 # That should never happen; play it safe. 76 # That should never happen; play it safe.
75 self.environmentLabel.setText(self.tr("No environment specified.")) 77 self.environmentLabel.setText(self.tr("No environment specified."))
76 78
79 self.licenseFilterComboBox.currentTextChanged.connect(
80 self.__filterPackagesByLicense)
81
77 self.__refreshLicenses() 82 self.__refreshLicenses()
78 83
79 @pyqtSlot() 84 @pyqtSlot()
80 def __refreshLicenses(self): 85 def __refreshLicenses(self):
81 """ 86 """
82 Private slot to refresh the license lists. 87 Private slot to refresh the license lists.
83 """ 88 """
84 with EricOverrideCursor(): 89 with EricOverrideCursor():
85 self.licensesList.clear() 90 self.licensesList.clear()
86 self.summaryList.clear() 91 self.summaryList.clear()
92 self.licenseFilterComboBox.clear()
93
94 licensesForFilter = set()
87 95
88 # step 1: show the licenses per package 96 # step 1: show the licenses per package
89 self.licensesList.setUpdatesEnabled(False) 97 self.licensesList.setUpdatesEnabled(False)
90 licenses = self.__pip.getLicenses( 98 licenses = self.__pip.getLicenses(
91 self.__environment, 99 self.__environment,
116 for lic in licenses: 124 for lic in licenses:
117 QTreeWidgetItem(self.summaryList, [ 125 QTreeWidgetItem(self.summaryList, [
118 "{0:4d}".format(lic["Count"]), 126 "{0:4d}".format(lic["Count"]),
119 lic["License"].replace("; ", "\n"), 127 lic["License"].replace("; ", "\n"),
120 ]) 128 ])
129 licensesForFilter |= set(lic["License"].split("; "))
121 130
122 self.summaryList.sortItems( 131 self.summaryList.sortItems(
123 PipLicensesDialog.SummaryLicenseColumn, 132 PipLicensesDialog.SummaryLicenseColumn,
124 Qt.SortOrder.AscendingOrder) 133 Qt.SortOrder.AscendingOrder)
125 for col in range(self.summaryList.columnCount()): 134 for col in range(self.summaryList.columnCount()):
126 self.summaryList.resizeColumnToContents(col) 135 self.summaryList.resizeColumnToContents(col)
127 self.summaryList.setUpdatesEnabled(True) 136 self.summaryList.setUpdatesEnabled(True)
137
138 self.licenseFilterComboBox.addItems(
139 [self.__allFilter] + sorted(licensesForFilter))
128 140
129 enable = bool(self.licensesList.topLevelItemCount()) 141 enable = bool(self.licensesList.topLevelItemCount())
130 self.__saveCSVButton.setEnabled(enable) 142 self.__saveCSVButton.setEnabled(enable)
143
144 @pyqtSlot(str)
145 def __filterPackagesByLicense(self, license):
146 """
147 Private slot to filter the list of packages by license.
148
149 @param license license name
150 @type str
151 """
152 for row in range(self.licensesList.topLevelItemCount()):
153 itm = self.licensesList.topLevelItem(row)
154 if license == self.__allFilter:
155 itm.setHidden(False)
156 else:
157 itm.setHidden(license not in itm.text(
158 PipLicensesDialog.LicensesLicenseColumn
159 ))
131 160
132 @pyqtSlot() 161 @pyqtSlot()
133 def __saveAsCSV(self): 162 def __saveAsCSV(self):
134 """ 163 """
135 Private slot to save the license information as a CSV file. 164 Private slot to save the license information as a CSV file.

eric ide

mercurial