19 class Shelve(HgExtension): |
19 class Shelve(HgExtension): |
20 """ |
20 """ |
21 Class implementing the shelve extension interface. |
21 Class implementing the shelve extension interface. |
22 """ |
22 """ |
23 |
23 |
24 def __init__(self, vcs): |
24 def __init__(self, vcs, ui=None): |
25 """ |
25 """ |
26 Constructor |
26 Constructor |
27 |
27 |
28 @param vcs reference to the Mercurial vcs object |
28 @param vcs reference to the Mercurial vcs object |
29 @type Hg |
29 @type Hg |
30 """ |
30 @param ui reference to a UI widget (defaults to None) |
31 super().__init__(vcs) |
31 @type QWidget |
|
32 """ |
|
33 super().__init__(vcs, ui=ui) |
32 |
34 |
33 self.__unshelveKeep = False |
35 self.__unshelveKeep = False |
34 |
36 |
35 self.__shelveBrowserDialog = None |
37 self.__shelveBrowserDialog = None |
36 |
38 |
72 @rtype bool |
74 @rtype bool |
73 """ |
75 """ |
74 from .HgShelveDataDialog import HgShelveDataDialog |
76 from .HgShelveDataDialog import HgShelveDataDialog |
75 |
77 |
76 res = False |
78 res = False |
77 dlg = HgShelveDataDialog(self.vcs.version) |
79 dlg = HgShelveDataDialog(self.vcs.version, parent=self.ui) |
78 if dlg.exec() == QDialog.DialogCode.Accepted: |
80 if dlg.exec() == QDialog.DialogCode.Accepted: |
79 shelveName, dateTime, message, addRemove, keep = dlg.getData() |
81 shelveName, dateTime, message, addRemove, keep = dlg.getData() |
80 |
82 |
81 args = self.vcs.initCommand("shelve") |
83 args = self.vcs.initCommand("shelve") |
82 if shelveName: |
84 if shelveName: |
97 if isinstance(name, list): |
99 if isinstance(name, list): |
98 self.vcs.addArguments(args, name) |
100 self.vcs.addArguments(args, name) |
99 else: |
101 else: |
100 args.append(name) |
102 args.append(name) |
101 |
103 |
102 dia = HgDialog(self.tr("Shelve current changes"), self.vcs) |
104 dia = HgDialog( |
|
105 self.tr("Shelve current changes"), hg=self.vcs, parent=self.ui |
|
106 ) |
103 res = dia.startProcess(args) |
107 res = dia.startProcess(args) |
104 if res: |
108 if res: |
105 dia.exec() |
109 dia.exec() |
106 res = dia.hasAddOrDelete() |
110 res = dia.hasAddOrDelete() |
107 self.vcs.checkVCSStatus() |
111 self.vcs.checkVCSStatus() |
128 @rtype bool |
132 @rtype bool |
129 """ |
133 """ |
130 from .HgUnshelveDataDialog import HgUnshelveDataDialog |
134 from .HgUnshelveDataDialog import HgUnshelveDataDialog |
131 |
135 |
132 res = False |
136 res = False |
133 dlg = HgUnshelveDataDialog(self.__hgGetShelveNamesList(), shelveName=shelveName) |
137 dlg = HgUnshelveDataDialog( |
|
138 self.__hgGetShelveNamesList(), shelveName=shelveName, parent=self.ui |
|
139 ) |
134 if dlg.exec() == QDialog.DialogCode.Accepted: |
140 if dlg.exec() == QDialog.DialogCode.Accepted: |
135 shelveName, keep = dlg.getData() |
141 shelveName, keep = dlg.getData() |
136 self.__unshelveKeep = keep # store for potential continue |
142 self.__unshelveKeep = keep # store for potential continue |
137 |
143 |
138 args = self.vcs.initCommand("unshelve") |
144 args = self.vcs.initCommand("unshelve") |
139 if keep: |
145 if keep: |
140 args.append("--keep") |
146 args.append("--keep") |
141 if shelveName: |
147 if shelveName: |
142 args.append(shelveName) |
148 args.append(shelveName) |
143 |
149 |
144 dia = HgDialog(self.tr("Restore shelved changes"), self.vcs) |
150 dia = HgDialog( |
|
151 self.tr("Restore shelved changes"), hg=self.vcs, parent=self.ui |
|
152 ) |
145 res = dia.startProcess(args) |
153 res = dia.startProcess(args) |
146 if res: |
154 if res: |
147 dia.exec() |
155 dia.exec() |
148 res = dia.hasAddOrDelete() |
156 res = dia.hasAddOrDelete() |
149 self.vcs.checkVCSStatus() |
157 self.vcs.checkVCSStatus() |
157 @rtype bool |
165 @rtype bool |
158 """ |
166 """ |
159 args = self.vcs.initCommand("unshelve") |
167 args = self.vcs.initCommand("unshelve") |
160 args.append("--abort") |
168 args.append("--abort") |
161 |
169 |
162 dia = HgDialog(self.tr("Abort restore operation"), self.vcs) |
170 dia = HgDialog(self.tr("Abort restore operation"), hg=self.vcs, parent=self.ui) |
163 res = dia.startProcess(args) |
171 res = dia.startProcess(args) |
164 if res: |
172 if res: |
165 dia.exec() |
173 dia.exec() |
166 res = dia.hasAddOrDelete() |
174 res = dia.hasAddOrDelete() |
167 self.vcs.checkVCSStatus() |
175 self.vcs.checkVCSStatus() |
177 args = self.vcs.initCommand("unshelve") |
185 args = self.vcs.initCommand("unshelve") |
178 if self.__unshelveKeep: |
186 if self.__unshelveKeep: |
179 args.append("--keep") |
187 args.append("--keep") |
180 args.append("--continue") |
188 args.append("--continue") |
181 |
189 |
182 dia = HgDialog(self.tr("Continue restore operation"), self.vcs) |
190 dia = HgDialog( |
|
191 self.tr("Continue restore operation"), hg=self.vcs, parent=self.ui |
|
192 ) |
183 res = dia.startProcess(args) |
193 res = dia.startProcess(args) |
184 if res: |
194 if res: |
185 dia.exec() |
195 dia.exec() |
186 res = dia.hasAddOrDelete() |
196 res = dia.hasAddOrDelete() |
187 self.vcs.checkVCSStatus() |
197 self.vcs.checkVCSStatus() |
198 |
208 |
199 if not shelveNames: |
209 if not shelveNames: |
200 dlg = HgShelvesSelectionDialog( |
210 dlg = HgShelvesSelectionDialog( |
201 self.tr("Select the shelves to be deleted:"), |
211 self.tr("Select the shelves to be deleted:"), |
202 self.__hgGetShelveNamesList(), |
212 self.__hgGetShelveNamesList(), |
|
213 parent=self.ui, |
203 ) |
214 ) |
204 if dlg.exec() == QDialog.DialogCode.Accepted: |
215 if dlg.exec() == QDialog.DialogCode.Accepted: |
205 shelveNames = dlg.getSelectedShelves() |
216 shelveNames = dlg.getSelectedShelves() |
206 else: |
217 else: |
207 return |
218 return |
208 |
219 |
209 dlg = DeleteFilesConfirmationDialog( |
220 dlg = DeleteFilesConfirmationDialog( |
210 None, |
221 self.ui, |
211 self.tr("Delete shelves"), |
222 self.tr("Delete shelves"), |
212 self.tr("Do you really want to delete these shelves?"), |
223 self.tr("Do you really want to delete these shelves?"), |
213 shelveNames, |
224 shelveNames, |
214 ) |
225 ) |
215 if dlg.exec() == QDialog.DialogCode.Accepted: |
226 if dlg.exec() == QDialog.DialogCode.Accepted: |
216 args = self.vcs.initCommand("shelve") |
227 args = self.vcs.initCommand("shelve") |
217 args.append("--delete") |
228 args.append("--delete") |
218 args.extend(shelveNames) |
229 args.extend(shelveNames) |
219 |
230 |
220 dia = HgDialog(self.tr("Delete shelves"), self.vcs) |
231 dia = HgDialog(self.tr("Delete shelves"), hg=self.vcs, parent=self.ui) |
221 res = dia.startProcess(args) |
232 res = dia.startProcess(args) |
222 if res: |
233 if res: |
223 dia.exec() |
234 dia.exec() |
224 |
235 |
225 def hgCleanupShelves(self): |
236 def hgCleanupShelves(self): |