Wed, 04 Oct 2023 17:50:59 +0200
Fixed in issue with several editable combo box selectors, that the value could not be changed if the edited text differed by case only. This was caused by the standard QComboBox completer.
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
9653
e67609152c5e
Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9621
diff
changeset
|
3 | # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> |
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to offer the worktree management functionality. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import os |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | from PyQt6.QtCore import QDateTime, QProcess, QSize, Qt, QTime, QTimer, pyqtSlot |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from PyQt6.QtWidgets import ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | QAbstractButton, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | QDialog, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | QDialogButtonBox, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | QHeaderView, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | QInputDialog, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | QLineEdit, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | QMenu, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | QTreeWidgetItem, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | QWidget, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | from eric7 import Preferences |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | from eric7.EricGui import EricPixmapCache |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | from eric7.EricWidgets import EricMessageBox, EricPathPickerDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | from .GitDialog import GitDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | from .Ui_GitWorktreeDialog import Ui_GitWorktreeDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | class GitWorktreeDialog(QWidget, Ui_GitWorktreeDialog): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | Class implementing a dialog to offer the worktree management functionality. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | StatusRole = Qt.ItemDataRole.UserRole |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | def __init__(self, vcs, parent=None): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | Constructor |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | @param vcs reference to the vcs object |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | @type Git |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | @param parent reference to the parent widget (defaults to None) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | @type QWidget (optional) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | super().__init__(parent) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | self.setupUi(self) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | self.__nameColumn = 0 |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.__pathColumn = 1 |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | self.__commitColumn = 2 |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | self.__branchColumn = 3 |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | self.worktreeList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.__refreshButton = self.buttonBox.addButton( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | self.tr("Refresh"), QDialogButtonBox.ButtonRole.ActionRole |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | self.__refreshButton.setToolTip(self.tr("Press to refresh the status display")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | self.__refreshButton.setEnabled(False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | self.__vcs = vcs |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | self.__process = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | self.__process.finished.connect(self.__procFinished) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | self.__process.readyReadStandardOutput.connect(self.__readStdout) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self.__process.readyReadStandardError.connect(self.__readStderr) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | self.__initActionsMenu() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | def __initActionsMenu(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | Private method to initialize the actions menu. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | self.__actionsMenu = QMenu() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | self.__actionsMenu.setTearOffEnabled(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | self.__actionsMenu.setToolTipsVisible(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | self.__actionsMenu.aboutToShow.connect(self.__showActionsMenu) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | self.__addAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | self.tr("Add..."), self.__worktreeAdd |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | self.__addAct.setToolTip(self.tr("Add a new linked worktree")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | self.__actionsMenu.addSeparator() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | self.__lockAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | self.tr("Lock..."), self.__worktreeLock |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | self.__lockAct.setToolTip(self.tr("Lock the selected worktree")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | self.__unlockAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | self.tr("Unlock"), self.__worktreeUnlock |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | self.__unlockAct.setToolTip(self.tr("Unlock the selected worktree")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | self.__actionsMenu.addSeparator() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | self.__moveAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | self.tr("Move..."), self.__worktreeMove |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | self.__moveAct.setToolTip( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | self.tr("Move the selected worktree to a new location") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | self.__actionsMenu.addSeparator() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | self.__removeAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | self.tr("Remove"), self.__worktreeRemove |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | self.__removeAct.setToolTip(self.tr("Remove the selected worktree")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | self.__removeForcedAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | self.tr("Forced Remove"), self.__worktreeRemoveForced |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | self.__removeForcedAct.setToolTip( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | self.tr("Remove the selected worktree forcefully") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | self.__actionsMenu.addSeparator() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | self.__pruneAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | self.tr("Prune..."), self.__worktreePrune |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | self.__pruneAct.setToolTip(self.tr("Prune worktree information")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | self.__actionsMenu.addSeparator() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | self.__repairAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | self.tr("Repair"), self.__worktreeRepair |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | self.__repairAct.setToolTip(self.tr("Repair worktree administrative files")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | self.__repairMultipleAct = self.__actionsMenu.addAction( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | self.tr("Repair Multiple"), self.__worktreeRepairMultiple |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | self.__repairMultipleAct.setToolTip( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | self.tr("Repair administrative files of multiple worktrees") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | self.actionsButton.setIcon(EricPixmapCache.getIcon("actionsToolButton")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | self.actionsButton.setMenu(self.__actionsMenu) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | def closeEvent(self, e): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | Protected slot implementing a close event handler. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | @param e close event (QCloseEvent) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | if ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | self.__process is not None |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | and self.__process.state() != QProcess.ProcessState.NotRunning |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | ): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | self.__process.terminate() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | QTimer.singleShot(2000, self.__process.kill) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | self.__process.waitForFinished(3000) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | self.__vcs.getPlugin().setPreferences( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | "WorktreeDialogGeometry", self.saveGeometry() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | e.accept() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | def show(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | Public slot to show the dialog. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | super().show() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | geom = self.__vcs.getPlugin().getPreferences("WorktreeDialogGeometry") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | if geom.isEmpty(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | s = QSize(900, 600) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | self.resize(s) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | self.restoreGeometry(geom) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | def __resort(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | Private method to resort the tree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | self.worktreeList.sortItems( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | self.worktreeList.sortColumn(), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | self.worktreeList.header().sortIndicatorOrder(), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | def __resizeColumns(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | Private method to resize the list columns. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | self.worktreeList.header().resizeSections( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | QHeaderView.ResizeMode.ResizeToContents |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | self.worktreeList.header().setStretchLastSection(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | def __generateItem(self, dataLines): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | Private method to generate a worktree entry with the given data. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | @param dataLines lines extracted from the git worktree list output |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | with porcelain format |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | @type list of str |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | checkoutPath = worktreeName = commit = branch = status = "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | iconName = tooltip = "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | for line in dataLines: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | if " " in line: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | option, value = line.split(None, 1) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | option, value = line, "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | if option == "worktree": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | checkoutPath = value |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | worktreeName = os.path.basename(value) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | elif option == "HEAD": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | commit = value[: self.__commitIdLength] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | elif option == "branch": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | branch = value.rsplit("/", 1)[-1] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | elif option == "bare": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | branch = self.tr("(bare)") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | elif option == "detached": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | branch = self.tr("(detached HEAD)") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | elif option == "prunable": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | iconName = "trash" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | tooltip = value |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | status = option |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | elif option == "locked": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | iconName = "locked" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | tooltip = value |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | status = option |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | itm = QTreeWidgetItem( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | self.worktreeList, [worktreeName, checkoutPath, commit, branch] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | if iconName: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | itm.setIcon(0, EricPixmapCache.getIcon(iconName)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | if tooltip: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | itm.setToolTip(0, tooltip) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | if self.worktreeList.topLevelItemCount() == 1: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | # the first item is the main worktree |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | status = "main" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | font = itm.font(0) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | font.setBold(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | if checkoutPath == self.__projectDir: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | # it is the current project as well |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | status = "main+current" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | font.setItalic(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | for col in range(self.worktreeList.columnCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | itm.setFont(col, font) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | elif checkoutPath == self.__projectDir: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | # it is the current project |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | if not status: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | status = "current" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | elif status == "locked": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | status = "locked+current" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | font = itm.font(0) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | font.setItalic(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | for col in range(self.worktreeList.columnCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | itm.setFont(col, font) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | itm.setData(0, GitWorktreeDialog.StatusRole, status) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | def start(self, projectDir): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | Public slot to start the git worktree list command. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | @param projectDir name of the project directory |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | @type str |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | self.errorGroup.hide() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | self.worktreeList.clear() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | self.__ioEncoding = Preferences.getSystem("IOEncoding") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | args = self.__vcs.initCommand("worktree") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | args += ["list", "--porcelain"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | if self.expireCheckBox.isChecked(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | args += [ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | "--expire", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | self.expireDateTimeEdit.dateTime().toString(Qt.DateFormat.ISODate), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | ] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | self.__projectDir = projectDir |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | # find the root of the repo |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | self.__repodir = self.__vcs.findRepoRoot(projectDir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | if not self.__repodir: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | self.__outputLines = [] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | self.__commitIdLength = self.__vcs.getPlugin().getPreferences("CommitIdLength") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | self.__process.kill() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | self.__process.setWorkingDirectory(self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | self.__process.start("git", args) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | procStarted = self.__process.waitForStarted(5000) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | if not procStarted: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | self.tr("Process Generation Error"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | "The process {0} could not be started. " |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | "Ensure, that it is in the search path." |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | ).format("git"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | False |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | True |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | True |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | self.__refreshButton.setEnabled(False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | def __finish(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | Private slot called when the process finished or the user pressed |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | the button. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | if ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | self.__process is not None |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | and self.__process.state() != QProcess.ProcessState.NotRunning |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | ): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | self.__process.terminate() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | QTimer.singleShot(2000, self.__process.kill) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | self.__process.waitForFinished(3000) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | self.__refreshButton.setEnabled(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setFocus( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | Qt.FocusReason.OtherFocusReason |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | self.__resort() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | self.__resizeColumns() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | @pyqtSlot(QAbstractButton) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | def on_buttonBox_clicked(self, button): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | Private slot called by a button of the button box clicked. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | @param button button that was clicked |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | @type QAbstractButton |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344 | self.close() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | self.__finish() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | elif button == self.__refreshButton: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | def __refreshButtonClicked(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | Private slot to refresh the worktree display. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | self.start(self.__projectDir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | |
10069
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9971
diff
changeset
|
357 | @pyqtSlot(int, QProcess.ExitStatus) |
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | def __procFinished(self, exitCode, exitStatus): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | Private slot connected to the finished signal. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | @param exitCode exit code of the process (integer) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | @param exitStatus exit status of the process (QProcess.ExitStatus) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | self.__finish() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | def __readStdout(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | Private slot to handle the readyReadStandardOutput signal. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | It reads the output of the process, formats it and inserts it into |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | the contents pane. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | if self.__process is not None: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | self.__process.setReadChannel(QProcess.ProcessChannel.StandardOutput) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | while self.__process.canReadLine(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | line = str( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | self.__process.readLine(), self.__ioEncoding, "replace" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | ).strip() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | if line: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | self.__outputLines.append(line) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
383 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | self.__generateItem(self.__outputLines) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | self.__outputLines = [] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | def __readStderr(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | Private slot to handle the readyReadStandardError signal. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
391 | It reads the error output of the process and inserts it into the |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392 | error pane. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
393 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
394 | if self.__process is not None: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
395 | s = str(self.__process.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | self.errorGroup.show() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
397 | self.errors.insertPlainText(s) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398 | self.errors.ensureCursorVisible() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
399 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400 | @pyqtSlot(bool) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
401 | def on_expireCheckBox_toggled(self, checked): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
402 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
403 | Private slot to handle a change of the expire checkbox. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405 | @param checked state of the checkbox |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
406 | @type bool |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
407 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
408 | if checked: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
409 | now = QDateTime.currentDateTime() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
410 | self.expireDateTimeEdit.setMaximumDateTime(now) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
411 | self.expireDateTimeEdit.setMinimumDate(now.date().addDays(-2 * 365)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
412 | self.expireDateTimeEdit.setMinimumTime(QTime(0, 0, 0)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
413 | self.expireDateTimeEdit.setDateTime(now) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
414 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
416 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
417 | @pyqtSlot(QDateTime) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
418 | def on_expireDateTimeEdit_dateTimeChanged(self, dateTime): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
419 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
420 | Private slot to handle a change of the expire date and time. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
421 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
422 | @param dateTime DESCRIPTION |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
423 | @type QDateTime |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
424 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
425 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
426 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
427 | ########################################################################### |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
428 | ## Menu handling methods |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
429 | ########################################################################### |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
430 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
431 | def __showActionsMenu(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
433 | Private slot to prepare the actions button menu before it is shown. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
434 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
435 | prunableWorktrees = [] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
436 | for row in range(self.worktreeList.topLevelItemCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
437 | itm = self.worktreeList.topLevelItem(row) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
438 | status = itm.data(0, GitWorktreeDialog.StatusRole) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
439 | if status == "prunable": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
440 | prunableWorktrees.append(itm.text(self.__pathColumn)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
441 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
442 | selectedItems = self.worktreeList.selectedItems() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
443 | enable = bool(selectedItems) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
444 | status = ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445 | selectedItems[0].data(0, GitWorktreeDialog.StatusRole) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
446 | if selectedItems |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447 | else "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
448 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
449 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
450 | self.__lockAct.setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451 | enable |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452 | and status not in ("locked", "locked+current", "main", "main+current") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
453 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454 | self.__unlockAct.setEnabled(enable and status in ("locked", "locked+current")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455 | self.__moveAct.setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | enable |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
457 | and status |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | not in ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459 | "prunable", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460 | "locked", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461 | "main", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
462 | "main+current", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463 | "current", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464 | "locked+current", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
466 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
467 | self.__removeAct.setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
468 | enable |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
469 | and status |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470 | not in ("locked", "main", "main+current", "current", "locked+current") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | self.__removeForcedAct.setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | enable |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | and status not in ("main", "main+current", "current", "locked+current") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | self.__pruneAct.setEnabled(bool(prunableWorktrees)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
478 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
479 | def __worktreeAdd(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
481 | Private slot to add a linked worktree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
482 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
483 | from .GitWorktreeAddDialog import GitWorktreeAddDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | # find current worktree and take its parent path as the parent directory |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
486 | for row in range(self.worktreeList.topLevelItemCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
487 | itm = self.worktreeList.topLevelItem(row) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
488 | if "current" in itm.data(0, GitWorktreeDialog.StatusRole): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
489 | parentDirectory = os.path.dirname(itm.text(self.__pathColumn)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
490 | break |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | parentDirectory = "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | dlg = GitWorktreeAddDialog( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
495 | parentDirectory, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | self.__vcs.gitGetTagsList(self.__repodir), |
9971
773ad1f1ed22
Performed some 'ethical' changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
497 | self.__vcs.gitGetBranchesList(self.__repodir), |
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
499 | if dlg.exec() == QDialog.DialogCode.Accepted: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
500 | params = dlg.getParameters() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | args = ["worktree", "add"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | if params["force"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
503 | args.append("--force") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | if params["detach"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
505 | args.append("--detach") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | if params["lock"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
507 | args.append("--lock") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | if params["lock_reason"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
509 | args += ["--reason", params["lock_reason"]] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
510 | if params["branch"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | args += ["-B" if params["force_branch"] else "-b", params["branch"]] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
512 | args.append(params["path"]) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
513 | if params["commit"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514 | args.append(params["commit"]) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
516 | dlg = GitDialog(self.tr("Add Worktree"), self.__vcs) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
517 | started = dlg.startProcess(args, workingDir=self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
518 | if started: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | dlg.exec() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
520 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
521 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | def __worktreeLock(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
525 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
526 | Private slot to lock a worktree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
527 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
528 | worktree = self.worktreeList.selectedItems()[0].text(self.__pathColumn) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
529 | if not worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
531 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
532 | reason, ok = QInputDialog.getText( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | self.tr("Lock Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
535 | self.tr("Enter a reason for the lock:"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
536 | QLineEdit.EchoMode.Normal, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
537 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
538 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
539 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
540 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
541 | args = ["worktree", "lock"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
542 | if reason: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
543 | args += ["--reason", reason] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
544 | args.append(worktree) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
545 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
546 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
547 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
548 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
549 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
550 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
551 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
552 | self.tr("Lock Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
553 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
554 | "<p>Locking the selected worktree failed.</p><p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
555 | ).format(err), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
556 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
557 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
558 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
559 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
560 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561 | def __worktreeUnlock(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
562 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
563 | Private slot to unlock a worktree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
564 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565 | worktree = self.worktreeList.selectedItems()[0].text(self.__pathColumn) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566 | if not worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
568 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569 | args = ["worktree", "unlock", worktree] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
572 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
573 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
574 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
575 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
577 | self.tr("Unlock Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
578 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579 | "<p>Unlocking the selected worktree failed.</p><p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
580 | ).format(err), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
581 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
582 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
584 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
585 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
586 | def __worktreeMove(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
587 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
588 | Private slot to move a worktree to a new location. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
589 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590 | worktree = self.worktreeList.selectedItems()[0].text(self.__pathColumn) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591 | if not worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
592 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
593 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
594 | newPath, ok = EricPathPickerDialog.getStrPath( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
595 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
596 | self.tr("Move Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
597 | self.tr("Enter the new path for the worktree:"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
598 | mode=EricPathPickerDialog.EricPathPickerModes.DIRECTORY_MODE, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
599 | strPath=worktree, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
600 | defaultDirectory=os.path.dirname(worktree), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
601 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
602 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
603 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
604 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
605 | args = ["worktree", "move", worktree, newPath] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
606 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
607 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
608 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
609 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
610 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
611 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
612 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
613 | self.tr("Move Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
614 | self.tr("<p>Moving the selected worktree failed.</p><p>{0}</p>").format( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
615 | err |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
616 | ), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
617 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
618 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
619 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
620 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
621 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
622 | def __worktreeRemove(self, force=False): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
623 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
624 | Private slot to remove a linked worktree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
625 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
626 | @param force flag indicating a forceful remove (defaults to False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
627 | @type bool (optional |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
628 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
629 | worktree = self.worktreeList.selectedItems()[0].text(self.__pathColumn) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
630 | if not worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
631 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
632 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
633 | title = ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
634 | self.tr("Remove Worktree") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
635 | if force |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
636 | else self.tr("Remove Worktree Forcefully") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
637 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
638 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
639 | ok = EricMessageBox.yesNo( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
640 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
641 | title, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
642 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
643 | "<p>Do you really want to remove the worktree <b>{0}</b>?</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
644 | ).format(worktree), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
645 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
646 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
647 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
648 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
649 | args = ["worktree", "remove"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
650 | if force: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
651 | args.append("--force") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
652 | if ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
653 | self.worktreeList.selectedItems()[0].data( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654 | 0, GitWorktreeDialog.StatusRole |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
655 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
656 | == "locked" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
657 | ): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
658 | # a second '--force' is needed |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
659 | args.append("--force") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
660 | args.append(worktree) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
661 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
662 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
663 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
664 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
665 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
666 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
667 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
668 | title, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
669 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
670 | "<p>Removing the selected worktree failed.</p><p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
671 | ).format(err), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
672 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
673 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
674 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
675 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
676 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
677 | def __worktreeRemoveForced(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
678 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
679 | Private slot to remove a linked worktree forcefully. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
680 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
681 | self.__worktreeRemove(force=True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
682 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
683 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
684 | def __worktreePrune(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
685 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
686 | Private slot to prune worktree information. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
687 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
688 | from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
689 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
690 | prunableWorktrees = [] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
691 | for row in range(self.worktreeList.topLevelItemCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
692 | itm = self.worktreeList.topLevelItem(row) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
693 | status = itm.data(0, GitWorktreeDialog.StatusRole) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
694 | if status == "prunable": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
695 | prunableWorktrees.append(itm.text(self.__pathColumn)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
696 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
697 | if prunableWorktrees: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
698 | dlg = DeleteFilesConfirmationDialog( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
699 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
700 | self.tr("Prune Worktree Information"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
701 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
702 | "Do you really want to prune the information of these worktrees?" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
703 | ), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
704 | prunableWorktrees, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
705 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
706 | if dlg.exec() == QDialog.DialogCode.Accepted: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
707 | args = ["worktree", "prune"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
708 | if self.expireCheckBox.isChecked(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
709 | args += [ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
710 | "--expire", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
711 | self.expireDateTimeEdit.dateTime().toString( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
712 | Qt.DateFormat.ISODate |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
713 | ), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
714 | ] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
715 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
716 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
717 | ok = self.__vcs.startSynchronizedProcess( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
718 | proc, "git", args, self.__repodir |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
719 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
720 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
721 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
722 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
723 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
724 | self.tr("Prune Worktree Information"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
725 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
726 | "<p>Pruning of the worktree information failed.</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
727 | "<p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
728 | ).format(err), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
729 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
730 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
731 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
732 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
733 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
734 | def __worktreeRepair(self, worktreePaths=None): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
735 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
736 | Private slot to repair worktree administrative files. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
737 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
738 | @param worktreePaths list of worktree paths to be repaired (defaults to None) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
739 | @type list of str (optional) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
740 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
741 | args = ["worktree", "repair"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
742 | if worktreePaths: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
743 | args += worktreePaths |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
744 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
745 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
746 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
747 | if ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
748 | out = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
749 | EricMessageBox.information( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
750 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
751 | self.tr("Repair Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
752 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
753 | "<p>Repairing of the worktree administrative files succeeded.</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
754 | "<p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
755 | ).format(out), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
756 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
757 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
758 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
759 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
760 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
761 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
762 | self.tr("Repair Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
763 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
764 | "<p>Repairing of the worktree administrative files failed.</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
765 | "<p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
766 | ).format(err), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
767 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
768 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
769 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
770 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
771 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
772 | def __worktreeRepairMultiple(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
773 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
774 | Private slot to repair worktree administrative files for multiple worktree |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
775 | paths. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
776 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
777 | from .GitWorktreePathsDialog import GitWorktreePathsDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
778 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
779 | # find current worktree and take its parent path as the parent directory |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
780 | for row in range(self.worktreeList.topLevelItemCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
781 | itm = self.worktreeList.topLevelItem(row) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
782 | if "current" in itm.data(0, GitWorktreeDialog.StatusRole): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
783 | parentDirectory = os.path.dirname(itm.text(self.__pathColumn)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
784 | break |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
785 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
786 | parentDirectory = "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
787 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
788 | dlg = GitWorktreePathsDialog(parentDirectory, self) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
789 | if dlg.exec() == QDialog.DialogCode.Accepted: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
790 | paths = dlg.getPathsList() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
791 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
792 | if paths: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
793 | self.__worktreeRepair(worktreePaths=paths) |