Removed RCS-style IDs.
[multipass-eu.git] / src / slider.rb
1 class VerticalSlider
2         def initialize(c, name, rel, x, y, height = 95)
3                 background = nil
4                 clip = nil
5                 main = nil
6
7                 c.part("#{name}.background", :image) do |p|
8                         background = p
9
10                         p.description do |d|
11                                 d.rel[0].to = d.rel[1].to = rel
12                                 d.rel[0].set_offset(x, y)
13                                 d.rel[1].set_rel(0.0, 0.0)
14                                 d.rel[1].set_offset(x + 6, y + height)
15
16                                 d.image = "background-fillbar-vertical.png"
17                         end
18                 end
19
20                 c.part("#{name}.clip", :rect) do |p|
21                         background.clip = p
22                         clip = p
23
24                         p.description.rel[1].to = background
25                 end
26
27                 c.part("#{name}.trough", :rect) do |p|
28                         p.description do |d|
29                                 d.color = "#00000000"
30
31                                 d.rel[0].to = d.rel[1].to = background
32                                 d.rel[0].set_offset(3, -3)
33                                 d.rel[1].set_offset(3, 3)
34                         end
35                 end
36
37                 c.part(name, :image) do |p|
38                         main = p
39                         clip.description.rel[0].to = p
40
41                         p.dragable.enabled[1] = true
42                         p.dragable.step[1] = 1
43                         p.dragable.count[1] = 1
44                         p.dragable.confine = c.part("#{name}.trough")
45
46                         ["normal", "hover", "down"].each do |state|
47                                 s = state == "normal" ? "default" : state
48                                 p.description(s) do |d|
49                                         d.set_size(15, 12)
50                                         d.image = "slider-grip-#{state}.png"
51                                 end
52                         end
53                 end
54
55                 c.part("#{name}.led", :image) do |p|
56                         p.repeat_events = true
57
58                         p.description do |d|
59                                 d.visible = false
60                                 d.color = "#ffffff00"
61
62                                 d.rel[0].to = d.rel[1].to = main
63
64                                 d.auto_rel = true
65                                 d.image = "slider-grip-led.png"
66                         end
67
68                         p.description("visible") do |d|
69                                 d.visible = true
70                                 d.color = "#ffffffff"
71
72                                 d.rel[0].to = d.rel[1].to = main
73
74                                 d.auto_rel = true
75                                 d.image = "slider-grip-led.png"
76                         end
77                 end
78
79                 c.program("#{name}.led.show", :set_state) do |p|
80                         p.signal ="mouse,down,1"
81                         p.source = main.name
82                         p.state = "visible"
83                         p.mode = :accelerate
84                         p.time = 0.5
85                         p.targets << ProgramTarget.new(c.part("#{name}.led"))
86                 end
87
88                 c.program("#{name}.led.hide", :set_state) do |p|
89                         p.signal = "mouse,up,1"
90                         p.source = main.name
91                         p.state = "default"
92                         p.mode = :decelerate
93                         p.time = 0.3
94                         p.targets << ProgramTarget.new(c.part("#{name}.led"))
95                 end
96         end
97 end