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

hgqt: handle Mercurial output as QString pairs

Changeset bc11308b9b3d

Parent fe38c01bfcf8

by Steve Borho

Changes to 10 files · Browse files at bc11308b9b3d Showing diff from parent fe38c01bfcf8 Diff from another changeset...

 
25
26
27
28
 
29
30
31
 
25
26
27
 
28
29
30
31
@@ -25,7 +25,7 @@
 class ArchiveDialog(QDialog):   """ Dialog to archive a particular Mercurial revision """   - output = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   makeLogVisible = pyqtSignal(bool)   progress = pyqtSignal(thread.DataWrapper)  
 
140
141
142
143
 
144
145
146
 
183
184
185
186
 
187
188
189
 
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
225
226
 
263
264
265
266
267
268
269
 
 
270
271
272
 
 
 
 
 
 
273
274
275
 
279
280
281
282
 
283
284
285
 
455
456
457
458
 
459
460
461
 
140
141
142
 
143
144
145
146
 
183
184
185
 
186
187
188
189
 
200
201
202
 
203
204
205
206
 
 
207
208
209
210
211
212
 
 
 
 
 
 
 
 
213
214
215
 
252
253
254
 
 
 
 
255
256
257
258
 
259
260
261
262
263
264
265
266
267
 
271
272
273
 
274
275
276
277
 
447
448
449
 
450
451
452
453
@@ -140,7 +140,7 @@
  commandFinished = pyqtSignal(int)   commandCanceling = pyqtSignal()   - output = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   progress = pyqtSignal(thread.DataWrapper)     def __init__(self, useInternal, parent): @@ -183,7 +183,7 @@
    def get_rawoutput(self):   if self.thread: - return ''.join(self.thread.rawoutput) + return hglib.fromunicode(self.thread.rawoutput.join(''))   else:   return ''   @@ -200,27 +200,16 @@
  self.thread.commandFinished.connect(self.command_finished)     self.thread.outputReceived.connect(self.output) - self.thread.errorReceived.connect(self.output)   self.thread.progressReceived.connect(self.progress)     if self.internallog:   self.thread.outputReceived.connect(self.output_received) - self.thread.errorReceived.connect(self.output_received) -   if self.stbar:   self.thread.progressReceived.connect(self.stbar.progress)     self.thread.start()   return True   - def append_output(self, msg, style=''): - msg = msg.replace('\n', '<br />') - cursor = self.output_text.textCursor() - cursor.movePosition(QTextCursor.End) - cursor.insertHtml('<font style="%s">%s</font>' % (style, msg)) - max = self.output_text.verticalScrollBar().maximum() - self.output_text.verticalScrollBar().setSliderPosition(max) -   def clear_output(self):   if self.internallog:   self.output_text.clear() @@ -263,13 +252,16 @@
    self.commandCanceling.emit()   - @pyqtSlot(thread.DataWrapper) - def output_received(self, wrapper): - msg, label = wrapper.data - msg = hglib.tounicode(msg) + @pyqtSlot(QString, QString) + def output_received(self, msg, label):   msg = Qt.escape(msg)   style = qtlib.geteffect(label) - self.append_output(msg, style) + msg = msg.replace('\n', '<br />') + cursor = self.output_text.textCursor() + cursor.movePosition(QTextCursor.End) + cursor.insertHtml('<font style="%s">%s</font>' % (style, msg)) + max = self.output_text.verticalScrollBar().maximum() + self.output_text.verticalScrollBar().setSliderPosition(max)      class Widget(QWidget): @@ -279,7 +271,7 @@
  commandFinished = pyqtSignal(int)   commandCanceling = pyqtSignal()   - output = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   progress = pyqtSignal(thread.DataWrapper)   makeLogVisible = pyqtSignal(bool)   @@ -455,7 +447,7 @@
  commandFinished = pyqtSignal(int)   commandCanceling = pyqtSignal()   - output = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   progress = pyqtSignal(thread.DataWrapper)   makeLogVisible = pyqtSignal(bool)  
 
33
34
35
36
 
37
38
39
 
33
34
35
 
36
37
38
39
@@ -33,7 +33,7 @@
  commitComplete = pyqtSignal()     progress = pyqtSignal(thread.DataWrapper) - output = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   makeLogVisible = pyqtSignal(bool)     def __init__(self, pats, opts, root=None, embedded=False, parent=None):
 
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
 
 
 
56
57
58
 
40
41
42
 
 
 
 
 
 
 
 
43
44
45
46
 
47
48
49
50
51
52
53
@@ -40,19 +40,14 @@
  self.logte.setWordWrapMode(QTextOption.NoWrap)   vbox.addWidget(self.logte, 1)   - @pyqtSlot(thread.DataWrapper) - def output(self, wrapper): - msg, label = wrapper.data - msg = hglib.tounicode(msg) - msg = Qt.escape(msg) - style = qtlib.geteffect(label) - self.logMessage(msg, style) -   @pyqtSlot()   def clear(self):   self.logte.clear()   - def logMessage(self, msg, style=''): + @pyqtSlot(QString, QString) + def output(self, msg, label): + msg = Qt.escape(msg) + style = qtlib.geteffect(label)   msg = msg.replace('\n', '<br/>')   cursor = self.logte.textCursor()   cursor.movePosition(QTextCursor.End)
 
89
90
91
 
92
93
94
 
89
90
91
92
93
94
95
@@ -89,6 +89,7 @@
   def geteffect(labels):   'map labels like "log.date" to Qt font styles' + labels = str(labels) # Could be QString   effects = []   # Multiple labels may be requested   for l in labels.split():
 
20
21
22
23
 
24
25
26
 
20
21
22
 
23
24
25
26
@@ -20,7 +20,7 @@
 class RenameDialog(QDialog):   """TortoiseHg rename dialog"""   - output = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   makeLogVisible = pyqtSignal(bool)   progress = pyqtSignal(thread.DataWrapper)  
 
18
19
20
21
 
22
23
24
25
26
27
 
37
38
39
40
41
 
 
42
43
44
 
18
19
20
 
21
22
23
 
24
25
26
 
36
37
38
 
 
39
40
41
42
43
@@ -18,10 +18,9 @@
 from tortoisehg.hgqt.qtlib import CustomPrompt, SharedWidget, DemandWidget  from tortoisehg.hgqt.repomodel import HgRepoListModel  from tortoisehg.hgqt.quickbar import FindInGraphlogQuickBar -from tortoisehg.hgqt import cmdui, update, tag, backout, merge, visdiff +from tortoisehg.hgqt import cmdui, update, tag, backout, merge, visdiff, thread  from tortoisehg.hgqt import archive, thgimport, thgstrip, run, thgrepo, purge   -from tortoisehg.hgqt.thread import DataWrapper  from tortoisehg.hgqt.repoview import HgRepoView  from tortoisehg.hgqt.revdetails import RevDetailsWidget  from tortoisehg.hgqt.commit import CommitWidget @@ -37,8 +36,8 @@
  showMessageSignal = pyqtSignal(str)   closeSelfSignal = pyqtSignal(QWidget)   - progress = pyqtSignal(DataWrapper) - output = pyqtSignal(DataWrapper) + progress = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   makeLogVisible = pyqtSignal(bool)     def __init__(self, repo, workbench):
 
29
30
31
32
 
33
34
35
 
29
30
31
 
32
33
34
35
@@ -29,7 +29,7 @@
  outgoingNodes = pyqtSignal(object)   showMessage = pyqtSignal(unicode)   - output = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   progress = pyqtSignal(thread.DataWrapper)   makeLogVisible = pyqtSignal(bool)  
 
27
28
29
30
31
 
32
33
34
 
37
38
39
40
41
 
 
 
42
43
44
45
46
 
 
 
47
48
49
 
135
136
137
138
139
140
141
142
 
 
143
144
145
 
158
159
160
161
 
162
163
164
 
170
171
172
173
174
175
 
 
 
176
177
178
 
216
217
218
219
220
221
 
222
223
224
225
226
227
228
 
229
230
231
 
249
250
251
252
253
 
 
 
27
28
29
 
 
30
31
32
33
 
36
37
38
 
 
39
40
41
42
43
 
 
 
44
45
46
47
48
49
 
135
136
137
 
 
 
 
 
138
139
140
141
142
 
155
156
157
 
158
159
160
161
 
167
168
169
 
 
 
170
171
172
173
174
175
 
213
214
215
 
216
217
218
219
220
221
222
223
 
 
224
225
226
227
 
245
246
247
 
 
248
249
@@ -27,8 +27,7 @@
  self.data = data    class UiSignal(QObject): - writeSignal = pyqtSignal(DataWrapper) - errorSignal = pyqtSignal(DataWrapper) + writeSignal = pyqtSignal(QString, QString)   interactSignal = pyqtSignal(DataWrapper)   progressSignal = pyqtSignal(DataWrapper)   @@ -37,13 +36,14 @@
  self.responseq = responseq     def write(self, *args, **opts): - wrapper = DataWrapper((''.join(args), opts.get('label', ''))) - self.writeSignal.emit(wrapper) + msg = hglib.tounicode(''.join(args)) + label = hglib.tounicode(opts.get('label', '')) + self.writeSignal.emit(msg, label)     def write_err(self, *args, **opts): - for a in args: - data = DataWrapper((str(a), opts.get('label', 'ui.error'))) - self.errorSignal.emit(data) + msg = hglib.tounicode(''.join(args)) + label = hglib.tounicode(opts.get('label', 'ui.error')) + self.writeSignal.emit(msg, label)     def prompt(self, msg, choices, default):   try: @@ -135,11 +135,8 @@
  for feedback from Mercurial can be handled by the user via dialog   windows.   """ - # (msg=str, label=str) [wrapped] - outputReceived = pyqtSignal(DataWrapper) - - # (msg=str, label=str) [wrapped] - errorReceived = pyqtSignal(DataWrapper) + # (msg=str, label=str) + outputReceived = pyqtSignal(QString, QString)     # (topic=str, item=str, pos=int, total=int, unit=str) [wrapped]   progressReceived = pyqtSignal(DataWrapper) @@ -158,7 +155,7 @@
  self.ret = -1   self.abortbyuser = False   self.responseq = Queue.Queue() - self.rawoutput = [] + self.rawoutput = QStringList()     self.finished.connect(self.thread_finished)   @@ -170,9 +167,9 @@
  def thread_finished(self):   self.commandFinished.emit(self.ret)   - def output_handler(self, wrapper): - self.rawoutput.append(wrapper.data[0]) - self.outputReceived.emit(wrapper) + @pyqtSlot(QString, QString) + def output_handler(self, msg, label): + self.rawoutput.append(msg)     def interact_handler(self, wrapper):   prompt, password, choices, default = wrapper.data @@ -216,16 +213,15 @@
    ui = QtUi(responseq=self.responseq)   ui.sig.writeSignal.connect(self.output_handler) - ui.sig.errorSignal.connect(self.errorReceived)   ui.sig.interactSignal.connect(self.interact_handler)   ui.sig.progressSignal.connect(self.progressReceived) + ui.sig.writeSignal.connect(self.outputReceived)     if self.display:   cmd = '%% hg %s\n' % self.display   else:   cmd = '%% hg %s\n' % ' '.join(self.cmdline) - w = DataWrapper((cmd, 'control')) - self.outputReceived.emit(w) + self.outputReceived.emit(hglib.tounicode(cmd), 'control')     try:   for k, v in ui.configitems('defaults'): @@ -249,5 +245,5 @@
  msg = _('[command returned code %d %%s]') % int(self.ret)   else:   msg = _('[command completed successfully %s]') - w = DataWrapper((msg % time.asctime() + '\n', 'control')) - self.outputReceived.emit(w) + msg = hglib.tounicode(msg % time.asctime() + '\n') + self.outputReceived.emit(msg, 'control')
 
18
19
20
21
 
22
23
24
 
18
19
20
 
21
22
23
24
@@ -18,7 +18,7 @@
   class UpdateDialog(QDialog):   - output = pyqtSignal(thread.DataWrapper) + output = pyqtSignal(QString, QString)   progress = pyqtSignal(thread.DataWrapper)   makeLogVisible = pyqtSignal(bool)