Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.9.2, 1.9.3, and 2.0

mq: handle various patch events

* Enable item renaming, tied to a qrename command
* Item activation (platform specific (cmd+o on mac) performs qgoto
* Item selection toggles toolbutton states

Changeset c11ea1b77ef1

Parent bc754dc329d9

by Steve Borho

Changes to one file · Browse files at c11ea1b77ef1 Showing diff from parent bc754dc329d9 Diff from another changeset...

 
154
155
156
 
 
 
157
158
159
 
194
195
196
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
198
199
 
271
272
273
 
274
275
276
277
 
278
279
280
 
 
 
 
281
282
283
 
 
 
284
285
286
 
287
 
 
 
288
289
290
 
301
302
303
 
 
 
 
 
 
 
 
 
304
305
306
307
308
309
310
311
312
313
314
315
316
317
 
154
155
156
157
158
159
160
161
162
 
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
 
300
301
302
303
304
305
306
 
307
308
309
310
311
312
313
314
315
316
 
317
318
319
320
321
322
323
324
325
326
327
328
329
330
 
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
 
 
 
 
 
359
360
361
@@ -154,6 +154,9 @@
  self.optionsBtn.pressed.connect(self.launchOptionsDialog)   self.revisionOrCommitBtn.pressed.connect(self.qinitOrCommit)   self.msgHistoryCombo.activated.connect(self.onMessageSelected) + self.queueListWidget.currentRowChanged.connect(self.onPatchSelected) + self.queueListWidget.itemActivated.connect(self.onGotoPatch) + self.queueListWidget.itemChanged.connect(self.onRenamePatch)     self.repo.configChanged.connect(self.onConfigChanged)   self.repo.repositoryChanged.connect(self.onRepositoryChanged) @@ -194,6 +197,32 @@
  pass # TODO: look for reject notifications   self.reload()   + @pyqtSlot(QListWidgetItem) + def onGotoPatch(self, item): + 'Patch has been activated (return), issue qgoto' + print 'qgoto', item._thgpatch + + @pyqtSlot(QListWidgetItem) + def onRenamePatch(self, item): + 'Patch has been renamed, issue qrename' + print 'qrename', item._thgpatch, item.text() + + @pyqtSlot(int) + def onPatchSelected(self, row): + 'Patch has been selected, update buttons' + if self.refreshing: + return + if row >= 0: + patch = self.queueListWidget.item(row)._thgpatch + applied = set([p.name for p in self.repo.mq.applied]) + self.qdeleteBtn.setEnabled(True) + self.qpushMoveBtn.setEnabled(patch not in applied) + self.setGuardsBtn.setEnabled(True) + else: + self.qdeleteBtn.setEnabled(False) + self.qpushMoveBtn.setEnabled(False) + self.setGuardsBtn.setEnabled(False) +   @pyqtSlot(int)   def onMessageSelected(self, row):   if self.messageEditor.text() and self.messageEditor.isModified(): @@ -271,20 +300,31 @@
    # TODO: maintain current selection   applied = set([p.name for p in repo.mq.applied]) + self.allguards = set()   items = []   for idx, patch in enumerate(repo.mq.series):   item = QListWidgetItem(hglib.tounicode(patch)) - if patch in applied: + if patch in applied: # applied   f = item.font()   f.setWeight(QFont.Bold)   item.setFont(f) + elif not repo.mq.pushable(idx)[0]: # guarded + f = item.font() + f.setWeight(QFont.Italics) + item.setFont(f)   patchguards = repo.mq.series_guards[idx]   if patchguards: - uguards = hglib.tounicode(patchguards) + for guard in patchguards: + self.allguards.add(guard[1:]) + uguards = hglib.tounicode(', '.join(patchguards))   else:   uguards = _('no guards')   uname = hglib.tounicode(patch) + item._thgpatch = patch   item.setToolTip(u'%s: %s' % (uname, uguards)) + item.setFlags(Qt.ItemIsSelectable | + Qt.ItemIsEditable | + Qt.ItemIsEnabled)   items.append(item)   for item in reversed(items):   self.queueListWidget.addItem(item) @@ -301,17 +341,21 @@
  self.revisionOrCommitBtn.setText(_('Commit Queue'))   else:   self.revisionOrCommitBtn.setText(_('Revision Queue')) + self.refreshSelectedGuards() + + self.qpushAllBtn.setEnabled(bool(repo.thgmqunappliedpatches)) + self.qpushBtn.setEnabled(bool(repo.thgmqunappliedpatches)) + self.qpushMoveBtn.setEnabled(False) + self.qdeleteBtn.setEnabled(False) + self.setGuardsBtn.setEnabled(False) + self.qpopBtn.setEnabled(bool(applied)) + self.qpopAllBtn.setEnabled(bool(applied))     # refresh self.messageEditor with qtip description, if not new   # set self.patchNameLE to qtip patch name, if not new   # refresh self.qnewOrRefreshBtn   # refresh self.fileListWidget   - self.refreshSelectedGuards() - self.refreshTbarStates() - - def refreshTbarStates(self): - pass     def refreshSelectedGuards(self):   count, total = 0, 0