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 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