Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.1, 2.1.1, and 2.1.2

manifest: begin switch to an HgFileView instance

ManifestTaskWidget is no longer necessary since HgFileView handles its own
editor requests. The repowidget can now directly use a ManifestWidget.

Removed the QStackedWidget and _nullcontent. I think eventually we'll want to
show folders and subrepositories in the HgFileView.

These leaves a couple of important TODOs in manifestdialog.py

Changeset 2b3f52e1dd1c

Parent 1bda3d5a595a

by Steve Borho

Changes to 3 files · Browse files at 2b3f52e1dd1c Showing diff from parent 1bda3d5a595a Diff from another changeset...

 
260
261
262
 
 
 
 
263
264
265
 
260
261
262
263
264
265
266
267
268
269
@@ -260,6 +260,10 @@
  if rev != self._p_rev:   self.displayFile(rev=rev)   + def showLine(self, line): + if line < self.sci.lines(): + self.sci.setCursorPosition(line, 0) +   @pyqtSlot()   def clearDisplay(self):   self._filename = None
 
18
19
20
21
 
22
23
24
25
 
 
 
 
26
27
28
 
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
55
56
57
 
81
82
83
84
 
85
86
87
 
93
94
95
96
 
97
98
99
 
104
105
106
107
 
108
109
110
111
112
113
114
115
116
117
118
 
150
151
152
153
154
155
156
 
 
 
157
158
159
160
161
162
163
164
165
 
 
166
167
168
 
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
 
376
377
378
379
380
 
 
 
 
 
 
 
 
381
382
383
384
385
386
 
395
396
397
398
399
400
401
402
403
 
 
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
 
18
19
20
 
21
22
23
24
25
26
27
28
29
30
31
32
 
43
44
45
 
46
47
48
49
 
 
 
 
 
 
50
 
51
52
53
54
 
78
79
80
 
81
82
83
84
 
90
91
92
 
93
94
95
96
 
101
102
103
 
104
105
106
107
108
109
 
 
 
110
111
112
 
144
145
146
 
147
 
148
149
150
151
152
 
 
 
 
 
 
 
 
153
154
155
156
157
 
169
170
171
 
 
 
 
 
 
 
 
 
 
 
 
172
173
174
 
353
354
355
 
 
356
357
358
359
360
361
362
363
364
 
 
365
366
367
 
376
377
378
 
 
 
 
 
 
379
380
381
382
383
384
385
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
386
387
388
@@ -18,11 +18,15 @@
 from tortoisehg.util import paths, hglib    from tortoisehg.hgqt.i18n import _ -from tortoisehg.hgqt import qtlib, qscilib, annotate, status, thgrepo +from tortoisehg.hgqt import qtlib, qscilib, fileview, status, thgrepo  from tortoisehg.hgqt import visdiff, wctxactions, revert  from tortoisehg.hgqt.filedialogs import FileLogDialog, FileDiffDialog  from tortoisehg.hgqt.manifestmodel import ManifestModel   +# TODO +# Communicate status (MARC) from model to HgFileView +# Allow manifest mode in HgFileView even when no diffs are available +  class ManifestDialog(QMainWindow):   """   Qt4 dialog to display all files of a repo at a given revision @@ -39,19 +43,12 @@
  self._manifest_widget = ManifestWidget(repo, rev)   self._manifest_widget.revChanged.connect(self._updatewindowtitle)   self._manifest_widget.pathChanged.connect(self._updatewindowtitle) - self._manifest_widget.editSelected.connect(self._openInEditor)   self._manifest_widget.grepRequested.connect(self._openSearchWidget)   self.setCentralWidget(self._manifest_widget)   self.addToolBar(self._manifest_widget.toolbar)   - self._searchbar = qscilib.SearchToolBar() - connectsearchbar(self._manifest_widget, self._searchbar) - self.addToolBar(self._searchbar) - QShortcut(QKeySequence.Find, self, - lambda: self._searchbar.setFocus(Qt.OtherFocusReason)) -   self.setStatusBar(QStatusBar()) - self._manifest_widget.revisionHint.connect(self.statusBar().showMessage) + self._manifest_widget.showMessage.connect(self.statusBar().showMessage)     self._readsettings()   self._updatewindowtitle() @@ -81,7 +78,7 @@
    def setSearchPattern(self, text):   """Set search pattern [unicode]""" - self._searchbar.setPattern(text) + self._fileview.searchbar.setPattern(text)     @pyqtSlot(unicode, dict)   def _openSearchWidget(self, pattern, opts): @@ -93,7 +90,7 @@
  def _openInEditor(self, path, rev, line):   """Open editor to show the specified file"""   _openineditor(self._repo, path, rev, line, - pattern=self._searchbar.pattern(), parent=self) + pattern=self._fileview.searchbar.pattern(), parent=self)    class ManifestWidget(QWidget):   """Display file tree and contents at the specified revision""" @@ -104,15 +101,12 @@
  pathChanged = pyqtSignal(unicode)   """Emitted (path) when the current file path changed"""   - revisionHint = pyqtSignal(unicode) + showMessage = pyqtSignal(unicode)   """Emitted when to show revision summary as a hint"""     searchRequested = pyqtSignal(unicode)   """Emitted (pattern) when user request to search content"""   - editSelected = pyqtSignal(unicode, object, int) - """Emitted (path, rev, line) when user requests to open editor""" -   grepRequested = pyqtSignal(unicode, dict)   """Emitted (pattern, opts) when user request to search changelog"""   @@ -150,19 +144,14 @@
  navlayoutw = QWidget()   navlayoutw.setLayout(navlayout)   - self._contentview = QStackedWidget()   self._splitter.addWidget(navlayoutw) - self._splitter.addWidget(self._contentview)   self._splitter.setStretchFactor(0, 1) + + self._fileview = fileview.HgFileView(self._repo, self) + self._splitter.addWidget(self._fileview)   self._splitter.setStretchFactor(1, 3) - - self._nullcontent = QWidget() - self._contentview.addWidget(self._nullcontent) - self._fileview = annotate.AnnotateView(self._repo) - self._fileview.sourceChanged.connect(self.setSource) - self._contentview.addWidget(self._fileview) - for name in ('revisionHint', 'searchRequested', 'editSelected', - 'grepRequested'): + self._fileview.revisionSelected.connect(self.setRev) + for name in ('showMessage', 'searchRequested', 'grepRequested'):   getattr(self._fileview, name).connect(getattr(self, name))     def loadSettings(self, qs, prefix): @@ -180,18 +169,6 @@
  statustext='MAC', text=_('Status'))   self._toolbar.addWidget(self._statusfilter)   - self._action_annotate_mode = QAction(_('Annotate'), self, checkable=True) - self._action_annotate_mode.toggled.connect( - self._fileview.setAnnotationEnabled) - self._action_annotate_mode.setEnabled(self.rev is not None) - self._toolbar.addAction(self._action_annotate_mode) - - if hasattr(self, '_searchbar'): - self._action_find = self._searchbar.toggleViewAction() - self._action_find.setIcon(qtlib.geticon('edit-find')) - self._action_find.setShortcut(QKeySequence.Find) - self._toolbar.addAction(self._action_find) -   self._actions = {}   for name, desc, icon, key, tip, cb in [   ('navigate', _('File history'), 'hg-log', 'Shift+Return', @@ -376,11 +353,15 @@
  self._rev = rev   self._setupmodel()   self.setPath(path) - if self.path in self._repo[rev]: - self._fileview.setSource(path, rev, line) + ctx = self._repo[rev] + if self.path in ctx: + self._fileview.setContext(ctx) + self._fileview.displayFile(path, rev) + if line: + self._fileview.showLine(int(line) - 1) + else: + self._fileview.clearDisplay()   if revchanged: - # annotate working copy is not supported - self._action_annotate_mode.setEnabled(rev is not None)   self.revChanged.emit(rev)     @property @@ -395,38 +376,13 @@
    @pyqtSlot()   def _updatecontent(self): - if hglib.fromunicode(self.path) not in self._repo[self._rev]: - self._contentview.setCurrentWidget(self._nullcontent) - return - - self._contentview.setCurrentWidget(self._fileview) - self._fileview.setSource(self.path, self._rev) + self._fileview.setContext(self._repo[self._rev]) + self._fileview.displayFile(self.path, self._rev, 'C') # TODO     @pyqtSlot()   def _emitPathChanged(self):   self.pathChanged.emit(self.path)   -class ManifestTaskWidget(ManifestWidget): - """Manifest widget designed for task tab""" - - def __init__(self, repo, rev, parent): - super(ManifestTaskWidget, self).__init__(repo, rev, parent) - self.editSelected.connect(self._openInEditor) - - @util.propertycache - def _searchbar(self): - searchbar = qscilib.SearchToolBar(hidable=True) - searchbar.hide() - self.layout().addWidget(searchbar) - connectsearchbar(self, searchbar) - return searchbar - - @pyqtSlot(unicode, object, int) - def _openInEditor(self, path, rev, line): - """Open editor to show the specified file""" - _openineditor(self._repo, path, rev, line, - pattern=self._searchbar.pattern(), parent=self) -  def connectsearchbar(manifestwidget, searchbar):   """Connect searchbar to manifest widget"""   searchbar.conditionChanged.connect(manifestwidget.highlightText)
 
27
28
29
30
 
31
32
33
 
261
262
263
264
 
265
266
267
 
268
269
270
 
27
28
29
 
30
31
32
33
 
261
262
263
 
264
265
266
 
267
268
269
270
@@ -27,7 +27,7 @@
 from tortoisehg.hgqt.repoview import HgRepoView  from tortoisehg.hgqt.revdetails import RevDetailsWidget  from tortoisehg.hgqt.commit import CommitWidget -from tortoisehg.hgqt.manifestdialog import ManifestTaskWidget +from tortoisehg.hgqt.manifestdialog import ManifestWidget  from tortoisehg.hgqt.sync import SyncWidget  from tortoisehg.hgqt.grep import SearchWidget  from tortoisehg.hgqt.pbranch import PatchBranchWidget @@ -261,10 +261,10 @@
  rev = None   else:   rev = self.rev - w = ManifestTaskWidget(self.repo, rev, self) + w = ManifestWidget(self.repo, rev, self)   w.loadSettings(QSettings(), 'workbench')   w.revChanged.connect(self.repoview.goto) - w.revisionHint.connect(self.showMessage) + w.showMessage.connect(self.showMessage)   w.grepRequested.connect(self.grep)   return w