da_funk 3.11.1 → 3.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/RELEASE_NOTES.md +5 -0
- data/lib/da_funk/helper.rb +92 -0
- data/lib/da_funk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ffde433da3076be7fa1b4744b927c148a832a7422a3f49bc6d8ddef0077bcc9
|
4
|
+
data.tar.gz: 13f551cab79ffb6ea0cba2b79ce04508b9a59ffe1559e7d8aee5a055f9eebcec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98fa3b9a68ebed4f1257c6774568e5afa19ca5024395344e598c8dfb75d0d4301ae8d48fa0f58430af5d39d2757409d62e7b3c7866e6e54d35f62a81229e03b9
|
7
|
+
data.tar.gz: 7f6817f2c22d7abb575ea0745c50b0eddd8f3ce56814f3fc8b10008426b058c3c6a261252a1db87cf32876e7b02e2436c9aed4d8dacc81d6eb3abfc2b496a457
|
data/Gemfile.lock
CHANGED
data/RELEASE_NOTES.md
CHANGED
data/lib/da_funk/helper.rb
CHANGED
@@ -145,6 +145,98 @@ module DaFunk
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
+
# Create a menu with touchscreen and keyboard selection support.
|
149
|
+
#
|
150
|
+
# @param path [String] file with path to be displayed
|
151
|
+
#
|
152
|
+
# @param menu_itens [Hash] Hash in this format:
|
153
|
+
# {
|
154
|
+
# menu_item_index => {:x => range..range, :y => range..range},
|
155
|
+
# menu_item_index => {:x => range..range, :y => range..range}
|
156
|
+
# }
|
157
|
+
#
|
158
|
+
# @param options [Hash] Hash containing options to change the menu behaviour.
|
159
|
+
#
|
160
|
+
# @example
|
161
|
+
# options = {
|
162
|
+
# # Input Timeout in miliseconds
|
163
|
+
# :timeout => 30_000
|
164
|
+
# }
|
165
|
+
#
|
166
|
+
# menu_itens = {
|
167
|
+
# 1 => {:x => 0..225, :y => 10..98},
|
168
|
+
# 2 => {:x => 290..300, :y => 50..100}
|
169
|
+
# }
|
170
|
+
#
|
171
|
+
# menu_image_touchscreen_or_keyboard('image.bmp', menu_itens, options)
|
172
|
+
#
|
173
|
+
# @return menu_item_index selected will be returned
|
174
|
+
# @return if timeout nil will be returned
|
175
|
+
def menu_image_touchscreen_or_keyboard(path, menu_itens, options = {})
|
176
|
+
return nil if menu_itens.empty?
|
177
|
+
|
178
|
+
Device::Display.print_bitmap(path)
|
179
|
+
|
180
|
+
timeout = options[:timeout] || Device::IO.timeout
|
181
|
+
options[:special_keys] = [Device::IO::CANCEL]
|
182
|
+
|
183
|
+
event, key = wait_touchscreen_or_keyboard_event(menu_itens, timeout, options)
|
184
|
+
|
185
|
+
if event == :keyboard
|
186
|
+
if key == Device::IO::CANCEL
|
187
|
+
options[:default]
|
188
|
+
else
|
189
|
+
index = key.to_i-1 == -1 ? 0 : key.to_i-1
|
190
|
+
menu_itens.keys[index]
|
191
|
+
end
|
192
|
+
elsif event == :touchscreen
|
193
|
+
menu_itens.select {|k, v| k == key}.shift[0]
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
# Wait for touchscreen or keyboard event.
|
198
|
+
#
|
199
|
+
# @param menu_itens [Hash] Hash in this format:
|
200
|
+
# {
|
201
|
+
# menu_item_index => {:x => range..range, :y => range..range},
|
202
|
+
# menu_item_index => {:x => range..range, :y => range..range}
|
203
|
+
# }
|
204
|
+
#
|
205
|
+
# @param timeout [Fixnum] in miliseconds.
|
206
|
+
#
|
207
|
+
# @example
|
208
|
+
#
|
209
|
+
# menu_itens = {
|
210
|
+
# 1 => {:x => 0..225, :y => 10..98},
|
211
|
+
# 2 => {:x => 290..300, :y => 50..100}
|
212
|
+
# }
|
213
|
+
#
|
214
|
+
# wait_touchscreen_or_keyboard_event(menu_itens, 30_000)
|
215
|
+
#
|
216
|
+
# @return array with event happened and key
|
217
|
+
def wait_touchscreen_or_keyboard_event(menu_itens, timeout, options = {})
|
218
|
+
time = Time.now + timeout / 1000
|
219
|
+
keys = ((1..(menu_itens.size)).to_a.map(&:to_s) + options[:special_keys]).flatten
|
220
|
+
|
221
|
+
loop do
|
222
|
+
break([:timeout, Device::IO::KEY_TIMEOUT]) if Time.now > time
|
223
|
+
x, y = getxy_stream(100)
|
224
|
+
if x && y
|
225
|
+
menu_itens.each do |key, value|
|
226
|
+
if value[:x].include?(x) && value[:y].include?(y)
|
227
|
+
return([:touchscreen, key])
|
228
|
+
end
|
229
|
+
end
|
230
|
+
elsif key = getc(100)
|
231
|
+
if key != Device::IO::KEY_TIMEOUT
|
232
|
+
if keys.include?(key)
|
233
|
+
break([:keyboard, key])
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
148
240
|
# Create a form menu.
|
149
241
|
#
|
150
242
|
# @param title [String] Text to display on line 0. If nil title won't be
|
data/lib/da_funk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: da_funk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thiago Scalone
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|