summaryrefslogtreecommitdiffstats
path: root/ext/tk/sample/tkextlib/vu/vu.rb
blob: d078ae16f230cfc9d903d03bf4fa46382929cb20 (plain)
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
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env ruby

require 'tk'
require 'tkextlib/vu'

#######################################

puts "Show off barchart and dial widgets"

speed = TkVariable.new(0)

dial = Tk::Vu::Dial.new(:resolution=>0.001, :from=>-0.1, :to=>0.1, 
                        :showvalue=>true, :minortickinterval=>0.01, 
                        :tickinterval=>0.1, :radius=>50, :label=>"Dial", 
                        :beginangle=>-20, :endangle=>260, :dialcolor=>'red3', 
                        :active=>'red2', :variable=>speed)

bar = Tk::Vu::Bargraph.new(:from=>0, :to=>100, :relief=>:groove, 
                           :border=>2, :label=>"Bar Chart")

#######################################

green   = 25
blue    = 50
purple  = 75
current = 50

def rand_bool
  
end

update = TkTimer.new(200, -1, proc{
                       if (rand() - 0.5 + speed.numeric * 3) > 0
                         current += 1
                       else
                         current -= 1
                       end
                       bar.set(current)
                       if current < green
                         current = 100 if current <= 0
                         bar[:barcolor] = 'green'
                       elsif current < blue
                         bar[:barcolor] = 'blue'
                       elsif current < purple
                         bar[:barcolor] = 'purple'
                       else
                         bar[:barcolor] = 'red'
                         current = 0 if current >= 100
                       end
                     })

#######################################

gobar = TkButton.new(:text=>"Start", :command=>proc{update.start})
nobar = TkButton.new(:text=>"Stop",  :command=>proc{update.stop})
quit  = TkButton.new(:text=>"Exit",  :command=>proc{exit})

Tk.grid('x', gobar, :sticky=>:ew, :padx=>4, :pady=>4)
Tk.grid(dial, bar, :sticky=>:news)
Tk.grid('x', nobar, :sticky=>:ew, :padx=>4, :pady=>4)
Tk.grid(quit, '-', '-', :sticky=>:ew, :padx=>4, :pady=>4)
Tk.root.grid_columnconfigure(2, :weight=>1)
Tk.root.grid_rowconfigure(1, :weight=>1)
                       
#######################################

Tk.mainloop