Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.7, 0.7.1, and 0.7.2

rename: thread refresh of unknown list

Changeset 181bbf268775

Parent 807bdf597760

by Steve Borho

Changes to one file · Browse files at 181bbf268775 Showing diff from parent 807bdf597760 Diff from another changeset...

Change 1 of 3 Show Entire File hggtk/​rename.py Stacked
 
7
8
9
 
10
11
12
 
 
13
14
15
 
162
163
164
 
 
 
 
 
 
 
 
165
166
 
167
168
169
170
171
172
173
174
175
 
176
177
178
179
 
 
 
 
 
 
 
 
 
 
 
180
181
182
 
245
246
247
 
 
 
248
249
250
251
252
253
 
7
8
9
10
11
12
13
14
15
16
17
18
 
165
166
167
168
169
170
171
172
173
174
175
176
 
177
178
179
180
181
182
183
 
184
 
185
186
187
 
 
188
189
190
191
192
193
194
195
196
197
198
199
200
201
 
264
265
266
267
268
269
270
 
 
271
272
273
@@ -7,9 +7,12 @@
 import os  import sys  import gtk +import gobject  import pango  import cStringIO  import shlib +import Queue +import threading, thread2  from dialog import error_dialog  from mercurial import hg, ui, mdiff, cmdutil, match, util  from hglib import toutf, diffexpand @@ -162,21 +165,37 @@
  self.refresh(unkmodel)     def refresh(self, unkmodel): + q = Queue.Queue() + unkmodel.clear() + thread = thread2.Thread(target=self.unknown_thread, + args=(self.root, q)) + thread.start() + gobject.timeout_add(50, self.unknown_wait, thread, q, unkmodel) + + def unknown_thread(self, root, q):   try: - repo = hg.repository(ui.ui(), self.root) + repo = hg.repository(ui.ui(), root)   except RepoError:   return   matcher = match.always(repo.root, repo.root)   status = repo.status(node1=repo.dirstate.parents()[0], node2=None,   match=matcher, ignored=False, clean=False, unknown=True)   (modified, added, removed, deleted, unknown, ignored, clean) = status - unkmodel.clear()   for u in unknown: - unkmodel.append( [u] ) + q.put( u )   for a in added:   if not repo.dirstate.copied(a): - unkmodel.append( [a] ) - self.deleted = deleted + q.put( a ) + + def unknown_wait(self, thread, q, unkmodel): + while q.qsize(): + unkmodel.append( [q.get(0)] ) + if thread.isAlive(): + return True + else: + #if threading.activeCount() == 1: + # self.stop_button.set_sensitive(False) + return False     def save_settings(self, w, event, settings, hpaned, vpaned, adjustment):   settings.set_value('vpaned', vpaned.get_position()) @@ -245,9 +264,10 @@
  src, dest, percent, sensitive = row   if not sensitive:   continue + if not os.path.exists(repo.wjoin(src)): + # Mark missing rename source as removed + repo.remove([src])   repo.copy(src, dest) - if src in self.deleted: - repo.remove([src])   shlib.shell_notify([src, dest])   # Mark all rows with this target file as non-sensitive   for row in cmodel: