--- a/src/eric7/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesListDialog.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesListDialog.py Wed Jul 13 14:55:47 2022 +0200 @@ -8,9 +8,7 @@ """ from PyQt6.QtCore import Qt, QCoreApplication -from PyQt6.QtWidgets import ( - QDialog, QDialogButtonBox, QHeaderView, QTreeWidgetItem -) +from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QHeaderView, QTreeWidgetItem from .Ui_HgQueuesListDialog import Ui_HgQueuesListDialog @@ -20,63 +18,61 @@ Class implementing a dialog to show a list of applied and unapplied patches. """ + def __init__(self, vcs, parent=None): """ Constructor - + @param vcs reference to the vcs object @param parent parent widget (QWidget) """ super().__init__(parent) self.setupUi(self) self.setWindowFlags(Qt.WindowType.Window) - - self.buttonBox.button( - QDialogButtonBox.StandardButton.Close).setEnabled(False) - self.buttonBox.button( - QDialogButtonBox.StandardButton.Cancel).setDefault(True) - + + self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(False) + self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault(True) + self.vcs = vcs self.__hgClient = vcs.getClient() - - self.patchesList.header().setSortIndicator( - 0, Qt.SortOrder.AscendingOrder) - + + self.patchesList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder) + self.__statusDict = { "A": self.tr("applied"), "U": self.tr("not applied"), "G": self.tr("guarded"), "D": self.tr("missing"), } - + self.show() QCoreApplication.processEvents() - + def closeEvent(self, e): """ Protected slot implementing a close event handler. - + @param e close event (QCloseEvent) """ if self.__hgClient.isExecuting(): self.__hgClient.cancel() - + e.accept() - + def start(self): """ Public slot to start the list command. """ self.errorGroup.hide() self.activateWindow() - + self.__getSeries() - + def __getSeries(self, missing=False): """ Private slot to get the list of applied, unapplied and guarded patches and patches missing in the series file. - + @param missing flag indicating to get the patches missing in the series file (boolean) """ @@ -84,13 +80,13 @@ self.__mode = "missing" else: self.__mode = "qseries" - + args = self.vcs.initCommand("qseries") - args.append('--summary') - args.append('--verbose') + args.append("--summary") + args.append("--verbose") if missing: - args.append('--missing') - + args.append("--missing") + out, err = self.__hgClient.runcommand(args) if err: self.__showError(err) @@ -106,15 +102,15 @@ self.__getTop() else: self.__finish() - + def __getTop(self): """ Private slot to get patch at the top of the stack. """ self.__mode = "qtop" - + args = self.vcs.initCommand("qtop") - + out, err = self.__hgClient.runcommand(args) if err: self.__showError(err) @@ -124,65 +120,59 @@ if self.__hgClient.wasCanceled(): break self.__finish() - + def __finish(self): """ Private slot called when the process finished or the user pressed the button. """ - self.buttonBox.button( - QDialogButtonBox.StandardButton.Close).setEnabled(True) - self.buttonBox.button( - QDialogButtonBox.StandardButton.Cancel).setEnabled(False) - self.buttonBox.button( - QDialogButtonBox.StandardButton.Close).setDefault(True) - self.buttonBox.button( - QDialogButtonBox.StandardButton.Close).setFocus( - Qt.FocusReason.OtherFocusReason) - + self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True) + self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(False) + self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True) + self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setFocus( + Qt.FocusReason.OtherFocusReason + ) + if self.patchesList.topLevelItemCount() == 0: # no patches present - self.__generateItem( - 0, "", self.tr("no patches found"), "", True) + self.__generateItem(0, "", self.tr("no patches found"), "", True) self.__resizeColumns() self.__resort() - + def on_buttonBox_clicked(self, button): """ Private slot called by a button of the button box clicked. - + @param button button that was clicked (QAbstractButton) """ - if button == self.buttonBox.button( - QDialogButtonBox.StandardButton.Close - ): + if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close): self.close() - elif button == self.buttonBox.button( - QDialogButtonBox.StandardButton.Cancel - ): + elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel): self.__mode = "" self.__hgClient.cancel() - + def __resort(self): """ Private method to resort the tree. """ self.patchesList.sortItems( self.patchesList.sortColumn(), - self.patchesList.header().sortIndicatorOrder()) - + self.patchesList.header().sortIndicatorOrder(), + ) + def __resizeColumns(self): """ Private method to resize the list columns. """ self.patchesList.header().resizeSections( - QHeaderView.ResizeMode.ResizeToContents) + QHeaderView.ResizeMode.ResizeToContents + ) self.patchesList.header().setStretchLastSection(True) - + def __generateItem(self, index, status, name, summary, error=False): """ Private method to generate a patch item in the list of patches. - + @param index index of the patch (integer, -1 for missing) @param status status of the patch (string) @param name name of the patch (string) @@ -190,12 +180,7 @@ @param error flag indicating an error entry (boolean) """ if error: - itm = QTreeWidgetItem(self.patchesList, [ - "", - name, - "", - summary - ]) + itm = QTreeWidgetItem(self.patchesList, ["", name, "", summary]) else: if index == -1: index = "" @@ -216,29 +201,28 @@ # missing for column in range(itm.columnCount()): itm.setForeground(column, Qt.GlobalColor.red) - + itm.setTextAlignment(0, Qt.AlignmentFlag.AlignRight) itm.setTextAlignment(2, Qt.AlignmentFlag.AlignHCenter) - + def __markTopItem(self, name): """ Private slot to mark the top patch entry. - + @param name name of the patch (string) """ - items = self.patchesList.findItems( - name, Qt.MatchFlag.MatchCaseSensitive, 1) + items = self.patchesList.findItems(name, Qt.MatchFlag.MatchCaseSensitive, 1) if items: itm = items[0] for column in range(itm.columnCount()): font = itm.font(column) font.setBold(True) itm.setFont(column, font) - + def __processOutputLine(self, line): """ Private method to process the lines of output. - + @param line output line to be processed (string) """ if self.__mode == "qtop": @@ -258,11 +242,11 @@ else: return self.__generateItem(index, status, name, summary) - + def __showError(self, out): """ Private slot to show some error. - + @param out error to be shown (string) """ self.errorGroup.show()