# Date 1370087725 -32400
# Sat Jun 01 20:55:25 2013 +0900
# Node ID b345715253766cda9e332c9dafc1a38c82f25ff8
# Parent 5e8e69c85e8b2192191c381d31814b5327fdaac4
grep: use DialogKeeper to manage annotate dialogs
diff --git a/tortoisehg/hgqt/grep.py b/tortoisehg/hgqt/grep.py
--- a/tortoisehg/hgqt/grep.py
+++ b/tortoisehg/hgqt/grep.py
@@ -563,6 +563,10 @@ class MatchTree(QTableView):
vh.setDefaultSectionSize(20)
self.horizontalHeader().setStretchLastSection(True)
+ self._filedialogs = qtlib.DialogKeeper(MatchTree._createFileDialog,
+ MatchTree._genFileDialogKey,
+ self)
+
self.actions = {}
self.contextmenu = QMenu(self)
for key, name, func, shortcut in (
@@ -671,24 +675,15 @@ class MatchTree(QTableView):
self._openAnnotateDialog(repo, rev, path, line)
def _openAnnotateDialog(self, repo, rev, path, line):
- from tortoisehg.hgqt.run import qtrun
-
- # TODO: use DialogKeeper
- def run(ui, *pats, **opts):
- dlg = self._createFileDialog(opts['repo'], opts['canonpath'])
- dlg.setFileViewMode(fileview.AnnMode)
- dlg.goto(opts['rev'])
- dlg.showLine(line)
- dlg.setSearchPattern(hglib.tounicode(opts['pattern']))
- dlg.setSearchCaseInsensitive(opts['ignorecase'])
- return dlg
-
- ui, pattern, icase = self.repo.ui, self.pattern, self.icase
if rev is None:
rev = repo['.'].rev()
- opts = {'repo': repo, 'canonpath' : path, 'rev' : rev,
- 'line': line, 'pattern': pattern, 'ignorecase': icase}
- qtrun(run, ui, **opts)
+
+ dlg = self._filedialogs.open(repo, path)
+ dlg.setFileViewMode(fileview.AnnMode)
+ dlg.goto(rev)
+ dlg.showLine(line)
+ dlg.setSearchPattern(hglib.tounicode(self.pattern))
+ dlg.setSearchCaseInsensitive(self.icase)
def _createFileDialog(self, repo, path):
# dirty hack to pass workbench only if available
@@ -698,6 +693,9 @@ class MatchTree(QTableView):
repoviewer = self.window()
return filedialogs.FileLogDialog(repo, path, repoviewer=repoviewer)
+ def _genFileDialogKey(self, repo, filename):
+ return repo.wjoin(filename)