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

repowidget, revdetails: handle any cset: and subrepo: link by RepoWidget

It changes revdetails, revmessages and revpanel to emit linkActivated signal.
Then only RepoWidget focuses on link handling.

Changeset c5ce70af9811

Parent 20930c62b180

by Yuya Nishihara

Changes to 4 files · Browse files at c5ce70af9811 Showing diff from parent 20930c62b180 Diff from another changeset...

 
155
156
157
158
 
159
160
161
 
208
209
210
 
 
 
 
 
 
 
 
 
 
 
 
 
211
212
213
 
236
237
238
239
240
241
242
243
 
244
245
246
 
155
156
157
 
158
159
160
161
 
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
 
249
250
251
 
 
 
 
 
252
253
254
255
@@ -155,7 +155,7 @@
  self.repotabs_splitter.setStretchFactor(1, 1)     self.revDetailsWidget = w = RevDetailsWidget(self.repo) - w.revisionLinkClicked.connect(self.goto) + w.linkActivated.connect(self._openLink)   w.fileview.showDescSignal.connect(self.showMessage)   self.logTabIndex = idx = tt.addTab(w, geticon('log'), '')   tt.setTabToolTip(idx, _("Revision details")) @@ -208,6 +208,19 @@
  vis = self.gototb.isVisible()   self.gototb.setVisible(not vis)   + @pyqtSlot(unicode) + def _openLink(self, link): + link = unicode(link) + handlers = {'cset': self.goto, + 'subrepo': self.repoLinkClicked.emit} + if ':' in link: + scheme, param = link.split(':') + hdr = handlers.get(scheme) + if hdr: + return hdr(param) + + QDesktopServices.openUrl(QUrl(link)) +   def getCommitWidget(self):   return getattr(self.repo, '_commitwidget', None) # TODO: ugly   @@ -236,11 +249,7 @@
  cw.output.connect(self.output)   cw.progress.connect(self.progress)   cw.makeLogVisible.connect(self.makeLogVisible) - - def openlink(link): - if unicode(link).startswith('subrepo:'): - self.repoLinkClicked.emit(link[8:]) - cw.linkActivated.connect(openlink) + cw.linkActivated.connect(self._openLink)     cw.showMessage.connect(self.showMessage)   return cw
 
23
24
25
26
 
27
28
29
 
131
132
133
134
 
135
136
137
 
150
151
152
153
 
154
155
156
 
164
165
166
167
168
169
170
171
172
 
23
24
25
 
26
27
28
29
 
131
132
133
 
134
135
136
137
 
150
151
152
 
153
154
155
156
 
164
165
166
 
 
 
167
168
169
@@ -23,7 +23,7 @@
 class RevDetailsWidget(QWidget):     showMessage = pyqtSignal(str) - revisionLinkClicked = pyqtSignal(str) + linkActivated = pyqtSignal(unicode)     def __init__(self, repo):   QWidget.__init__(self) @@ -131,7 +131,7 @@
  self.message_splitter.setOrientation(Qt.Vertical)   self.message_splitter.setOpaqueResize(True)   self.message = RevMessage(self.message_splitter) - self.message.revisionLinkClicked.connect(self.revisionLinkClicked_) + self.message.linkActivated.connect(self.linkActivated)     sp = SP(SP.Expanding, SP.Expanding)   sp.setHorizontalStretch(0) @@ -150,7 +150,7 @@
  self.fileview.setMinimumSize(QSize(0, 0))     self.revpanel = RevPanelWidget(self.repo) - self.revpanel.revisionLinkClicked.connect(self.revisionLinkClicked) + self.revpanel.linkActivated.connect(self.linkActivated)     cset_and_file_details_layout.addWidget(self.revpanel)   cset_and_file_details_layout.addWidget(self.message_splitter) @@ -164,9 +164,6 @@
  revisiondetails_layout.addWidget(self.searchbar)   self.fileview.filled.connect(self._updateHighlightText)   - def revisionLinkClicked_(self, rev): - self.revisionLinkClicked.emit(rev) -   def createActions(self):   self.actionDiffMode = QAction('Diff mode', self)   self.actionDiffMode.setCheckable(True)
 
20
21
22
23
 
24
25
26
 
41
42
43
44
45
46
47
48
49
50
51
52
 
 
53
54
55
 
20
21
22
 
23
24
25
26
 
41
42
43
 
 
 
 
 
 
 
 
 
44
45
46
47
48
@@ -20,7 +20,7 @@
 from tortoisehg.hgqt import qtlib    class RevMessage(QWidget): - revisionLinkClicked = pyqtSignal(str) + linkActivated = pyqtSignal(unicode)     def __init__(self, parent):   QWidget.__init__(self, parent) @@ -41,15 +41,8 @@
    self._htmlize = qtlib.descriptionhtmlizer()   - self._message.anchorClicked.connect(self.anchorClicked) - - def anchorClicked(self, qurl): - link = str(qurl.toString()) - if link.startswith('cset:'): - rev = link[len('cset:'):] - self.revisionLinkClicked.emit(rev) - else: - QDesktopServices.openUrl(qurl) + self._message.anchorClicked.connect( + lambda url: self.linkActivated.emit(url.toString()))     def displayRevision(self, ctx):   self.ctx = ctx
 
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
 
155
156
157
 
136
137
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
140
141
142
@@ -136,22 +136,7 @@
  style = csinfo.panelstyle(contents=('cset', 'branch', 'user',   'dateage', 'parents', 'children', 'tags', 'transplant',   'p4', 'svn'), selectable=True, expandable=True) - revpanel = csinfo.create(repo, style=style, custom=custom) - - class RevPanelWidget_(revpanel.__class__): - revisionLinkClicked = pyqtSignal(unicode) - """Emitted (changesetid) if user clicked link to revision""" - - @pyqtSlot(unicode) - def _maplink(self, link): - link = unicode(link) - if link.startswith('cset:'): - self.revisionLinkClicked.emit(link[5:]) - - revpanel.__class__ = RevPanelWidget_ - revpanel.linkActivated.connect(revpanel._maplink) - - return revpanel + return csinfo.create(repo, style=style, custom=custom)      def nomarkup(widget, item, value):