111 self.__statusList.setSelectionMode( |
111 self.__statusList.setSelectionMode( |
112 QAbstractItemView.SelectionMode.ExtendedSelection) |
112 QAbstractItemView.SelectionMode.ExtendedSelection) |
113 self.__statusList.itemSelectionChanged.connect( |
113 self.__statusList.itemSelectionChanged.connect( |
114 self.__updateEnabledStates) |
114 self.__updateEnabledStates) |
115 self.__statusList.itemDoubleClicked.connect(self.__itemDoubleClicked) |
115 self.__statusList.itemDoubleClicked.connect(self.__itemDoubleClicked) |
|
116 self.__statusList.itemChanged.connect(self.__updateEnabledStates) |
116 self.__layout.addWidget(self.__statusList) |
117 self.__layout.addWidget(self.__statusList) |
117 ################################################################### |
118 ################################################################### |
118 |
119 |
119 # create the Quick Commit area |
120 # create the Quick Commit area |
120 self.__quickCommitGroup = QGroupBox(self.tr("Quick Commit"), self) |
121 self.__quickCommitGroup = QGroupBox(self.tr("Quick Commit"), self) |
343 |
344 |
344 self.__commitToggleButton.setEnabled(modified) |
345 self.__commitToggleButton.setEnabled(modified) |
345 self.__commitButton.setEnabled(commitable) |
346 self.__commitButton.setEnabled(commitable) |
346 self.__addButton.setEnabled(unversioned) |
347 self.__addButton.setEnabled(unversioned) |
347 |
348 |
348 self.__quickCommitGroup.setEnabled(True) |
349 self.__quickCommitGroup.setEnabled(commitable) |
349 |
350 |
350 @pyqtSlot(dict) |
351 @pyqtSlot(dict) |
351 def __processStatusData(self, data): |
352 def __processStatusData(self, data): |
352 """ |
353 """ |
353 Private slot to process the status data emitted by the project. |
354 Private slot to process the status data emitted by the project. |
368 </ul> |
369 </ul> |
369 |
370 |
370 @param data dictionary containing the status data |
371 @param data dictionary containing the status data |
371 @type dict |
372 @type dict |
372 """ |
373 """ |
373 self.__reset() |
374 # step 1: remember all currently checked entries |
374 |
375 wasUnpopulated = self.__statusList.count() == 0 |
|
376 checkedEntries = [itm.text() for itm in self.__getCommitableItems()] |
|
377 selectedEntries = [itm.text() |
|
378 for itm in self.__statusList.selectedItems()] |
|
379 |
|
380 # step 2: clear the list and re-populate it with new data |
|
381 self.__statusList.clear() |
|
382 |
|
383 block = self.__statusList.blockSignals(True) |
375 for name, status in data.items(): |
384 for name, status in data.items(): |
376 if status: |
385 if status: |
377 itm = QListWidgetItem(name, self.__statusList) |
386 itm = QListWidgetItem(name, self.__statusList) |
378 with contextlib.suppress(KeyError): |
387 with contextlib.suppress(KeyError): |
379 itm.setToolTip(self.__statusTexts[status]) |
388 itm.setToolTip(self.__statusTexts[status]) |
380 itm.setIcon(UI.PixmapCache.getIcon( |
389 itm.setIcon(UI.PixmapCache.getIcon( |
381 self.__statusIcons[status])) |
390 self.__statusIcons[status])) |
382 itm.setData(self.StatusDataRole, status) |
391 itm.setData(self.StatusDataRole, status) |
383 if status in "AMOR": |
392 if status in "AMOR": |
384 itm.setFlags( |
393 itm.setFlags( |
385 itm.flags() | Qt.ItemFlag.ItemIsUserCheckable) |
394 itm.flags() | Qt.ItemFlag.ItemIsUserCheckable) |
386 itm.setCheckState(Qt.CheckState.Checked) |
395 if wasUnpopulated or name in checkedEntries: |
|
396 itm.setCheckState(Qt.CheckState.Checked) |
|
397 else: |
|
398 itm.setCheckState(Qt.CheckState.Unchecked) |
387 else: |
399 else: |
388 itm.setFlags( |
400 itm.setFlags( |
389 itm.flags() & ~Qt.ItemFlag.ItemIsUserCheckable) |
401 itm.flags() & ~Qt.ItemFlag.ItemIsUserCheckable) |
|
402 itm.setSelected(name in selectedEntries) |
390 |
403 |
391 self.__statusList.sortItems(Qt.SortOrder.AscendingOrder) |
404 self.__statusList.sortItems(Qt.SortOrder.AscendingOrder) |
|
405 self.__statusList.blockSignals(block) |
392 |
406 |
393 self.__updateEnabledStates() |
407 self.__updateEnabledStates() |
394 |
408 |
395 @pyqtSlot() |
409 @pyqtSlot() |
396 def __toggleCheckMark(self): |
410 def __toggleCheckMark(self): |