savio 0.1.3 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/setup CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/lib/savio/Button.rb CHANGED
@@ -1,247 +1,253 @@
1
- module Savio
2
- class Button
3
- include IORenderable
4
-
5
- attr_accessor :value, :enforceManager
6
- attr_reader :selected, :buttonManager, :style, :length, :height, :type, :timeLastClicked, :cooldownTime
7
-
8
- @@buttons = []
9
- def self.buttons
10
- @@buttons
11
- end
12
-
13
- def initialize(args = {})
14
- super(args)
15
-
16
- @@buttons.push(self)
17
-
18
- @value = args[:value] || 0
19
-
20
- @baseColor = args[:baseColor] || '#F5F5F5'
21
- @selectedColor = args[:selectedColor] || '#00B3EC'
22
- @labelColor = args[:labelColor] || '#F5F5F5'
23
-
24
- @cooldownTime = args[:cooldownTime] || 0.0
25
- @timeLastClicked = 0.0
26
-
27
- @selected = args[:selected] || false
28
-
29
- @buttonManager = args[:buttonManager] || nil
30
- @enforceManager = args[:enforceManager] || true
31
-
32
- @type = args[:type] || 'toggle'
33
- if @type != 'toggle' && @type != 'clicker'
34
- @type = 'toggle'
35
- end
36
-
37
- @style = args[:style] || 'badge'
38
- if @style != 'box' && @style != 'badge'
39
- @style = 'badge'
40
- end
41
-
42
- if @style == 'box'
43
- @size *= 2
44
- @labelColor = args[:baseColor] || '#757575'
45
- end
46
- @length = args[:length] || @size * 10
47
- @height = args[:height] || @size * 1.2
48
-
49
- @onClick = Proc.new {}
50
-
51
- build()
52
- end
53
-
54
- def size=(size)
55
- @length = size * 10
56
- @height = size * 1.2
57
- super(size)
58
- end
59
- def type=(newType)
60
- if newType == 'toggle' || newType == 'clicker'
61
- @type = newType
62
- end
63
- end
64
- def style=(style)
65
- if style == 'box' || style == 'badge'
66
- @style = style
67
- rebuild()
68
- end
69
- end
70
-
71
- def cooldownTime=(cooldown)
72
- @cooldownTime = cooldown.to_f
73
- end
74
-
75
- def baseColor=(c)
76
- @baseColor = c
77
- rebuild()
78
- end
79
- def selectedColor=(c)
80
- @selectedColor = c
81
- rebuild()
82
- end
83
- def labelColor=(c)
84
- @labelColor = c
85
- rebuild()
86
- end
87
-
88
- def selected=(bool)
89
- if bool == true
90
- select()
91
- elsif bool == false
92
- deselect()
93
- end
94
- end
95
-
96
- def onClick(&proc)
97
- @onClick = proc
98
- end
99
-
100
- def buttonManager=(newManager)
101
- if @buttonManager != nil
102
- if newManager.class.name != 'Savio::ButtonManager'
103
- raise ArgumentError, 'Given object ' + newManager.to_s + ' is not a ButtonManager. Must be of type ButtonManager'
104
- end
105
- @buttonManager.removeButton(self, false)
106
- end
107
-
108
- if newManager != nil
109
- @buttonManager = newManager
110
- if @buttonManager.buttons.include?(self) != true
111
- @buttonManager.addButton(self)
112
- end
113
- else
114
- @buttonManager = nil
115
- end
116
- end
117
-
118
- def select(enforce = @enforceManager)
119
- if Time.now.to_f - @timeLastClicked.to_f >= @cooldownTime.to_f
120
- @timeLastClicked = Time.now.to_f
121
- click()
122
- if enforce == true && @buttonManager != nil
123
- @buttonManager.select(self)
124
- else
125
- @selectCircle.add
126
- @selected = true
127
- if @type == 'clicker'
128
- fade = Thread.new {
129
- @selectCircle.add
130
- sleep(0.06)
131
- @selectCircle.remove
132
- }
133
- deselect(enforce)
134
- end
135
- end
136
- end
137
- end
138
-
139
- def deselect(enforce = @enforceManager)
140
- if enforce == true && @buttonManager != nil
141
- @buttonManager.deselect(self)
142
- else
143
- @selectCircle.remove
144
- @selected = false
145
- end
146
- end
147
-
148
- def toggle(enforce = @enforceManager)
149
- if @selected
150
- deselect(enforce)
151
- else
152
- select(enforce)
153
- end
154
- end
155
-
156
- def remove()
157
- super()
158
- @nameLabel.remove
159
- @baseCircle.remove
160
- @selectCircle.remove
161
- end
162
-
163
- def add()
164
- super()
165
- @nameLabel.add
166
- @baseCircle.add
167
- @selectCircle.add
168
- if @selected
169
- select()
170
- else
171
- deselect()
172
- end
173
- end
174
-
175
- def click()
176
- @onClick.call()
177
- end
178
-
179
- def build()
180
- @shown = true
181
- case @style
182
- when 'badge'
183
- @baseCircle = Circle.new(
184
- x: @x, y: @y,
185
- radius: @size,
186
- color: @baseColor,
187
- z: @z
188
- )
189
- @selectCircle = Circle.new(
190
- x: @x, y: @y,
191
- radius: @size * 0.8,
192
- color: @selectedColor,
193
- z: @z+1
194
- )
195
- @nameLabel = Text.new(
196
- @displayName.to_s,
197
- x: @x + @size * 2, y: @y - @size * 1.5,
198
- size: @size * 2,
199
- color: @labelColor,
200
- z: @z
201
- )
202
- when 'box'
203
- @baseCircle = Rectangle.new(
204
- x: @x, y: @y,
205
- height: @height, width: @length,
206
- color: @baseColor,
207
- z: @z
208
- )
209
- @selectCircle = Rectangle.new(
210
- x: @x + (@height * 0.1), y: @y + (@height * 0.1),
211
- height: @height - (@height * 0.2), width: @length - (@height * 0.2),
212
- color: @selectedColor,
213
- z: @z+1
214
- )
215
- @nameLabel = Text.new(
216
- @displayName.to_s,
217
- x: @x, y: @y,
218
- size: @size,
219
- color: @labelColor,
220
- z: @z+2
221
- )
222
- @nameLabel.x = @baseCircle.x + @baseCircle.width / 2 - @nameLabel.width / 2
223
- @nameLabel.y = @baseCircle.y + @baseCircle.height / 2 - @nameLabel.height / 2
224
- end
225
-
226
- if @buttonManager == nil
227
- if @selected
228
- select()
229
- else
230
- deselect()
231
- end
232
- else
233
- if @buttonManager.class.name != 'Savio::ButtonManager'
234
- raise ArgumentError, 'Given object ' + @buttonManager.to_s + ' is not a ButtonManager. Must be of type ButtonManager'
235
- end
236
- @buttonManager.addButton(self)
237
-
238
- if @selected
239
- @buttonManager.select(self)
240
- else
241
- @buttonManager.deselect(self)
242
- end
243
- end
244
-
245
- end
246
- end
247
- end
1
+ module Savio
2
+ class Button
3
+ include IORenderable
4
+
5
+ attr_accessor :value, :enforceManager
6
+ attr_reader :selected, :buttonManager, :style, :length, :height, :type, :timeLastClicked, :cooldownTime
7
+
8
+ @@buttons = []
9
+ def self.buttons
10
+ @@buttons
11
+ end
12
+
13
+ def initialize(args = {})
14
+ super(args)
15
+
16
+ @@buttons.push(self)
17
+
18
+ @baseColor = args[:baseColor] || Savio::Colors::White
19
+ @selectedColor = args[:selectedColor] || Savio::Colors::Blue
20
+ @labelActiveColor = args[:labelActiveColor] || Savio::Colors::White
21
+ @labelInactiveColor = args[:labelInactiveColor] || Savio::Colors::White
22
+
23
+ @cooldownTime = args[:cooldownTime] || 0.0
24
+ @timeLastClicked = 0.0
25
+
26
+ @selected = args[:selected] || false
27
+
28
+ @buttonManager = args[:buttonManager] || nil
29
+ @enforceManager = args[:enforceManager] || true
30
+
31
+ @type = args[:type] || 'toggle'
32
+ if @type != 'toggle' && @type != 'clicker'
33
+ @type = 'toggle'
34
+ end
35
+
36
+ @style = args[:style] || 'badge'
37
+ if @style != 'box' && @style != 'badge'
38
+ @style = 'badge'
39
+ end
40
+
41
+ if @style == 'box'
42
+ @size *= 2
43
+ @labelActiveColor = args[:labelActiveColor] || Savio::Colors::White
44
+ @labelInactiveColor = args[:labelInactiveColor] || Savio::Colors::Gray
45
+ end
46
+
47
+ @length = args[:length] || @size * 10
48
+ @height = args[:height] || @size * 2
49
+
50
+ @onClick = Proc.new {}
51
+
52
+ build()
53
+ end
54
+
55
+ def size=(size)
56
+ @length = size * 10
57
+ @height = size * 2
58
+ super(size)
59
+ end
60
+ def type=(newType)
61
+ if newType == 'toggle' || newType == 'clicker'
62
+ @type = newType
63
+ end
64
+ end
65
+ def style=(style)
66
+ if style == 'box' || style == 'badge'
67
+ @style = style
68
+ rebuild()
69
+ end
70
+ end
71
+
72
+ def cooldownTime=(cooldown)
73
+ @cooldownTime = cooldown.to_f
74
+ end
75
+
76
+ def baseColor=(c)
77
+ @baseColor = c
78
+ rebuild()
79
+ end
80
+ def selectedColor=(c)
81
+ @selectedColor = c
82
+ rebuild()
83
+ end
84
+ def labelColor=(c)
85
+ @labelColor = c
86
+ rebuild()
87
+ end
88
+
89
+ def selected=(bool)
90
+ if bool == true
91
+ select()
92
+ elsif bool == false
93
+ deselect()
94
+ end
95
+ end
96
+
97
+ def onClick(&proc)
98
+ @onClick = proc
99
+ end
100
+
101
+ def buttonManager=(newManager)
102
+ if @buttonManager != nil
103
+ if newManager.class.name != 'Savio::ButtonManager'
104
+ raise ArgumentError, 'Given object ' + newManager.to_s + ' is not a ButtonManager. Must be of type ButtonManager'
105
+ end
106
+ @buttonManager.removeButton(self, false)
107
+ end
108
+
109
+ if newManager != nil
110
+ @buttonManager = newManager
111
+ if @buttonManager.buttons.include?(self) != true
112
+ @buttonManager.addButton(self)
113
+ end
114
+ else
115
+ @buttonManager = nil
116
+ end
117
+ end
118
+
119
+ def select(enforce = @enforceManager)
120
+ if Time.now.to_f - @timeLastClicked.to_f >= @cooldownTime.to_f
121
+ @timeLastClicked = Time.now.to_f
122
+ click()
123
+ if enforce == true && @buttonManager != nil
124
+ @buttonManager.select(self)
125
+ else
126
+ @selectCircle.add
127
+ @nameLabel.color = @labelActiveColor
128
+ @selected = true
129
+ if @type == 'clicker'
130
+ fade = Thread.new {
131
+ @selectCircle.add
132
+ @nameLabel.color = @labelActiveColor
133
+ sleep(0.06)
134
+ @selectCircle.remove
135
+ @nameLabel.color = @labelInactiveColor
136
+ }
137
+ deselect(enforce)
138
+ end
139
+ end
140
+ end
141
+ end
142
+
143
+ def deselect(enforce = @enforceManager)
144
+ if enforce == true && @buttonManager != nil
145
+ @buttonManager.deselect(self)
146
+ else
147
+ @selectCircle.remove
148
+ @nameLabel.color = @labelInactiveColor
149
+ @selected = false
150
+ end
151
+ end
152
+
153
+ def toggle(enforce = @enforceManager)
154
+ if @selected
155
+ deselect(enforce)
156
+ else
157
+ select(enforce)
158
+ end
159
+ end
160
+
161
+ def remove()
162
+ super()
163
+ @nameLabel.remove
164
+ @baseCircle.remove
165
+ @selectCircle.remove
166
+ end
167
+
168
+ def add()
169
+ super()
170
+ @nameLabel.add
171
+ @baseCircle.add
172
+ @selectCircle.add
173
+ if @selected
174
+ select()
175
+ else
176
+ deselect()
177
+ end
178
+ end
179
+
180
+ def click()
181
+ @onClick.call()
182
+ end
183
+
184
+ def build()
185
+ @shown = true
186
+ case @style
187
+ when 'badge'
188
+ @baseCircle = Circle.new(
189
+ x: @x, y: @y,
190
+ radius: @size,
191
+ color: @baseColor,
192
+ z: @z
193
+ )
194
+ @selectCircle = Circle.new(
195
+ x: @x, y: @y,
196
+ radius: @size * 0.8,
197
+ color: @selectedColor,
198
+ z: @z+1
199
+ )
200
+ @nameLabel = Text.new(
201
+ @displayName.to_s,
202
+ x: @x + @size * 2, y: @y - @size * 1.5,
203
+ size: @size * 2,
204
+ color: @labelInactiveColor,
205
+ z: @z
206
+ )
207
+ @nameLabel.y = @baseCircle.y - @baseCircle.radius / 4 - @nameLabel.height / 2
208
+ when 'box'
209
+ @baseCircle = Rectangle.new(
210
+ x: @x, y: @y,
211
+ height: @height, width: @length,
212
+ color: @baseColor,
213
+ z: @z
214
+ )
215
+ @selectCircle = Rectangle.new(
216
+ x: @x + (@height * 0.1), y: @y + (@height * 0.1),
217
+ height: @height - (@height * 0.2), width: @length - (@height * 0.2),
218
+ color: @selectedColor,
219
+ z: @z+1
220
+ )
221
+ @nameLabel = Text.new(
222
+ @displayName.to_s,
223
+ x: @x, y: @y,
224
+ size: @size,
225
+ color: @labelInactiveColor,
226
+ z: @z+2
227
+ )
228
+ @nameLabel.x = @baseCircle.x + @baseCircle.width / 2 - @nameLabel.width / 2
229
+ @nameLabel.y = @baseCircle.y + @baseCircle.height / 2 - @nameLabel.height / 2
230
+ end
231
+
232
+ if @buttonManager == nil
233
+ if @selected
234
+ select()
235
+ else
236
+ deselect()
237
+ end
238
+ else
239
+ if @buttonManager.class.name != 'Savio::ButtonManager'
240
+ raise ArgumentError, 'Given object ' + @buttonManager.to_s + ' is not a ButtonManager. Must be of type ButtonManager'
241
+ end
242
+ @buttonManager.addButton(self)
243
+
244
+ if @selected
245
+ @buttonManager.select(self)
246
+ else
247
+ @buttonManager.deselect(self)
248
+ end
249
+ end
250
+
251
+ end
252
+ end
253
+ end