--- a/src/eric7/Plugins/VcsPlugins/vcsGit/GitPushDialog.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/Plugins/VcsPlugins/vcsGit/GitPushDialog.py Wed Jul 13 14:55:47 2022 +0200 @@ -17,154 +17,143 @@ """ Class implementing a dialog to enter data for a Push operation. """ + PushColumn = 0 LocalBranchColumn = 1 RemoteBranchColumn = 2 ForceColumn = 3 - + def __init__(self, vcs, repodir, parent=None): """ Constructor - + @param vcs reference to the git object @param repodir directory name of the local repository (string) @param parent reference to the parent widget (QWidget) """ super().__init__(parent) self.setupUi(self) - + self.__vcs = vcs self.__repodir = repodir - + remoteUrlsList = self.__vcs.gitGetRemoteUrlsList(self.__repodir) self.__repos = {name: url for name, url in remoteUrlsList} - - remoteBranches = self.__vcs.gitGetBranchesList(self.__repodir, - remotes=True) + + remoteBranches = self.__vcs.gitGetBranchesList(self.__repodir, remotes=True) self.__remotes = {} for remoteBranch in remoteBranches: repo, branch = remoteBranch.rsplit("/", 2)[-2:] if repo not in self.__remotes: self.__remotes[repo] = [] self.__remotes[repo].append(branch) - - self.__localBranches = self.__vcs.gitGetBranchesList(self.__repodir, - withMaster=True) - + + self.__localBranches = self.__vcs.gitGetBranchesList( + self.__repodir, withMaster=True + ) + self.remotesComboBox.addItems(sorted(self.__repos.keys())) - + for localBranch in self.__localBranches: itm = QTreeWidgetItem(self.branchesTree, ["", localBranch, "", ""]) combo = QComboBox() combo.setEditable(True) - combo.setSizeAdjustPolicy( - QComboBox.SizeAdjustPolicy.AdjustToContents) + combo.setSizeAdjustPolicy(QComboBox.SizeAdjustPolicy.AdjustToContents) self.branchesTree.setItemWidget( - itm, GitPushDialog.RemoteBranchColumn, combo) - + itm, GitPushDialog.RemoteBranchColumn, combo + ) + self.__resizeColumns() - + self.branchesTree.header().setSortIndicator( - GitPushDialog.LocalBranchColumn, Qt.SortOrder.AscendingOrder) - + GitPushDialog.LocalBranchColumn, Qt.SortOrder.AscendingOrder + ) + self.forceWarningLabel.setVisible(False) - + index = self.remotesComboBox.findText("origin") if index == -1: index = 0 self.remotesComboBox.setCurrentIndex(index) - + def __resizeColumns(self): """ Private slot to adjust the column sizes. """ for col in range(self.branchesTree.columnCount()): self.branchesTree.resizeColumnToContents(col) - + @pyqtSlot(str) def on_remotesComboBox_currentTextChanged(self, txt): """ Private slot to handle changes of the selected repository. - + @param txt current text of the combo box (string) """ self.remoteEdit.setText(self.__repos[txt]) - + for row in range(self.branchesTree.topLevelItemCount()): itm = self.branchesTree.topLevelItem(row) localBranch = itm.text(GitPushDialog.LocalBranchColumn) - combo = self.branchesTree.itemWidget( - itm, GitPushDialog.RemoteBranchColumn) + combo = self.branchesTree.itemWidget(itm, GitPushDialog.RemoteBranchColumn) combo.clear() combo.addItems([""] + sorted(self.__remotes[txt])) index = combo.findText(localBranch) if index != -1: combo.setCurrentIndex(index) - itm.setCheckState(GitPushDialog.PushColumn, - Qt.CheckState.Checked) + itm.setCheckState(GitPushDialog.PushColumn, Qt.CheckState.Checked) else: - itm.setCheckState(GitPushDialog.PushColumn, - Qt.CheckState.Unchecked) - itm.setCheckState(GitPushDialog.ForceColumn, - Qt.CheckState.Unchecked) - + itm.setCheckState(GitPushDialog.PushColumn, Qt.CheckState.Unchecked) + itm.setCheckState(GitPushDialog.ForceColumn, Qt.CheckState.Unchecked) + self.__resizeColumns() - + @pyqtSlot(QTreeWidgetItem, int) def on_branchesTree_itemChanged(self, item, column): """ Private slot handling changes of a branch item. - + @param item reference to the changed item (QTreeWidgetItem) @param column changed column (integer) """ if column == GitPushDialog.PushColumn: # step 1: set the item's remote branch, if it is empty - if ( - item.checkState(GitPushDialog.PushColumn) == - Qt.CheckState.Checked and - (self.branchesTree.itemWidget( - item, - GitPushDialog.RemoteBranchColumn - ).currentText() == "") + if item.checkState(GitPushDialog.PushColumn) == Qt.CheckState.Checked and ( + self.branchesTree.itemWidget( + item, GitPushDialog.RemoteBranchColumn + ).currentText() + == "" ): self.branchesTree.itemWidget( - item, GitPushDialog.RemoteBranchColumn).setEditText( - item.text(GitPushDialog.LocalBranchColumn)) - + item, GitPushDialog.RemoteBranchColumn + ).setEditText(item.text(GitPushDialog.LocalBranchColumn)) + # step 2: count checked items checkedItemsCount = 0 for row in range(self.branchesTree.topLevelItemCount()): itm = self.branchesTree.topLevelItem(row) - if ( - itm.checkState(GitPushDialog.PushColumn) == - Qt.CheckState.Checked - ): + if itm.checkState(GitPushDialog.PushColumn) == Qt.CheckState.Checked: checkedItemsCount += 1 if checkedItemsCount == len(self.__localBranches): self.selectAllCheckBox.setCheckState(Qt.CheckState.Checked) elif checkedItemsCount == 0: self.selectAllCheckBox.setCheckState(Qt.CheckState.Unchecked) else: - self.selectAllCheckBox.setCheckState( - Qt.CheckState.PartiallyChecked) - + self.selectAllCheckBox.setCheckState(Qt.CheckState.PartiallyChecked) + elif column == GitPushDialog.ForceColumn: forceItemsCount = 0 for row in range(self.branchesTree.topLevelItemCount()): itm = self.branchesTree.topLevelItem(row) - if ( - itm.checkState(GitPushDialog.ForceColumn) == - Qt.CheckState.Checked - ): + if itm.checkState(GitPushDialog.ForceColumn) == Qt.CheckState.Checked: forceItemsCount += 1 self.forceWarningLabel.setVisible(forceItemsCount > 0) - + @pyqtSlot(int) def on_selectAllCheckBox_stateChanged(self, state): """ Private slot to select/deselect all branch items. - + @param state check state of the check box (Qt.CheckState) """ if state != Qt.CheckState.PartiallyChecked: @@ -172,11 +161,11 @@ itm = self.branchesTree.topLevelItem(row) if itm.checkState(GitPushDialog.PushColumn) != state: itm.setCheckState(GitPushDialog.PushColumn, state) - + def getData(self): """ Public method to get the entered data. - + @return remote name, list of branches to be pushed, a flag indicating to push tags as well, a flag indicating to set tracking information and the push method for submodules @@ -185,20 +174,16 @@ refspecs = [] for row in range(self.branchesTree.topLevelItemCount()): itm = self.branchesTree.topLevelItem(row) - force = ( - itm.checkState(GitPushDialog.ForceColumn) == - Qt.CheckState.Checked - ) - if ( - itm.checkState(GitPushDialog.PushColumn) == - Qt.CheckState.Checked - ): + force = itm.checkState(GitPushDialog.ForceColumn) == Qt.CheckState.Checked + if itm.checkState(GitPushDialog.PushColumn) == Qt.CheckState.Checked: localBranch = itm.text(GitPushDialog.LocalBranchColumn) remoteBranch = self.branchesTree.itemWidget( - itm, GitPushDialog.RemoteBranchColumn).currentText() - refspecs.append("{0}{1}:{2}".format( - "+" if force else "", localBranch, remoteBranch)) - + itm, GitPushDialog.RemoteBranchColumn + ).currentText() + refspecs.append( + "{0}{1}:{2}".format("+" if force else "", localBranch, remoteBranch) + ) + # submodule stuff (--recurse-submodules=) if self.submodulesOnDemandButton.isChecked(): submodulesPush = "on-demand" @@ -208,7 +193,7 @@ submodulesPush = "only" else: submodulesPush = "no" - + return ( self.remotesComboBox.currentText(), refspecs,