Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in tip

fogcreek bfprompt: refactor prompt to add as bfiles into separate module

Changeset a76a17144067

Parent f1ce494fb484

by David Golub

Changes to 3 files · Browse files at a76a17144067 Showing diff from parent f1ce494fb484 Diff from another changeset...

Change 1 of 1 Show Entire File tortoisehg/​hgqt/​bfprompt.py Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@@ -0,0 +1,52 @@
+# bfprompt.py - prompt to add large files as bfiles +# +# Copyright 2011 Fog Creek Software +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. + +import os + +from mercurial import match +from tortoisehg.hgqt import qtlib +from tortoisehg.hgqt.i18n import _ + +class BfilesPrompt(qtlib.CustomPrompt): + def __init__(self, parent, files=None): + qtlib.CustomPrompt.__init__(self, _('Confirm Add'), + _('Some of the files that you have selected are of a size ' + 'over 10 MB. You may make more efficient use of disk space ' + 'by adding these files as bfiles, which will store only the ' + 'most recent revision of each file in your local repository, ' + 'with older revisions available on the server. Do you wish ' + 'to add these files as bfiles?'), parent, + (_('Add as &Bfiles'), _('Add as &Normal Files'), _('Cancel')), + 0, 2, files) + +def promptForBfiles(parent, ui, repo, files): + bfiles = [] + usekbf = os.path.exists(repo.wjoin('.kbf')) + minsize = int(ui.config('kilnbfiles', 'size', default='10')) + patterns = ui.config('kilnbfiles', 'patterns', default=()) + if patterns: + patterns = patterns.split(' ') + matcher = match.match(repo.root, '', list(patterns)) + else: + matcher = None + for wfile in files: + if not matcher or not matcher(wfile) or not usekbf: + filesize = os.path.getsize(repo.wjoin(wfile)) + if filesize >= 10*1024*1024 and (filesize < minsize*1024*1024 or not usekbf): + bfiles.append(wfile) + if bfiles: + ret = BfilesPrompt(parent, files).run() + if ret == 0: + # add as bfiles + for bfile in bfiles: + files.remove(bfile) + elif ret == 1: + # add as normal files + bfiles = [] + elif ret == 2: + return None + return files, bfiles
 
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
 
552
553
554
 
 
 
 
 
 
 
 
 
 
 
 
555
556
557
@@ -552,18 +552,6 @@
  btn.clicked.emit(False)   super(CustomPrompt, self).keyPressEvent(event)   -class BfilesPrompt(CustomPrompt): - def __init__(self, parent, files=None): - CustomPrompt.__init__(self, _('Confirm Add'), - _('Some of the files that you have selected are of a size ' - 'over 10 MB. You may make more efficient use of disk space ' - 'by adding these files as bfiles, which will store only the ' - 'most recent revision of each file in your local repository, ' - 'with older revisions available on the server. Do you wish ' - 'to add these files as bfiles?'), parent, - (_('Add as &Bfiles'), _('Add as &Normal Files'), _('Cancel')), - 0, 2, files) -  def setup_font_substitutions():   QFont.insertSubstitutions('monospace', ['monaco', 'courier new'])  
 
8
9
10
11
12
 
 
13
14
15
 
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
 
 
 
 
299
300
301
 
8
9
10
 
 
11
12
13
14
15
 
271
272
273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
275
276
277
278
279
280
@@ -8,8 +8,8 @@
 import os  import re   -from mercurial import util, error, merge, commands, extensions, match -from tortoisehg.hgqt import qtlib, htmlui, visdiff +from mercurial import util, error, merge, commands, extensions +from tortoisehg.hgqt import qtlib, htmlui, visdiff, bfprompt  from tortoisehg.util import hglib, shlib  from tortoisehg.hgqt.i18n import _   @@ -271,31 +271,10 @@
   def add(parent, ui, repo, files):   if 'kbfiles' in repo.extensions(): - bfiles = [] - usekbf = os.path.exists(repo.wjoin('.kbf')) - minsize = int(ui.config('kilnbfiles', 'size', default='10')) - patterns = ui.config('kilnbfiles', 'patterns', default=()) - if patterns: - patterns = patterns.split(' ') - matcher = match.match(repo.root, '', list(patterns)) - else: - matcher = None - for wfile in files: - if not matcher or not matcher(wfile) or not usekbf: - filesize = os.path.getsize(repo.wjoin(wfile)) - if filesize >= 10*1024*1024 and (filesize < minsize*1024*1024 or not usekbf): - bfiles.append(wfile) - if bfiles: - ret = qtlib.BfilesPrompt(parent, files).run() - if ret == 0: - # add as bfiles - for bfile in bfiles: - files.remove(bfile) - elif ret == 1: - # add as normal files - bfiles = [] - elif ret == 2: - return False + result = bfprompt.promptForBfiles(parent, ui, repo, files) + if not result: + return False + files, bfiles = result   for name, module in extensions.extensions():   if name == 'kbfiles':   override_add = module.bfsetup.override_add