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

hgqt: emit progress reports as QStrings and objects

DataWrapper is no longer exposed from thread.py. Strings are converted
to unicode as early as possible and handled as native QStrings. Switched
the argument ordering to match ui.progress()

Changeset a42a0854db17

Parent bc11308b9b3d

by Steve Borho

Changes to 12 files · Browse files at a42a0854db17 Showing diff from parent bc11308b9b3d Diff from another changeset...

 
18
19
20
21
 
22
23
24
 
27
28
29
30
 
31
32
33
 
18
19
20
 
21
22
23
24
 
27
28
29
 
30
31
32
33
@@ -18,7 +18,7 @@
   from tortoisehg.hgqt.i18n import _  from tortoisehg.util import hglib, paths -from tortoisehg.hgqt import cmdui, qtlib, thgrepo, thread +from tortoisehg.hgqt import cmdui, qtlib, thgrepo    WD_PARENT = _('= Working Directory Parent =')   @@ -27,7 +27,7 @@
    output = pyqtSignal(QString, QString)   makeLogVisible = pyqtSignal(bool) - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)     def __init__(self, ui, repo, rev=None, parent=None):   super(ArchiveDialog, self).__init__(parent)
 
15
16
17
18
19
 
 
20
21
22
23
 
 
24
25
26
 
81
82
83
84
85
 
 
86
87
88
89
90
 
92
93
94
95
 
96
97
98
 
126
127
128
129
 
130
131
132
 
141
142
143
144
 
145
146
147
 
241
242
243
244
 
245
246
247
 
272
273
274
275
 
276
277
278
 
448
449
450
451
 
452
453
454
 
15
16
17
 
 
18
19
20
21
 
 
22
23
24
25
26
 
81
82
83
 
 
84
85
86
 
87
88
89
 
91
92
93
 
94
95
96
97
 
125
126
127
 
128
129
130
131
 
140
141
142
 
143
144
145
146
 
240
241
242
 
243
244
245
246
 
271
272
273
 
274
275
276
277
 
447
448
449
 
450
451
452
453
@@ -15,12 +15,12 @@
 local = localgettext()    def startProgress(topic, status): - topic, item, pos, total, unit = topic, '...', status, None, None - return thread.DataWrapper((topic, item, pos, total, unit)) + topic, item, pos, total, unit = topic, '...', status, None, '' + return (topic, pos, item, unit, total)    def stopProgress(topic): - topic, item, pos, total, unit = topic, None, None, None, None - return thread.DataWrapper((topic, item, pos, total, unit)) + topic, item, pos, total, unit = topic, '', None, None, '' + return (topic, pos, item, unit, total)    class ProgressMonitor(QWidget):   'Progress bar for use in workbench status bar' @@ -81,10 +81,9 @@
  self.removeWidget(pm)   del self.topics[key]   - @pyqtSlot(thread.DataWrapper) - def progress(self, wrapper, root=None): + @pyqtSlot(QString, object, QString, QString, object) + def progress(self, topic, pos, item, unit, total, root=None):   'Progress signal received from repowidget' - topic, item, pos, total, unit = wrapper.data   # topic is current operation   # pos is the current numeric position (revision, bytes)   # item is a non-numeric marker of current position (current file) @@ -92,7 +91,7 @@
  # total is the highest expected pos   # All topics should be marked closed by setting pos to None   - if topic is None: + if not topic:   # special progress report, close all pbars for repo   for key in self.topics:   if root is None or key[0] == root: @@ -126,7 +125,7 @@
  pm.setcounts(pos, total)   else:   if item: - item = hglib.tounicode(item)[-30:] + item = item[-30:]   pm.status.setText('%s %s' % (str(pos), item))   pm.unknown()   @@ -141,7 +140,7 @@
  commandCanceling = pyqtSignal()     output = pyqtSignal(QString, QString) - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)     def __init__(self, useInternal, parent):   super(Core, self).__init__() @@ -241,7 +240,7 @@
  return # run next command     # Emit 'close all progress bars' signal - self.progress.emit(thread.DataWrapper((None,)*5)) + self.progress.emit('', None, '', '', None)   self.commandFinished.emit(ret)     @pyqtSlot() @@ -272,7 +271,7 @@
  commandCanceling = pyqtSignal()     output = pyqtSignal(QString, QString) - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)   makeLogVisible = pyqtSignal(bool)     def __init__(self, useInternal=True, parent=None): @@ -448,7 +447,7 @@
  commandCanceling = pyqtSignal()     output = pyqtSignal(QString, QString) - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)   makeLogVisible = pyqtSignal(bool)     def __init__(self, title=_('TortoiseHg'), useInternal=True, parent=None):
 
16
17
18
19
20
 
21
22
23
 
32
33
34
35
 
36
37
38
 
16
17
18
 
 
19
20
21
22
 
31
32
33
 
34
35
36
37
@@ -16,8 +16,7 @@
 from tortoisehg.hgqt.i18n import _  from tortoisehg.util import hglib, shlib, paths, wconfig   -from tortoisehg.hgqt import qtlib, status, cmdui, branchop -from tortoisehg.hgqt import revpanel, thread +from tortoisehg.hgqt import qtlib, status, cmdui, branchop, revpanel  from tortoisehg.hgqt.sync import loadIniFile    # Technical Debt for CommitWidget @@ -32,7 +31,7 @@
  showMessage = pyqtSignal(unicode)   commitComplete = pyqtSignal()   - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)   output = pyqtSignal(QString, QString)   makeLogVisible = pyqtSignal(bool)  
 
12
13
14
15
 
16
17
18
 
346
347
348
349
 
350
351
352
 
368
369
370
371
372
 
373
374
375
 
12
13
14
 
15
16
17
18
 
346
347
348
 
349
350
351
352
 
368
369
370
 
 
371
372
373
374
@@ -12,7 +12,7 @@
 from tortoisehg.util import hglib, shlib, paths    from tortoisehg.hgqt.i18n import _ -from tortoisehg.hgqt import qtlib, htmlui, cmdui, thgrepo, thread +from tortoisehg.hgqt import qtlib, htmlui, cmdui, thgrepo    from PyQt4.QtCore import *  from PyQt4.QtGui import * @@ -346,7 +346,7 @@
  '''Background thread for searching repository history'''   searchComplete = pyqtSignal()   match = pyqtSignal(object) - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)   showMessage = pyqtSignal(unicode)     def __init__(self, repo, ufiles, minpct, copies): @@ -368,8 +368,7 @@
  if src:   src.psig.connect(self.psig)   def progress(self, topic, pos, item='', unit='', total=None): - w = thread.DataWrapper([topic, item, pos, total, unit]) - self.psig.emit(w) + self.psig.emit(topic, pos, item, unit, total)   progui = ProgUi()   progui.psig.connect(self.progress)   storeui = self.repo.ui
 
12
13
14
15
 
16
17
18
19
20
21
22
 
23
24
25
 
108
109
110
111
112
 
 
113
114
115
 
 
116
117
118
119
120
121
122
 
 
123
124
125
126
 
 
127
128
129
 
12
13
14
 
15
16
17
18
19
20
21
 
22
23
24
25
 
108
109
110
 
 
111
112
113
 
 
114
115
116
117
118
119
 
 
 
120
121
122
 
 
 
123
124
125
126
127
@@ -12,14 +12,14 @@
   from tortoisehg.util import hglib  from tortoisehg.hgqt.i18n import _ -from tortoisehg.hgqt import qtlib, cmdui, thread +from tortoisehg.hgqt import qtlib, cmdui    from PyQt4.QtCore import *  from PyQt4.QtGui import *    class PurgeDialog(QDialog):   - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)     def __init__(self, repo, unknown, ignored, parent):   QDialog.__init__(self, parent) @@ -108,22 +108,20 @@
  os.remove(path)     for i, f in enumerate(sorted(files)): - data = thread.DataWrapper(('deleting', f, i, len(files), None)) - self.progress.emit(data) + data = ('deleting', i, f, '', len(files)) + self.progress.emit(*data)   remove(removefile, f) - data = thread.DataWrapper(('deleting', None, None, len(files), None)) - self.progress.emit(data) + data = ('deleting', None, '', '', len(files)) + self.progress.emit(*data)     if delfolders:   for i, f in enumerate(sorted(directories, reverse=True)):   if not os.listdir(repo.wjoin(f)): - data = thread.DataWrapper(('rmdir', f, i, - len(directories), None)) - self.progress.emit(data) + data = ('rmdir', i, f, '', len(directories)) + self.progress.emit(*data)   remove(os.rmdir, f) - data = thread.DataWrapper(('rmdir', None, None, - len(directories), None)) - self.progress.emit(data) + data = ('rmdir', None, f, '', len(directories)) + self.progress.emit(*data)   return failures    def run(ui, *pats, **opts):
 
14
15
16
17
 
18
19
20
 
22
23
24
25
 
26
27
28
 
14
15
16
 
17
18
19
20
 
22
23
24
 
25
26
27
28
@@ -14,7 +14,7 @@
 from mercurial import hg, ui, util, error    from tortoisehg.hgqt.i18n import _ -from tortoisehg.hgqt import cmdui, qtlib, thgrepo, thread +from tortoisehg.hgqt import cmdui, qtlib, thgrepo  from tortoisehg.util import hglib, paths    class RenameDialog(QDialog): @@ -22,7 +22,7 @@
    output = pyqtSignal(QString, QString)   makeLogVisible = pyqtSignal(bool) - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)     def __init__(self, ui, pats, parent=None, **opts):   super(RenameDialog, self).__init__(parent=None)
 
18
19
20
21
 
22
23
24
 
36
37
38
39
40
 
41
42
43
 
139
140
141
142
143
 
 
144
145
146
 
171
172
173
174
175
 
 
 
176
177
178
 
18
19
20
 
21
22
23
24
 
36
37
38
 
39
40
41
42
43
 
139
140
141
 
 
142
143
144
145
146
 
171
172
173
 
 
174
175
176
177
178
179
@@ -18,7 +18,7 @@
 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, thread +from tortoisehg.hgqt import cmdui, update, tag, backout, merge, visdiff  from tortoisehg.hgqt import archive, thgimport, thgstrip, run, thgrepo, purge    from tortoisehg.hgqt.repoview import HgRepoView @@ -36,8 +36,8 @@
  showMessageSignal = pyqtSignal(str)   closeSelfSignal = pyqtSignal(QWidget)   - progress = pyqtSignal(thread.DataWrapper)   output = pyqtSignal(QString, QString) + progress = pyqtSignal(QString, object, QString, QString, object)   makeLogVisible = pyqtSignal(bool)     def __init__(self, repo, workbench): @@ -139,8 +139,8 @@
    # Shared widgets must be connected directly to workbench   cw.output.connect(self.workbench.log.output) - cw.progress.connect(lambda w: - self.workbench.statusbar.progress(w, self.repo.root)) + cw.progress.connect(lambda tp, p, i, u, tl: + self.workbench.statusbar.progress(tp, p, i, u, tl, self.repo.root))   cw.makeLogVisible.connect(self.workbench.log.setShown)     cw.showMessage.connect(self.showMessage) @@ -171,8 +171,9 @@
  sw = SyncWidget(self.repo.root, True, self)   # Shared widgets must be connected directly to workbench   sw.output.connect(self.workbench.log.output) - sw.progress.connect(lambda w: - self.workbench.statusbar.progress(w, self.repo.root)) + sw.progress.connect(lambda tp, p, i, u, tl: + self.workbench.statusbar.progress(tp, p, i, u, tl, + self.repo.root))   sw.makeLogVisible.connect(self.workbench.log.setShown)   self.repo._syncwidget = sw   sw.outgoingNodes.connect(self.setOutgoingNodes)
 
10
11
12
13
 
14
15
16
 
46
47
48
49
 
50
51
52
 
236
237
238
239
 
240
241
242
 
247
248
249
250
 
251
252
253
 
10
11
12
 
13
14
15
16
 
46
47
48
 
49
50
51
52
 
236
237
238
 
239
240
241
242
 
247
248
249
 
250
251
252
253
@@ -10,7 +10,7 @@
 from mercurial import ui, hg, util, patch, cmdutil, error, mdiff  from mercurial import context, merge, commands, subrepo  from tortoisehg.hgqt import qtlib, htmlui, chunkselect, wctxactions, visdiff -from tortoisehg.hgqt import thgrepo, cmdui, thread +from tortoisehg.hgqt import thgrepo, cmdui  from tortoisehg.util import paths, hglib  from tortoisehg.util.util import xml_escape  from tortoisehg.hgqt.i18n import _ @@ -46,7 +46,7 @@
  showMessage(unicode) - for status bar   titleTextChanged(QString) - for window title   ''' - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)   titleTextChanged = pyqtSignal(QString)   showMessage = pyqtSignal(unicode)   @@ -236,7 +236,7 @@
  sp = None   self.sp = sp   - self.progress.emit(cmdui.startProgress(_('Refresh'), _('status'))) + self.progress.emit(*cmdui.startProgress(_('Refresh'), _('status')))   self.refreshing = StatusThread(self.repo, self.pats, self.opts)   self.refreshing.finished.connect(self.reloadComplete)   self.refreshing.showMessage.connect(self.showMessage) @@ -247,7 +247,7 @@
  self.wctx = wctx   self.patchecked = patchecked.copy()   self.updateModel() - self.progress.emit(cmdui.stopProgress(_('Refresh'))) + self.progress.emit(*cmdui.stopProgress(_('Refresh')))   self.refreshing.wait()   self.refreshing = None  
 
17
18
19
20
 
21
22
23
 
30
31
32
33
 
34
35
36
 
17
18
19
 
20
21
22
23
 
30
31
32
 
33
34
35
36
@@ -17,7 +17,7 @@
   from tortoisehg.util import hglib, wconfig  from tortoisehg.hgqt.i18n import _ -from tortoisehg.hgqt import qtlib, cmdui, thgrepo, thread +from tortoisehg.hgqt import qtlib, cmdui, thgrepo    # TODO  # Write keyring help, connect to help button @@ -30,7 +30,7 @@
  showMessage = pyqtSignal(unicode)     output = pyqtSignal(QString, QString) - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)   makeLogVisible = pyqtSignal(bool)     def __init__(self, root, embedded=False, parent=None, **opts):
 
28
29
30
 
31
32
33
34
35
 
83
84
85
86
87
 
 
 
 
88
89
90
 
138
139
140
141
142
 
 
 
143
144
145
 
28
29
30
31
32
 
33
34
35
 
83
84
85
 
 
86
87
88
89
90
91
92
 
140
141
142
 
 
143
144
145
146
147
148
@@ -28,8 +28,8 @@
   class UiSignal(QObject):   writeSignal = pyqtSignal(QString, QString) + progressSignal = pyqtSignal(QString, object, QString, QString, object)   interactSignal = pyqtSignal(DataWrapper) - progressSignal = pyqtSignal(DataWrapper)     def __init__(self, responseq):   QObject.__init__(self) @@ -83,8 +83,10 @@
  return self.responseq.get(True)     def progress(self, topic, pos, item, unit, total): - data = DataWrapper((topic, item, pos, total, unit)) - self.progressSignal.emit(data) + topic = hglib.tounicode(topic) + item = hglib.tounicode(item) + unit = hglib.tounicode(unit) + self.progressSignal.emit(topic, pos, item, unit, total)    class QtUi(ui.ui):   def __init__(self, src=None, responseq=None): @@ -138,8 +140,9 @@
  # (msg=str, label=str)   outputReceived = pyqtSignal(QString, QString)   - # (topic=str, item=str, pos=int, total=int, unit=str) [wrapped] - progressReceived = pyqtSignal(DataWrapper) + # (topic=str, pos=int, item=str, unit=str, total=int) + # pos and total are emitted as object, since they may be None + progressReceived = pyqtSignal(QString, object, QString, QString, object)     # result: -1 - command is incomplete, possibly exited with exception   # 0 - command is finished successfully
 
14
15
16
17
 
18
19
20
21
22
 
23
24
25
 
14
15
16
 
17
18
19
20
21
 
22
23
24
25
@@ -14,12 +14,12 @@
   from tortoisehg.util import hglib, paths  from tortoisehg.hgqt.i18n import _ -from tortoisehg.hgqt import cmdui, csinfo, qtlib, thgrepo, thread +from tortoisehg.hgqt import cmdui, csinfo, qtlib, thgrepo    class UpdateDialog(QDialog):     output = pyqtSignal(QString, QString) - progress = pyqtSignal(thread.DataWrapper) + progress = pyqtSignal(QString, object, QString, QString, object)   makeLogVisible = pyqtSignal(bool)     def __init__(self, rev=None, repo=None, parent=None, opts={}):
 
428
429
430
431
 
 
432
433
434
 
428
429
430
 
431
432
433
434
435
@@ -428,7 +428,8 @@
  rw = RepoWidget(repo, self)   rw.showMessageSignal.connect(self.showMessage)   rw.closeSelfSignal.connect(self.repoTabCloseSelf) - rw.progress.connect(lambda w: self.statusbar.progress(w, repo.root)) + rw.progress.connect(lambda tp, p, i, u, tl: + self.statusbar.progress(tp, p, i, u, tl, repo.root))   rw.output.connect(self.log.output)   rw.makeLogVisible.connect(self.log.setShown)