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

guess: show diff contents, cancel thread if close is attempted

Changeset 4f718b4a75af

Parent 47fd8085e741

by Steve Borho

Changes to one file · Browse files at 4f718b4a75af Showing diff from parent 47fd8085e741 Diff from another changeset...

 
12
13
14
15
 
16
17
18
 
99
100
101
 
102
103
104
 
116
117
118
 
119
120
121
 
198
199
200
201
 
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
 
 
 
 
 
 
 
 
 
 
 
 
 
222
223
224
 
229
230
231
232
233
234
235
236
237
 
 
 
 
 
 
 
 
 
 
 
 
238
239
240
 
12
13
14
 
15
16
17
18
 
99
100
101
102
103
104
105
 
117
118
119
120
121
122
123
 
200
201
202
 
203
204
205
206
207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
 
228
229
230
 
 
 
 
 
 
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
@@ -12,7 +12,7 @@
 from tortoisehg.util import hglib, shlib, paths    from tortoisehg.hgqt.i18n import _ -from tortoisehg.hgqt import qtlib +from tortoisehg.hgqt import qtlib, htmlui    from PyQt4.QtCore import *  from PyQt4.QtGui import * @@ -99,6 +99,7 @@
  self.matchlv.setItemsExpandable(False)   self.matchlv.setRootIsDecorated(False)   self.matchlv.setModel(MatchModel()) + self.matchlv.clicked.connect(self.showDiff)   buthbox = QHBoxLayout()   matchbtn = QPushButton(_('Accept Selected Matches'))   matchbtn.clicked.connect(self.acceptMatch) @@ -116,6 +117,7 @@
  difflabel = QLabel(_('<b>Differences from Source to Dest</b>'))   diffvbox.addWidget(difflabel)   difftb = QTextBrowser() + difftb.document().setDefaultStyleSheet(qtlib.thgstylesheet)   diffvbox.addWidget(difftb)   self.difftb = difftb   @@ -198,27 +200,24 @@
  self.matchAccepted.emit()   self.refresh()   - def showDiff(self): + def showDiff(self, index):   'User selected a row in the candidate tree'   hglib.invalidaterepo(self.repo)   ctx = self.repo['.']   hu = htmlui.htmlui() - for index in self.matchlv.selectedIndexes(): - row = self.matchlv.model().getRow(index) - src, dest, percent = self.matchlv.model().getRow(index) - aa = self.repo.wread(dest) - rr = ctx.filectx(src).data() - opts = mdiff.defaultopts - difftext = mdiff.unidiff(rr, '', aa, '', src, - dest, None, opts=opts) - if not difftext: - t = _('%s and %s have identical contents\n\n') % (usrc, udest) - hu.write(t, label='ui.error') - else: - for t, l in qtlib.difflabel(difftext.splitlines, True): - hu.write(t, label=l) - # for now, only show one at a time - break + row = self.matchlv.model().getRow(index) + src, dest, percent = self.matchlv.model().getRow(index) + aa = self.repo.wread(dest) + rr = ctx.filectx(src).data() + opts = mdiff.defaultopts + difftext = mdiff.unidiff(rr, '', aa, '', src, + dest, None, opts=opts) + if not difftext: + t = _('%s and %s have identical contents\n\n') % (src, dest) + hu.write(t, label='ui.error') + else: + for t, l in qtlib.difflabel(difftext.splitlines, True): + hu.write(t, label=l)   self.difftb.setHtml(hu.getdata()[0])     def accept(self): @@ -229,12 +228,18 @@
  QDialog.accept(self)     def reject(self): - # cancel active thread - s = QSettings() - s.setValue('guess/geom', self.saveGeometry()) - s.setValue('guess/vsplit-state', self.vsplit.saveState()) - s.setValue('guess/hsplit-state', self.hsplit.saveState()) - QDialog.reject(self) + if self.thread and self.thread.isRunning(): + self.thread.terminate() + # This can lockup, so stop waiting after 2sec + self.thread.wait( 2000 ) + self.finished() + self.thread = None + else: + s = QSettings() + s.setValue('guess/geom', self.saveGeometry()) + s.setValue('guess/vsplit-state', self.vsplit.saveState()) + s.setValue('guess/hsplit-state', self.hsplit.saveState()) + QDialog.reject(self)      class MatchModel(QAbstractTableModel):