eric7/VCS/StatusWidget.py

branch
eric7
changeset 8626
fa4ec5a82698
parent 8624
5192a2592324
child 8627
ca3114b95866
equal deleted inserted replaced
8625:d52ae1294878 8626:fa4ec5a82698
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):

eric ide

mercurial