Sat, 23 Dec 2023 15:40:23 +0100
Converted some source code documentation to the new style.
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 | |
10438
4cd7e5a8b3cf
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10069
diff
changeset
|
139 | @param e close event |
4cd7e5a8b3cf
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10069
diff
changeset
|
140 | @type QCloseEvent |
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | if ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | self.__process is not None |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | and self.__process.state() != QProcess.ProcessState.NotRunning |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | ): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | self.__process.terminate() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | QTimer.singleShot(2000, self.__process.kill) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | self.__process.waitForFinished(3000) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | self.__vcs.getPlugin().setPreferences( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | "WorktreeDialogGeometry", self.saveGeometry() |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | e.accept() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | def show(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | Public slot to show the dialog. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | super().show() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | geom = self.__vcs.getPlugin().getPreferences("WorktreeDialogGeometry") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | if geom.isEmpty(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | s = QSize(900, 600) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | self.resize(s) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | self.restoreGeometry(geom) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | def __resort(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | Private method to resort the tree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | self.worktreeList.sortItems( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | self.worktreeList.sortColumn(), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | self.worktreeList.header().sortIndicatorOrder(), |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | def __resizeColumns(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | Private method to resize the list columns. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | self.worktreeList.header().resizeSections( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | QHeaderView.ResizeMode.ResizeToContents |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | self.worktreeList.header().setStretchLastSection(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | def __generateItem(self, dataLines): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | 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
|
190 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | @param dataLines lines extracted from the git worktree list output |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | with porcelain format |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | @type list of str |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | checkoutPath = worktreeName = commit = branch = status = "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | iconName = tooltip = "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | for line in dataLines: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | if " " in line: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | option, value = line.split(None, 1) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | option, value = line, "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | if option == "worktree": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | checkoutPath = value |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | worktreeName = os.path.basename(value) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | elif option == "HEAD": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | commit = value[: self.__commitIdLength] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | elif option == "branch": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | branch = value.rsplit("/", 1)[-1] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | elif option == "bare": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | branch = self.tr("(bare)") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | elif option == "detached": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | branch = self.tr("(detached HEAD)") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | elif option == "prunable": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | iconName = "trash" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | tooltip = value |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | status = option |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | elif option == "locked": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | iconName = "locked" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | tooltip = value |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | status = option |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | itm = QTreeWidgetItem( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | self.worktreeList, [worktreeName, checkoutPath, commit, branch] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | if iconName: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | itm.setIcon(0, EricPixmapCache.getIcon(iconName)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | if tooltip: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | itm.setToolTip(0, tooltip) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | if self.worktreeList.topLevelItemCount() == 1: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | # the first item is the main worktree |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | status = "main" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | font = itm.font(0) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | font.setBold(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | if checkoutPath == self.__projectDir: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | # it is the current project as well |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | status = "main+current" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | font.setItalic(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | for col in range(self.worktreeList.columnCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | itm.setFont(col, font) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | elif checkoutPath == self.__projectDir: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | # it is the current project |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | if not status: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | status = "current" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | elif status == "locked": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | status = "locked+current" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | font = itm.font(0) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | font.setItalic(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | for col in range(self.worktreeList.columnCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | itm.setFont(col, font) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | itm.setData(0, GitWorktreeDialog.StatusRole, status) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | def start(self, projectDir): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | Public slot to start the git worktree list command. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | @param projectDir name of the project directory |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | @type str |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | self.errorGroup.hide() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | self.worktreeList.clear() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | self.__ioEncoding = Preferences.getSystem("IOEncoding") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | args = self.__vcs.initCommand("worktree") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | args += ["list", "--porcelain"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | if self.expireCheckBox.isChecked(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | args += [ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | "--expire", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | self.expireDateTimeEdit.dateTime().toString(Qt.DateFormat.ISODate), |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | self.__projectDir = projectDir |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | # find the root of the repo |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | self.__repodir = self.__vcs.findRepoRoot(projectDir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | if not self.__repodir: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | self.__outputLines = [] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | self.__commitIdLength = self.__vcs.getPlugin().getPreferences("CommitIdLength") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | self.__process.kill() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | self.__process.setWorkingDirectory(self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | self.__process.start("git", args) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | procStarted = self.__process.waitForStarted(5000) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | if not procStarted: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | self.tr("Process Generation Error"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | "The process {0} could not be started. " |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | "Ensure, that it is in the search path." |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | ).format("git"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | False |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | True |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | True |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | self.__refreshButton.setEnabled(False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | def __finish(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | 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
|
314 | the button. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | if ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | self.__process is not None |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | and self.__process.state() != QProcess.ProcessState.NotRunning |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | ): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | self.__process.terminate() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | QTimer.singleShot(2000, self.__process.kill) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | self.__process.waitForFinished(3000) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | self.__refreshButton.setEnabled(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setFocus( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | Qt.FocusReason.OtherFocusReason |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | self.__resort() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | self.__resizeColumns() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | @pyqtSlot(QAbstractButton) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | def on_buttonBox_clicked(self, button): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | 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
|
340 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | @param button button that was clicked |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | @type QAbstractButton |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344 | if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | self.close() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | self.__finish() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | elif button == self.__refreshButton: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | self.__refreshButtonClicked() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | def __refreshButtonClicked(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | Private slot to refresh the worktree display. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | self.start(self.__projectDir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | |
10069
435cc5875135
Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9971
diff
changeset
|
358 | @pyqtSlot(int, QProcess.ExitStatus) |
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | def __procFinished(self, exitCode, exitStatus): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | Private slot connected to the finished signal. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | |
10438
4cd7e5a8b3cf
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10069
diff
changeset
|
363 | @param exitCode exit code of the process |
4cd7e5a8b3cf
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10069
diff
changeset
|
364 | @type int |
4cd7e5a8b3cf
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10069
diff
changeset
|
365 | @param exitStatus exit status of the process |
4cd7e5a8b3cf
Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10069
diff
changeset
|
366 | @type QProcess.ExitStatus |
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | self.__finish() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | def __readStdout(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | Private slot to handle the readyReadStandardOutput signal. |
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 | 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
|
375 | the contents pane. |
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 | if self.__process is not None: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | self.__process.setReadChannel(QProcess.ProcessChannel.StandardOutput) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | while self.__process.canReadLine(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | line = str( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | self.__process.readLine(), self.__ioEncoding, "replace" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
383 | ).strip() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | if line: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | self.__outputLines.append(line) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | self.__generateItem(self.__outputLines) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | self.__outputLines = [] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390 | def __readStderr(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
391 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392 | Private slot to handle the readyReadStandardError signal. |
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 | 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
|
395 | error pane. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
397 | if self.__process is not None: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398 | s = str(self.__process.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
399 | self.errorGroup.show() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400 | self.errors.insertPlainText(s) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
401 | self.errors.ensureCursorVisible() |
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 | @pyqtSlot(bool) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404 | def on_expireCheckBox_toggled(self, checked): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
406 | Private slot to handle a change of the expire checkbox. |
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 | @param checked state of the checkbox |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
409 | @type bool |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
410 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
411 | if checked: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
412 | now = QDateTime.currentDateTime() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
413 | self.expireDateTimeEdit.setMaximumDateTime(now) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
414 | self.expireDateTimeEdit.setMinimumDate(now.date().addDays(-2 * 365)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415 | self.expireDateTimeEdit.setMinimumTime(QTime(0, 0, 0)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
416 | self.expireDateTimeEdit.setDateTime(now) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
417 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
418 | self.__refreshButtonClicked() |
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 | @pyqtSlot(QDateTime) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
421 | def on_expireDateTimeEdit_dateTimeChanged(self, dateTime): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
422 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
423 | 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
|
424 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
425 | @param dateTime DESCRIPTION |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
426 | @type QDateTime |
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 | self.__refreshButtonClicked() |
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 | ## Menu handling methods |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
434 | def __showActionsMenu(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
435 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
436 | 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
|
437 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
438 | prunableWorktrees = [] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
439 | for row in range(self.worktreeList.topLevelItemCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
440 | itm = self.worktreeList.topLevelItem(row) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
441 | status = itm.data(0, GitWorktreeDialog.StatusRole) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
442 | if status == "prunable": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
443 | prunableWorktrees.append(itm.text(self.__pathColumn)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
444 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445 | selectedItems = self.worktreeList.selectedItems() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
446 | enable = bool(selectedItems) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447 | status = ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
448 | selectedItems[0].data(0, GitWorktreeDialog.StatusRole) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
449 | if selectedItems |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
450 | else "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
453 | self.__lockAct.setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454 | enable |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455 | and status not in ("locked", "locked+current", "main", "main+current") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
457 | self.__unlockAct.setEnabled(enable and status in ("locked", "locked+current")) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | self.__moveAct.setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459 | enable |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460 | and status |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461 | not in ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
462 | "prunable", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463 | "locked", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464 | "main", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465 | "main+current", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
466 | "current", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
467 | "locked+current", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
468 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
469 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470 | self.__removeAct.setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | enable |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | and status |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | not in ("locked", "main", "main+current", "current", "locked+current") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475 | self.__removeForcedAct.setEnabled( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | enable |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477 | and status not in ("main", "main+current", "current", "locked+current") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
478 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
479 | self.__pruneAct.setEnabled(bool(prunableWorktrees)) |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
482 | def __worktreeAdd(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
483 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484 | Private slot to add a linked worktree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
486 | from .GitWorktreeAddDialog import GitWorktreeAddDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
487 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
488 | # 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
|
489 | for row in range(self.worktreeList.topLevelItemCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
490 | itm = self.worktreeList.topLevelItem(row) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491 | if "current" in itm.data(0, GitWorktreeDialog.StatusRole): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | parentDirectory = os.path.dirname(itm.text(self.__pathColumn)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493 | break |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | else: |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | dlg = GitWorktreeAddDialog( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498 | parentDirectory, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
499 | self.__vcs.gitGetTagsList(self.__repodir), |
9971
773ad1f1ed22
Performed some 'ethical' changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
500 | self.__vcs.gitGetBranchesList(self.__repodir), |
9620
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | if dlg.exec() == QDialog.DialogCode.Accepted: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
503 | params = dlg.getParameters() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | args = ["worktree", "add"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
505 | if params["force"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | args.append("--force") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
507 | if params["detach"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | args.append("--detach") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
509 | if params["lock"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
510 | args.append("--lock") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | if params["lock_reason"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
512 | args += ["--reason", params["lock_reason"]] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
513 | if params["branch"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514 | args += ["-B" if params["force_branch"] else "-b", params["branch"]] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | args.append(params["path"]) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
516 | if params["commit"]: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
517 | args.append(params["commit"]) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
518 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | dlg = GitDialog(self.tr("Add Worktree"), self.__vcs) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
520 | started = dlg.startProcess(args, workingDir=self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
521 | if started: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | dlg.exec() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | self.__refreshButtonClicked() |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
527 | def __worktreeLock(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
528 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
529 | Private slot to lock a worktree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
531 | worktree = self.worktreeList.selectedItems()[0].text(self.__pathColumn) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
532 | if not worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
535 | reason, ok = QInputDialog.getText( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
536 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
537 | self.tr("Lock Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
538 | self.tr("Enter a reason for the lock:"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
539 | QLineEdit.EchoMode.Normal, |
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 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
542 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
543 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
544 | args = ["worktree", "lock"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
545 | if reason: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
546 | args += ["--reason", reason] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
547 | args.append(worktree) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
548 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
549 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
550 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
551 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
552 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
553 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
554 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
555 | self.tr("Lock Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
556 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
557 | "<p>Locking the selected worktree failed.</p><p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
558 | ).format(err), |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561 | self.__refreshButtonClicked() |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
564 | def __worktreeUnlock(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566 | Private slot to unlock a worktree. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
568 | worktree = self.worktreeList.selectedItems()[0].text(self.__pathColumn) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569 | if not worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
572 | args = ["worktree", "unlock", worktree] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
573 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
574 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
575 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
577 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
578 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
580 | self.tr("Unlock Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
581 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
582 | "<p>Unlocking the selected worktree failed.</p><p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583 | ).format(err), |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
586 | self.__refreshButtonClicked() |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
589 | def __worktreeMove(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591 | Private slot to move a worktree to a new location. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
592 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
593 | worktree = self.worktreeList.selectedItems()[0].text(self.__pathColumn) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
594 | if not worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
595 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
596 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
597 | newPath, ok = EricPathPickerDialog.getStrPath( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
598 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
599 | self.tr("Move Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
600 | self.tr("Enter the new path for the worktree:"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
601 | mode=EricPathPickerDialog.EricPathPickerModes.DIRECTORY_MODE, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
602 | strPath=worktree, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
603 | defaultDirectory=os.path.dirname(worktree), |
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 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
606 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
607 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
608 | args = ["worktree", "move", worktree, newPath] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
609 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
610 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
611 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
612 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
613 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
614 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
615 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
616 | self.tr("Move Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
617 | 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
|
618 | err |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
619 | ), |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
622 | self.__refreshButtonClicked() |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
625 | def __worktreeRemove(self, force=False): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
626 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
627 | Private slot to remove a linked worktree. |
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 | @param force flag indicating a forceful remove (defaults to False) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
630 | @type bool (optional |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
631 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
632 | worktree = self.worktreeList.selectedItems()[0].text(self.__pathColumn) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
633 | if not worktree: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
634 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
635 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
636 | title = ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
637 | self.tr("Remove Worktree") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
638 | if force |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
639 | else self.tr("Remove Worktree Forcefully") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
640 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
641 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
642 | ok = EricMessageBox.yesNo( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
643 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
644 | title, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
645 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
646 | "<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
|
647 | ).format(worktree), |
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 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
650 | return |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
651 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
652 | args = ["worktree", "remove"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
653 | if force: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654 | args.append("--force") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
655 | if ( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
656 | self.worktreeList.selectedItems()[0].data( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
657 | 0, GitWorktreeDialog.StatusRole |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
658 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
659 | == "locked" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
660 | ): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
661 | # a second '--force' is needed |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
662 | args.append("--force") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
663 | args.append(worktree) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
664 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
665 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
666 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
667 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
668 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
669 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
670 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
671 | title, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
672 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
673 | "<p>Removing the selected worktree failed.</p><p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
674 | ).format(err), |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
677 | self.__refreshButtonClicked() |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
680 | def __worktreeRemoveForced(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
681 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
682 | Private slot to remove a linked worktree forcefully. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
683 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
684 | self.__worktreeRemove(force=True) |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
687 | def __worktreePrune(self): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
688 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
689 | Private slot to prune worktree information. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
690 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
691 | from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
692 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
693 | prunableWorktrees = [] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
694 | for row in range(self.worktreeList.topLevelItemCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
695 | itm = self.worktreeList.topLevelItem(row) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
696 | status = itm.data(0, GitWorktreeDialog.StatusRole) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
697 | if status == "prunable": |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
698 | prunableWorktrees.append(itm.text(self.__pathColumn)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
699 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
700 | if prunableWorktrees: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
701 | dlg = DeleteFilesConfirmationDialog( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
702 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
703 | self.tr("Prune Worktree Information"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
704 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
705 | "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
|
706 | ), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
707 | prunableWorktrees, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
708 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
709 | if dlg.exec() == QDialog.DialogCode.Accepted: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
710 | args = ["worktree", "prune"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
711 | if self.expireCheckBox.isChecked(): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
712 | args += [ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
713 | "--expire", |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
714 | self.expireDateTimeEdit.dateTime().toString( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
715 | Qt.DateFormat.ISODate |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
716 | ), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
717 | ] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
718 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
719 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
720 | ok = self.__vcs.startSynchronizedProcess( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
721 | proc, "git", args, self.__repodir |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
722 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
723 | if not ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
724 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
725 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
726 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
727 | self.tr("Prune Worktree Information"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
728 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
729 | "<p>Pruning of the worktree information failed.</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
730 | "<p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
731 | ).format(err), |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
734 | self.__refreshButtonClicked() |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
737 | def __worktreeRepair(self, worktreePaths=None): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
738 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
739 | Private slot to repair worktree administrative files. |
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 | @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
|
742 | @type list of str (optional) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
743 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
744 | args = ["worktree", "repair"] |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
745 | if worktreePaths: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
746 | args += worktreePaths |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
747 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
748 | proc = QProcess() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
749 | ok = self.__vcs.startSynchronizedProcess(proc, "git", args, self.__repodir) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
750 | if ok: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
751 | out = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
752 | EricMessageBox.information( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
753 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
754 | self.tr("Repair Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
755 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
756 | "<p>Repairing of the worktree administrative files succeeded.</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
757 | "<p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
758 | ).format(out), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
759 | ) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
760 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
761 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
762 | err = str(proc.readAllStandardError(), self.__ioEncoding, "replace") |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
763 | EricMessageBox.critical( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
764 | self, |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
765 | self.tr("Repair Worktree"), |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
766 | self.tr( |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
767 | "<p>Repairing of the worktree administrative files failed.</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
768 | "<p>{0}</p>" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
769 | ).format(err), |
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 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
772 | self.__refreshButtonClicked() |
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 | @pyqtSlot() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
775 | def __worktreeRepairMultiple(self): |
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 | Private slot to repair worktree administrative files for multiple worktree |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
778 | paths. |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
779 | """ |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
780 | from .GitWorktreePathsDialog import GitWorktreePathsDialog |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
781 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
782 | # 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
|
783 | for row in range(self.worktreeList.topLevelItemCount()): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
784 | itm = self.worktreeList.topLevelItem(row) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
785 | if "current" in itm.data(0, GitWorktreeDialog.StatusRole): |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
786 | parentDirectory = os.path.dirname(itm.text(self.__pathColumn)) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
787 | break |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
788 | else: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
789 | parentDirectory = "" |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
790 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
791 | dlg = GitWorktreePathsDialog(parentDirectory, self) |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
792 | if dlg.exec() == QDialog.DialogCode.Accepted: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
793 | paths = dlg.getPathsList() |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
794 | |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
795 | if paths: |
9563c83ce83d
Version Control Systems - git
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
796 | self.__worktreeRepair(worktreePaths=paths) |