Changeset 61fac0ba05d3…
Parent 53dbf4544208…
by
Changes to 3 files · Browse files at 61fac0ba05d3 Showing diff from parent 53dbf4544208 Diff from another changeset...
|
@@ -12,11 +12,13 @@ from tortoisehg.hgqt.i18n import _
from tortoisehg.hgqt import revset, qtlib
+_permanent_queries = ('head()', 'merge()', 'tagged()')
+
class RepoFilterBar(QToolBar):
"""Toolbar for RepoWidget to filter changesets"""
- revisionSet = pyqtSignal(object)
- clearSet = pyqtSignal()
+ setRevisionSet = pyqtSignal(object)
+ clearRevisionSet = pyqtSignal()
filterToggled = pyqtSignal(bool)
showMessage = pyqtSignal(QString)
@@ -36,40 +38,45 @@ 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.queryIssued.connect(self.queryIssued)
self.entrydlg.hide()
- self.clear = QPushButton(_('clear'))
- self.addWidget(self.clear)
+ self.revsetcombo = combo = QComboBox()
+ combo.setEditable(True)
+ combo.setMinimumContentsLength(50)
+ le = combo.lineEdit()
+ le.returnPressed.connect(self.returnPressed)
+ if hasattr(le, 'setPlaceholderText'): # Qt >= 4.7
+ le.setPlaceholderText('### revision set query ###')
+ self.addWidget(combo)
+ self.revsetle = le
- self.editor = QPushButton(_('editor'))
- self.editor.clicked.connect(self.openEditor)
- self.addWidget(self.editor)
+ icon = QIcon()
+ style = QApplication.style()
+ icon.addPixmap(style.standardPixmap(QStyle.SP_DialogDiscardButton))
+ self.clearBtn = QToolButton(self)
+ self.clearBtn.setIcon(icon)
+ self.clearBtn.setToolTip(_('Discard or clear current query'))
+ self.clearBtn.clicked.connect(le.clear)
+ self.clearBtn.clicked.connect(self.clearRevisionSet)
+ self.addWidget(self.clearBtn)
- 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, self))
- le.returnPressed.connect(self.returnPressed)
- if hasattr(self.revsetle, 'setPlaceholderText'): # Qt >= 4.7
- self.revsetle.setPlaceholderText('### revision set query ###')
- self.addWidget(le)
+ self.searchBtn = QToolButton(self)
+ self.searchBtn.setText(_('Search'))
+ self.searchBtn.setToolTip(_('Trigger search'))
+ self.searchBtn.clicked.connect(self.returnPressed)
+ self.addWidget(self.searchBtn)
- self.clear.clicked.connect(le.clear)
- self.clear.clicked.connect(self.clearSet)
+ self.editorBtn = QToolButton()
+ self.editorBtn.setText('...')
+ self.editorBtn.setToolTip(_('Open advanced query editor'))
+ self.editorBtn.clicked.connect(self.openEditor)
+ self.addWidget(self.editorBtn)
self.filtercb = f = QCheckBox(_('filter'))
- f.setChecked(s.value('revset-filter', True).toBool())
f.toggled.connect(self.filterToggled)
self.addWidget(f)
- 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()
@@ -83,10 +90,10 @@ self.entrydlg.entry.setFocus()
self.entrydlg.setShown(True)
- def dialogQuery(self, query, revset):
+ def queryIssued(self, query, revset):
self.revsetle.setText(query)
- self.store.setEnabled(True)
- self.revisionSet.emit(revset)
+ self.setRevisionSet.emit(revset)
+ self.saveQuery()
def returnPressed(self):
'Return pressed on revset line entry, forward to dialog'
@@ -94,17 +101,33 @@ if query:
self.entrydlg.entry.setText(query)
self.entrydlg.runQuery()
+ else:
+ self.clearRevisionSet.emit()
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))
- self.store.setEnabled(False)
- self.showMessage.emit(_('Revision set query saved'))
+ if query not in _permanent_queries:
+ self.revsethist.insert(0, query)
+ self.revsethist = self.revsethist[:20]
+ full = self.revsethist + list(_permanent_queries)
+ self.revsetcombo.clear()
+ self.revsetcombo.addItems(full)
+ #self.revsetle.setCompleter(QCompleter(full, self))
+ self.revsetle.setText(query)
- def storeConfigs(self, s):
+ def loadSettings(self, s):
+ self.entrydlg.restoreGeometry(s.value('revset/geom').toByteArray())
+ self.revsethist = list(s.value('revset-queries').toStringList())
+ self.filtercb.setChecked(s.value('revset-filter', True).toBool())
+ full = self.revsethist + list(_permanent_queries)
+ self.revsetcombo.clear()
+ self.revsetcombo.addItems(full)
+ self.revsetcombo.setCurrentIndex(-1)
+ #self.revsetle.setCompleter(QCompleter(full, self))
+
+ def saveSettings(self, s):
s.setValue('revset/geom', self.entrydlg.saveGeometry())
s.setValue('revset-queries', self.revsethist)
s.setValue('revset-filter', self.filtercb.isChecked())
|
@@ -81,7 +81,7 @@
self.setupUi()
self.createActions()
- self.restoreSettings()
+ self.loadSettings()
self.setupModels()
def setupUi(self):
@@ -116,8 +116,8 @@ 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.filterbar.setRevisionSet.connect(self.setRevisionSet)
+ self.filterbar.clearRevisionSet.connect(self.clearRevisionSet)
self.filterbar.filterToggled.connect(self.filterToggled)
self.bar_splitter.addWidget(self.filterbar)
@@ -339,7 +339,7 @@ self.clearBundle()
self.reload()
- def clearSet(self):
+ def clearRevisionSet(self):
self.revset = []
if self.revsetfilter:
self.reload()
@@ -681,37 +681,39 @@ def canGoForward(self):
return self.repoview.canGoForward()
- def storeSettings(self):
- self.revDetailsWidget.storeSettings()
+ def loadSettings(self):
s = QSettings()
repoid = str(self.repo[0])
- s.setValue('repowidget/splitter-'+repoid,
- self.repotabs_splitter.saveState())
-
- def restoreSettings(self):
- self.revDetailsWidget.restoreSettings()
- s = QSettings()
- repoid = str(self.repo[0])
+ self.revDetailsWidget.loadSettings(s)
+ self.filterbar.loadSettings(s)
self.repotabs_splitter.restoreState(
s.value('repowidget/splitter-'+repoid).toByteArray())
def okToContinue(self):
- return self.commitDemand.forward('canExit', default=True) and \
- self.syncDemand.forward('canExit', default=True) and \
- self.mqDemand.forward('canExit', default=True)
+ if not self.commitDemand.forward('canExit', default=True):
+ self.showMessage.emit(_('Commit tab cannot exit'))
+ return False
+ if not self.syncDemand.forward('canExit', default=True):
+ self.showMessage.emit(_('Sync tab cannot exit'))
+ return False
+ if not self.mqDemand.forward('canExit', default=True):
+ self.showMessage.emit(_('MQ tab cannot exit'))
+ return False
+ return True
def closeRepoWidget(self):
'''returns False if close should be aborted'''
if not self.okToContinue():
return False
+ s = QSettings()
if self.isVisible():
- # assuming here that there is at most one RepoWidget visible
- self.storeSettings()
- self.revDetailsWidget.storeSettings()
- s = QSettings()
+ repoid = str(self.repo[0])
+ s.setValue('repowidget/splitter-'+repoid,
+ self.repotabs_splitter.saveState())
+ self.revDetailsWidget.saveSettings(s)
self.commitDemand.forward('saveSettings', s, 'workbench')
self.manifestDemand.forward('saveSettings', s, 'workbench')
- self.filterbar.storeConfigs(s)
+ self.filterbar.saveSettings(s)
return True
def incoming(self):
|
@@ -45,7 +45,6 @@ self.fileview.showMessage.connect(self.showMessage)
self.fileview.grepRequested.connect(self.grepRequested)
self.fileview.revisionSelected.connect(self.revisionSelected)
- self.restoreSettings()
def setRepo(self, repo):
self.repo = repo
@@ -223,16 +222,14 @@ self.revision_selected(self._last_rev)
self.filelist.selectFile(f)
- def storeSettings(self):
- s = QSettings()
+ def saveSettings(self, s):
wb = "RevDetailsWidget/"
for n in self.splitternames:
s.setValue(wb + n, getattr(self, n).saveState())
s.setValue(wb + 'revpanel.expanded', self.revpanel.is_expanded())
self.fileview.saveSettings(s, 'revpanel/fileview')
- def restoreSettings(self):
- s = QSettings()
+ def loadSettings(self, s):
wb = "RevDetailsWidget/"
for n in self.splitternames:
getattr(self, n).restoreState(s.value(wb + n).toByteArray())
|
Loading...