]> asedeno.scripts.mit.edu Git - git.git/blobdiff - lib/status_bar.tcl
git-gui: lib/index.tcl: handle files with % in the filename properly
[git.git] / lib / status_bar.tcl
index 0e2ac07a5e7a752ce80060379e683a66ecb98fdc..72a8fe1fd36932efcb1e2f2e18e4200150436854 100644 (file)
@@ -9,6 +9,7 @@ field w_c       ; # canvas we draw a progress bar into
 field status  {}; # single line of text we show
 field prefix  {}; # text we format into status
 field units   {}; # unit of progress
+field meter   {}; # current core git progress meter (if active)
 
 constructor new {path} {
        set w $path
@@ -45,6 +46,7 @@ method start {msg uds} {
        set status $msg
        set prefix $msg
        set units  $uds
+       set meter  {}
 }
 
 method update {have total} {
@@ -58,9 +60,25 @@ method update {have total} {
        $w_c coords bar 0 0 $pdone 20
 }
 
-method stop {msg} {
+method update_meter {buf} {
+       append meter $buf
+       set r [string last "\r" $meter]
+       if {$r == -1} {
+               return
+       }
+
+       set prior [string range $meter 0 $r]
+       set meter [string range $meter [expr {$r + 1}] end]
+       if {[regexp "\\((\\d+)/(\\d+)\\)\\s+done\r\$" $prior _j a b]} {
+               update $this $a $b
+       }
+}
+
+method stop {{msg {}}} {
        destroy $w_c
-       set status $msg
+       if {$msg ne {}} {
+               set status $msg
+       }
 }
 
 method show {msg {test {}}} {