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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff422f0819641159d57b9ee06ff57d7801df0b2490f567e490786ff8b6ba9b39
4
- data.tar.gz: 398f0d2fb391fff08ece5fbea0cd35cb8757599a11de862fcf9f1f3918dbdfd9
3
+ metadata.gz: 8ffde433da3076be7fa1b4744b927c148a832a7422a3f49bc6d8ddef0077bcc9
4
+ data.tar.gz: 13f551cab79ffb6ea0cba2b79ce04508b9a59ffe1559e7d8aee5a055f9eebcec
5
5
  SHA512:
6
- metadata.gz: 3ec6672c67fb07a2daa651d2e7e70c199acacf586fb7ebb4c11a30005cde293b7429e185e67162e804c4a59353c7edf2d38f58c3e11e4106eaced129edb73cf0
7
- data.tar.gz: 8ec81d6d8649732f51619cf0b71a37f22a27e6b9eddcba20f62bf81cfe9e869a2d9e602c95355dbcb8835ef62b38558849a40cba9b3120b5606264080148e27b
6
+ metadata.gz: 98fa3b9a68ebed4f1257c6774568e5afa19ca5024395344e598c8dfb75d0d4301ae8d48fa0f58430af5d39d2757409d62e7b3c7866e6e54d35f62a81229e03b9
7
+ data.tar.gz: 7f6817f2c22d7abb575ea0745c50b0eddd8f3ce56814f3fc8b10008426b058c3c6a261252a1db87cf32876e7b02e2436c9aed4d8dacc81d6eb3abfc2b496a457
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- da_funk (3.11.1)
4
+ da_funk (3.12.0)
5
5
  archive-zip (~> 0.5)
6
6
  bundler
7
7
  cloudwalk_handshake
@@ -1,5 +1,10 @@
1
1
  # DaFunk
2
2
 
3
+ ### 3.12.0 - 2019-11-14
4
+
5
+ - Added DaFunk::Helper#wait_touchscreen_or_keyboard_event.
6
+ - Added Added DaFunk::Helper#menu_image_touchscreen_or_keyboard.
7
+
3
8
  ### 3.11.1 - 2019-10-24
4
9
 
5
10
  - Fixed method call on ISO8583Exception rescue.
@@ -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
@@ -1,4 +1,4 @@
1
1
  module DaFunk
2
- VERSION="3.11.1"
2
+ VERSION="3.12.0"
3
3
  end
4
4
 
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.11.1
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-10-24 00:00:00.000000000 Z
11
+ date: 2019-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake