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

revset: initial integration of revset into workbench

Changeset 238f1f04e489

Parent 604d5750f643

by Steve Borho

Changes to 3 files · Browse files at 238f1f04e489 Showing diff from parent 604d5750f643 Diff from another changeset...

 
10
11
12
 
13
14
15
16
 
 
 
 
 
 
17
18
19
 
22
23
24
25
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
28
29
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
32
33
 
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
29
30
31
 
 
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
@@ -10,10 +10,17 @@
 from PyQt4.QtGui import *    from tortoisehg.hgqt.i18n import _ +from tortoisehg.hgqt import revset    class RepoFilterBar(QToolBar):   """Toolbar for RepoWidget to filter changesets"""   + revisionSet = pyqtSignal(object) + clearSet = pyqtSignal() + + showMessage = pyqtSignal(QString) + progress = pyqtSignal(QString, object, QString, QString, object) +   branchChanged = pyqtSignal(unicode, bool)   """Emitted (branch, allparents) when branch selection changed"""   @@ -22,12 +29,73 @@
  self.layout().setContentsMargins(0, 0, 0, 0)   self._repo = repo   - self.addWidget(QLineEdit(text='### placeholder for revsets ###', - enabled=False)) + self.entrydlg = revset.RevisionSetQuery(repo, self) + self.entrydlg.progress.connect(self.progress) + self.entrydlg.showMessage.connect(self.showMessage) + self.entrydlg.queryIssued.connect(self.dialogQuery) + self.entrydlg.hide() + + self.clear = QPushButton(_('clear')) + self.addWidget(self.clear) + + self.editor = QPushButton(_('editor')) + self.editor.clicked.connect(self.openEditor) + self.addWidget(self.editor) + + s = QSettings() + self.entrydlg.restoreGeometry(s.value('revset/geom').toByteArray()) + self.revsethist = list(s.value('revset-queries').toStringList()) + self.revsetle = le = QLineEdit() + le.setCompleter(QCompleter(self.revsethist)) + le.returnPressed.connect(self.returnPressed) + # Requires Qt 4.7 + #self.revsetle.setPlaceholderText('### revision set query ###') + self.addWidget(le) + + self.clear.clicked.connect(le.clear) + self.clear.clicked.connect(self.clearSet) + + self.store = store = QPushButton(_('store')) + store.clicked.connect(self.saveQuery) + le.textChanged.connect(lambda t: store.setEnabled(False)) + store.setEnabled(False) + self.addWidget(store)     self._initbranchfilter()   self.refresh()   + def openEditor(self): + query = self.revsetle.text().simplified() + self.entrydlg.entry.setText(query) + self.entrydlg.entry.setCursorPosition(0, len(query)) + self.entrydlg.entry.setFocus() + self.entrydlg.setShown(True) + + def dialogQuery(self, query, revset): + self.revsetle.setText(query) + self.store.setEnabled(True) + self.revisionSet.emit(revset) + + def returnPressed(self): + 'Return pressed on revset line entry, forward to dialog' + query = self.revsetle.text().simplified() + if query: + self.entrydlg.entry.setText(query) + self.entrydlg.runQuery() + + def saveQuery(self): + query = self.revsetle.text() + if query in self.revsethist: + self.revsethist.remove(query) + self.revsethist.insert(0, query) + self.revsetle.setCompleter(QCompleter(self.revsethist)) + self.store.setEnabled(False) + self.showMessage.emit(_('Revision set query saved')) + + def storeConfigs(self, s): + s.setValue('revset/geom', self.entrydlg.saveGeometry()) + s.setValue('revset-queries', self.revsethist) +   def _initbranchfilter(self):   self._branchLabel = QToolButton(   text=_('Branch'), popupMode=QToolButton.InstantPopup,
 
75
76
77
 
 
 
 
78
79
80
 
202
203
204
205
 
 
 
 
 
206
207
208
 
 
 
 
209
210
211
 
549
550
551
 
552
553
554
 
75
76
77
78
79
80
81
82
83
84
 
206
207
208
 
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
 
561
562
563
564
565
566
567
@@ -75,6 +75,10 @@
    self.filterbar = RepoFilterBar(self.repo)   self.filterbar.branchChanged.connect(self.setBranch) + self.filterbar.progress.connect(self.progress) + self.filterbar.showMessage.connect(self.showMessage) + self.filterbar.revisionSet.connect(self.setRevisionSet) + self.filterbar.clearSet.connect(self.clearSet)   self.layout().addWidget(self.filterbar)     self.layout().addWidget(self.repotabs_splitter) @@ -202,10 +206,18 @@
  sw.showMessage.connect(self.showMessage)   return SharedWidget(sw)   - def setOutgoingNodes(self, nodes): + def clearSet(self): + self.repomodel.revset = set() + self.refresh() + + def setRevisionSet(self, nodes):   self.repomodel.revset = [self.repo[n].node() for n in nodes]   self.refresh()   + def setOutgoingNodes(self, nodes): + self.filterbar.revsetle.setText('outgoing()') + self.setRevisionSet(nodes) +   def createGrepWidget(self):   upats = {}   gw = SearchWidget(upats, self.repo, self) @@ -549,6 +561,7 @@
  self.revDetailsWidget.storeSettings()   s = QSettings()   self.commitDemand.forward('storeConfigs', s) + self.filterbar.storeConfigs(s)   return True     def incoming(self):
 
204
205
206
207
208
209
210
211
212
 
306
307
308
309
310
311
 
312
313
314
 
204
205
206
 
 
 
207
208
209
 
303
304
305
 
 
 
306
307
308
309
@@ -204,9 +204,6 @@
  self.stbar.addPermanentWidget(helpLabel)   layout.addWidget(self.stbar, 0)   - s = QSettings() - self.restoreGeometry(s.value('revset/geom').toByteArray()) -   def runQuery(self):   text = hglib.fromunicode(self.entry.text())   self.entry.setEnabled(False) @@ -306,9 +303,7 @@
  super(RevisionSetQuery, self).keyPressEvent(event)     def accept(self): - s = QSettings() - s.setValue('revset/geom', self.saveGeometry()) - super(RevisionSetQuery, self).accept() + self.hide()     def reject(self):   self.accept()