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. |