File: progressbar.rb

package info (click to toggle)
geotoad 3.9.0-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 840 kB
  • ctags: 170
  • sloc: ruby: 3,297; makefile: 30
file content (56 lines) | stat: -rw-r--r-- 1,329 bytes parent folder | download
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
53
54
55
56
# $Id: progressbar.rb 561 2006-03-09 11:38:48Z thomas $

class ProgressBar
    def initialize(start, max, name)
        @value = 0
        @max = max
        @name = name
        display
    end
    
    def update(value)
        @value = value
    end
    
    def setName(name)
        @name = name
    end
    
    def updateText(value, valueText)
        @value = value
        @valueText = valueText
        display
    end
    
    def setMax(value)
        @max = max
    end
    
    def display
        if (@max == 0)
            showMax = "?"
        else
            showMax = @max.to_s
        end
        
        # if the value is 0 or less, don't bother to print up a bar.
        if (@value < 1)
            return
        end
        
        percentage = (@value.to_f / @max.to_f) * 100
        bardiv = percentage.divmod(33.333333333333333333333333333333333333)
        
        fullbars = bardiv[0]
        minibars = bardiv[1] / (16.66666666666666666666666666667).round
        # "p=#{percentage} f=#{fullbars} m=#{minibars}"
        meter = "=" * fullbars + "-" * minibars
        meter = meter.ljust(3)
        
        if (@valueText)
            puts "[#{meter}] (#{@value}/#{@max}) #{@name}: #{@valueText}"
        else
            puts "[#{meter}] (#{@value}/#{@max}) #{@name}"
        end
    end
end