da_funk 3.11.1 → 3.12.0
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.
- 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
|