reflexion 0.6.0 → 0.7.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/.doc/ext/reflex/application.cpp +37 -6
- data/.doc/ext/reflex/capture_event.cpp +1 -1
- data/.doc/ext/reflex/chase_constraint.cpp +1 -1
- data/.doc/ext/reflex/clipboard.cpp +1 -1
- data/.doc/ext/reflex/color_event.cpp +76 -0
- data/.doc/ext/reflex/color_picker.cpp +113 -0
- data/.doc/ext/reflex/constraint.cpp +1 -1
- data/.doc/ext/reflex/contact_event.cpp +1 -1
- data/.doc/ext/reflex/control_change_event.cpp +1 -1
- data/.doc/ext/reflex/device.cpp +1 -1
- data/.doc/ext/reflex/device_event.cpp +1 -1
- data/.doc/ext/reflex/draw_event.cpp +1 -1
- data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
- data/.doc/ext/reflex/event.cpp +1 -1
- data/.doc/ext/reflex/file_dialog.cpp +181 -0
- data/.doc/ext/reflex/file_event.cpp +103 -0
- data/.doc/ext/reflex/filter.cpp +1 -1
- data/.doc/ext/reflex/focus_event.cpp +1 -1
- data/.doc/ext/reflex/frame_event.cpp +1 -1
- data/.doc/ext/reflex/gamepad.cpp +48 -0
- data/.doc/ext/reflex/image_view.cpp +1 -1
- data/.doc/ext/reflex/key_event.cpp +1 -274
- data/.doc/ext/reflex/line_shape.cpp +1 -1
- data/.doc/ext/reflex/link_constraint.cpp +1 -1
- data/.doc/ext/reflex/menu.cpp +6 -5
- data/.doc/ext/reflex/midi.cpp +9 -2
- data/.doc/ext/reflex/midi_event.cpp +1 -1
- data/.doc/ext/reflex/motion_event.cpp +1 -1
- data/.doc/ext/reflex/native.cpp +18 -6
- data/.doc/ext/reflex/note_event.cpp +1 -1
- data/.doc/ext/reflex/pin.cpp +1 -1
- data/.doc/ext/reflex/pointer.cpp +1 -1
- data/.doc/ext/reflex/pointer_event.cpp +2 -2
- data/.doc/ext/reflex/polygon_shape.cpp +1 -1
- data/.doc/ext/reflex/rect_shape.cpp +1 -1
- data/.doc/ext/reflex/reflex.cpp +566 -232
- data/.doc/ext/reflex/screen.cpp +27 -1
- data/.doc/ext/reflex/scroll_event.cpp +1 -1
- data/.doc/ext/reflex/selector.cpp +1 -1
- data/.doc/ext/reflex/shape.cpp +1 -1
- data/.doc/ext/reflex/snap_constraint.cpp +1 -1
- data/.doc/ext/reflex/style.cpp +1 -1
- data/.doc/ext/reflex/style_length.cpp +1 -1
- data/.doc/ext/reflex/text_event.cpp +104 -0
- data/.doc/ext/reflex/timer.cpp +1 -1
- data/.doc/ext/reflex/timer_event.cpp +1 -1
- data/.doc/ext/reflex/update_event.cpp +1 -1
- data/.doc/ext/reflex/view.cpp +110 -56
- data/.doc/ext/reflex/wheel_constraint.cpp +1 -1
- data/.doc/ext/reflex/wheel_event.cpp +1 -1
- data/.doc/ext/reflex/window.cpp +226 -17
- data/.github/workflows/release-gem.yml +2 -49
- data/.github/workflows/tag.yml +5 -28
- data/.github/workflows/test.yml +1 -37
- data/ChangeLog.md +54 -0
- data/Gemfile.lock +13 -8
- data/Rakefile +13 -2
- data/Reflex.podspec +2 -2
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +41 -6
- data/ext/reflex/capture_event.cpp +1 -1
- data/ext/reflex/chase_constraint.cpp +1 -1
- data/ext/reflex/clipboard.cpp +1 -1
- data/ext/reflex/color_event.cpp +80 -0
- data/ext/reflex/color_picker.cpp +121 -0
- data/ext/reflex/constraint.cpp +1 -1
- data/ext/reflex/contact_event.cpp +1 -1
- data/ext/reflex/control_change_event.cpp +1 -1
- data/ext/reflex/device.cpp +1 -1
- data/ext/reflex/device_event.cpp +1 -1
- data/ext/reflex/draw_event.cpp +1 -1
- data/ext/reflex/ellipse_shape.cpp +1 -1
- data/ext/reflex/event.cpp +1 -1
- data/ext/reflex/extconf.rb +4 -2
- data/ext/reflex/file_dialog.cpp +194 -0
- data/ext/reflex/file_event.cpp +108 -0
- data/ext/reflex/filter.cpp +1 -1
- data/ext/reflex/focus_event.cpp +1 -1
- data/ext/reflex/frame_event.cpp +1 -1
- data/ext/reflex/gamepad.cpp +50 -0
- data/ext/reflex/image_view.cpp +1 -1
- data/ext/reflex/key_event.cpp +1 -275
- data/ext/reflex/line_shape.cpp +1 -1
- data/ext/reflex/link_constraint.cpp +1 -1
- data/ext/reflex/menu.cpp +8 -7
- data/ext/reflex/midi.cpp +11 -3
- data/ext/reflex/midi_event.cpp +1 -1
- data/ext/reflex/motion_event.cpp +1 -1
- data/ext/reflex/native.cpp +18 -6
- data/ext/reflex/note_event.cpp +1 -1
- data/ext/reflex/pin.cpp +1 -1
- data/ext/reflex/pointer.cpp +1 -1
- data/ext/reflex/pointer_event.cpp +2 -2
- data/ext/reflex/polygon_shape.cpp +1 -1
- data/ext/reflex/rect_shape.cpp +1 -1
- data/ext/reflex/reflex.cpp +568 -232
- data/ext/reflex/screen.cpp +31 -2
- data/ext/reflex/scroll_event.cpp +1 -1
- data/ext/reflex/selector.cpp +1 -1
- data/ext/reflex/selector.h +9 -9
- data/ext/reflex/shape.cpp +1 -1
- data/ext/reflex/snap_constraint.cpp +1 -1
- data/ext/reflex/style.cpp +1 -1
- data/ext/reflex/style_length.cpp +1 -1
- data/ext/reflex/text_event.cpp +111 -0
- data/ext/reflex/timer.cpp +1 -1
- data/ext/reflex/timer_event.cpp +1 -1
- data/ext/reflex/update_event.cpp +1 -1
- data/ext/reflex/view.cpp +121 -61
- data/ext/reflex/wheel_constraint.cpp +1 -1
- data/ext/reflex/wheel_event.cpp +1 -1
- data/ext/reflex/window.cpp +256 -25
- data/include/reflex/application.h +10 -0
- data/include/reflex/color_picker.h +65 -0
- data/include/reflex/event.h +178 -88
- data/include/reflex/file_dialog.h +73 -0
- data/include/reflex/gamepad.h +3 -0
- data/include/reflex/menu.h +3 -3
- data/include/reflex/midi.h +3 -0
- data/include/reflex/reflex.h +2 -0
- data/include/reflex/ruby/application.h +6 -1
- data/include/reflex/ruby/color_picker.h +89 -0
- data/include/reflex/ruby/event.h +62 -29
- data/include/reflex/ruby/file_dialog.h +89 -0
- data/include/reflex/ruby/gamepad.h +46 -0
- data/include/reflex/ruby/reflex.h +3 -0
- data/include/reflex/ruby/view.h +92 -44
- data/include/reflex/ruby/window.h +60 -1
- data/include/reflex/ruby.h +3 -0
- data/include/reflex/screen.h +11 -2
- data/include/reflex/view.h +28 -16
- data/include/reflex/window.h +40 -8
- data/include/reflex.h +3 -0
- data/lib/reflex/application.rb +5 -5
- data/lib/reflex/autoinit.rb +3 -1
- data/lib/reflex/button.rb +3 -3
- data/lib/reflex/color_event.rb +16 -0
- data/lib/reflex/color_picker.rb +45 -0
- data/lib/reflex/control_change_event.rb +17 -0
- data/lib/reflex/file_dialog.rb +70 -0
- data/lib/reflex/file_event.rb +37 -0
- data/lib/reflex/helper.rb +58 -7
- data/lib/reflex/key_event.rb +9 -4
- data/lib/reflex/menu.rb +17 -1
- data/lib/reflex/model.rb +19 -19
- data/lib/reflex/note_event.rb +1 -1
- data/lib/reflex/pointer.rb +14 -3
- data/lib/reflex/pointer_event.rb +12 -1
- data/lib/reflex/reflex.rb +5 -0
- data/lib/reflex/shape.rb +14 -14
- data/lib/reflex/style.rb +16 -16
- data/lib/reflex/text_event.rb +40 -0
- data/lib/reflex/timer.rb +3 -3
- data/lib/reflex/view.rb +29 -14
- data/lib/reflex/wheel_event.rb +12 -3
- data/lib/reflex/window.rb +25 -13
- data/lib/reflex.rb +8 -2
- data/reflex.gemspec +4 -4
- data/samples/ime.rb +100 -0
- data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
- data/samples/menu.rb +4 -1
- data/samples/model.rb +3 -3
- data/samples/test/alert.rb +93 -0
- data/samples/test/always_on.rb +76 -0
- data/samples/test/app_background.rb +51 -0
- data/samples/test/boundary.rb +75 -0
- data/samples/test/callback_exception.rb +101 -0
- data/samples/test/cancel.rb +53 -0
- data/samples/test/color_picker.rb +63 -0
- data/samples/test/file_dialog.rb +102 -0
- data/samples/window_style.rb +156 -0
- data/src/application.cpp +159 -18
- data/src/application.h +92 -7
- data/src/color_picker.cpp +113 -0
- data/src/color_picker.h +36 -0
- data/src/event.cpp +410 -252
- data/src/event.h +12 -0
- data/src/file_dialog.cpp +163 -0
- data/src/file_dialog.h +52 -0
- data/src/gamepad.cpp +42 -5
- data/src/gamepad.h +4 -0
- data/src/ios/app_delegate.mm +5 -3
- data/src/ios/application.mm +24 -0
- data/src/ios/color_picker.mm +19 -0
- data/src/ios/file_dialog.mm +21 -0
- data/src/ios/gamepad.mm +4 -4
- data/src/ios/menu.mm +5 -0
- data/src/ios/reflex.mm +8 -0
- data/src/ios/screen.mm +26 -0
- data/src/ios/view_controller.mm +2 -30
- data/src/ios/window.mm +38 -9
- data/src/menu.cpp +66 -4
- data/src/menu.h +17 -1
- data/src/midi.cpp +61 -31
- data/src/osx/app_delegate.h +4 -0
- data/src/osx/app_delegate.mm +102 -22
- data/src/osx/application.mm +88 -6
- data/src/osx/color_picker.mm +112 -0
- data/src/osx/event.h +10 -0
- data/src/osx/event.mm +84 -30
- data/src/osx/file_dialog.mm +168 -0
- data/src/osx/gamepad.mm +2 -2
- data/src/osx/gamepad_hid.mm +1 -1
- data/src/osx/menu.mm +177 -33
- data/src/osx/native_window.h +16 -2
- data/src/osx/native_window.mm +114 -57
- data/src/osx/opengl_view.h +2 -1
- data/src/osx/opengl_view.mm +184 -43
- data/src/osx/reflex.mm +38 -0
- data/src/osx/screen.mm +36 -0
- data/src/osx/window.mm +106 -24
- data/src/pointer.cpp +13 -4
- data/src/pointer.h +4 -0
- data/src/rays.h +46 -0
- data/src/sdl/application.cpp +68 -8
- data/src/sdl/color_picker.cpp +18 -0
- data/src/sdl/event.cpp +24 -3
- data/src/sdl/event.h +12 -0
- data/src/sdl/file_dialog.cpp +20 -0
- data/src/sdl/gamepad.cpp +3 -7
- data/src/sdl/menu.cpp +5 -0
- data/src/sdl/reflex.cpp +20 -0
- data/src/sdl/screen.cpp +36 -0
- data/src/sdl/window.cpp +142 -29
- data/src/shape.cpp +15 -10
- data/src/view.cpp +287 -198
- data/src/view.h +4 -2
- data/src/vk.h +416 -0
- data/src/win32/application.cpp +162 -12
- data/src/win32/application.h +20 -0
- data/src/win32/color_picker.cpp +82 -0
- data/src/win32/event.cpp +114 -12
- data/src/win32/event.h +21 -4
- data/src/win32/file_dialog.cpp +226 -0
- data/src/win32/gamepad.cpp +9 -2
- data/src/win32/menu.cpp +191 -53
- data/src/win32/menu.h +9 -1
- data/src/win32/opengl.cpp +2 -9
- data/src/win32/reflex.cpp +44 -3
- data/src/win32/screen.cpp +164 -3
- data/src/win32/screen.h +8 -0
- data/src/win32/tray.cpp +191 -0
- data/src/win32/tray.h +22 -0
- data/src/win32/vk.cpp +11 -0
- data/src/win32/window.cpp +809 -148
- data/src/win32/window.h +6 -0
- data/src/window.cpp +718 -185
- data/src/window.h +66 -33
- data/src/world.cpp +9 -1
- data/test/helper.rb +17 -0
- data/test/test_application.rb +90 -1
- data/test/test_chase_constraint.rb +1 -3
- data/test/test_color_event.rb +36 -0
- data/test/test_color_picker.rb +62 -0
- data/test/test_constraint.rb +2 -4
- data/test/test_event.rb +1 -1
- data/test/test_file_dialog.rb +48 -0
- data/test/test_file_event.rb +43 -0
- data/test/test_has_text_preedit.rb +54 -0
- data/test/test_key_event.rb +20 -5
- data/test/test_link_constraint.rb +1 -3
- data/test/test_menu.rb +40 -10
- data/test/test_pointer.rb +33 -23
- data/test/test_pointer_event.rb +24 -9
- data/test/test_reflex.rb +36 -0
- data/test/test_screen.rb +24 -2
- data/test/test_snap_constraint.rb +1 -3
- data/test/test_text_event.rb +54 -0
- data/test/test_view.rb +41 -4
- data/test/test_wheel_constraint.rb +1 -3
- data/test/test_wheel_event.rb +13 -5
- data/test/test_window.rb +196 -44
- metadata +80 -10
- data/.github/workflows/utils.rb +0 -127
data/test/test_menu.rb
CHANGED
|
@@ -125,22 +125,52 @@ class TestMenu < Test::Unit::TestCase
|
|
|
125
125
|
def test_shortcut()
|
|
126
126
|
m = menu
|
|
127
127
|
m.shortcut_key = :s
|
|
128
|
-
assert_equal
|
|
129
|
-
assert_equal [],
|
|
128
|
+
assert_equal :s, m.shortcut_key
|
|
129
|
+
assert_equal [], m.shortcut_modifiers
|
|
130
130
|
|
|
131
|
-
m.shortcut = [:c, :
|
|
132
|
-
assert_equal
|
|
133
|
-
assert_equal [:
|
|
131
|
+
m.shortcut = [:c, :control]
|
|
132
|
+
assert_equal :c, m.shortcut_key
|
|
133
|
+
assert_equal [:control], m.shortcut_modifiers
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def test_shortcut_key_symbol_roundtrip()
|
|
137
|
+
m = menu
|
|
138
|
+
# non-character keys are representable now (were impossible as strings)
|
|
139
|
+
m.shortcut_key = :f1
|
|
140
|
+
assert_equal :f1, m.shortcut_key
|
|
141
|
+
m.shortcut_key = :left
|
|
142
|
+
assert_equal :left, m.shortcut_key
|
|
143
|
+
|
|
144
|
+
# a KeyCode constant is also accepted directly
|
|
145
|
+
m.shortcut_key = Reflex::KEY_A
|
|
146
|
+
assert_equal :a, m.shortcut_key
|
|
147
|
+
|
|
148
|
+
# nil clears it
|
|
149
|
+
m.shortcut_key = nil
|
|
150
|
+
assert_nil m.shortcut_key
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def test_shortcut_key_unknown_symbol_raises()
|
|
154
|
+
assert_raise(ArgumentError) {menu.shortcut_key = :nonexistent}
|
|
134
155
|
end
|
|
135
156
|
|
|
136
157
|
def test_shortcut_key_keeps_modifiers()
|
|
137
158
|
m = menu
|
|
138
|
-
m.shortcut = [:c, :
|
|
139
|
-
assert_equal
|
|
140
|
-
assert_equal %i[
|
|
159
|
+
m.shortcut = [:c, :control, :shift]
|
|
160
|
+
assert_equal :c, m.shortcut_key
|
|
161
|
+
assert_equal %i[control shift].sort, m.shortcut_modifiers.sort
|
|
141
162
|
m.shortcut_key = :v
|
|
142
|
-
assert_equal
|
|
143
|
-
assert_equal %i[
|
|
163
|
+
assert_equal :v, m.shortcut_key
|
|
164
|
+
assert_equal %i[control shift].sort, m.shortcut_modifiers.sort
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def test_shortcut_modifiers_unsupported_on_platform_raise()
|
|
168
|
+
if osx?
|
|
169
|
+
assert_raise(ArgumentError) {menu.shortcut_modifiers = [:win]}
|
|
170
|
+
elsif win32?
|
|
171
|
+
assert_raise(ArgumentError) {menu.shortcut_modifiers = [:command]}
|
|
172
|
+
assert_raise(ArgumentError) {menu.shortcut_modifiers = [:win]}
|
|
173
|
+
end
|
|
144
174
|
end
|
|
145
175
|
|
|
146
176
|
def test_image()
|
data/test/test_pointer.rb
CHANGED
|
@@ -3,22 +3,24 @@ require_relative 'helper'
|
|
|
3
3
|
|
|
4
4
|
class TestPointer < Test::Unit::TestCase
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
6
|
+
R = Reflex
|
|
7
|
+
|
|
8
|
+
TYPE_NONE = R::Pointer::TYPE_NONE
|
|
9
|
+
MOUSE = R::Pointer::MOUSE
|
|
10
|
+
LEFT = R::Pointer::MOUSE_LEFT
|
|
11
|
+
RIGHT = R::Pointer::MOUSE_RIGHT
|
|
12
|
+
MIDDLE = R::Pointer::MOUSE_MIDDLE
|
|
13
|
+
TOUCH = R::Pointer::TOUCH
|
|
14
|
+
PEN = R::Pointer::PEN
|
|
15
|
+
|
|
16
|
+
ACTION_NONE = R::Pointer::ACTION_NONE
|
|
17
|
+
DOWN = R::Pointer::DOWN
|
|
18
|
+
UP = R::Pointer::UP
|
|
19
|
+
MOVE = R::Pointer::MOVE
|
|
20
|
+
CANCEL = R::Pointer::CANCEL
|
|
21
|
+
ENTER = R::Pointer::ENTER
|
|
22
|
+
LEAVE = R::Pointer::LEAVE
|
|
23
|
+
STAY = R::Pointer::STAY
|
|
22
24
|
|
|
23
25
|
T = true
|
|
24
26
|
F = false
|
|
@@ -28,8 +30,7 @@ class TestPointer < Test::Unit::TestCase
|
|
|
28
30
|
position: 0, modifiers: 0, click_count: 0, drag: false,
|
|
29
31
|
time: 0)
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
id, types, action, position, modifiers, click_count, drag, time)
|
|
33
|
+
R::Pointer.new(id, types, action, position, modifiers, click_count, drag, time)
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
def test_initialize()
|
|
@@ -142,9 +143,9 @@ class TestPointer < Test::Unit::TestCase
|
|
|
142
143
|
end
|
|
143
144
|
|
|
144
145
|
def test_modifiers()
|
|
145
|
-
p = pointer modifiers:
|
|
146
|
-
assert_equal [:shift
|
|
147
|
-
assert_equal [:shift],
|
|
146
|
+
p = pointer modifiers: R::MOD_SHIFT | R::MOD_NUMPAD
|
|
147
|
+
assert_equal [:shift], p.modifiers
|
|
148
|
+
assert_equal [:shift, :numpad], p.modifiers(all: true)
|
|
148
149
|
end
|
|
149
150
|
|
|
150
151
|
def test_down()
|
|
@@ -156,8 +157,8 @@ class TestPointer < Test::Unit::TestCase
|
|
|
156
157
|
assert_equal pointer, pointer
|
|
157
158
|
|
|
158
159
|
assert_not_equal pointer, pointer(id: 1)
|
|
159
|
-
assert_not_equal pointer, pointer(types:
|
|
160
|
-
assert_not_equal pointer, pointer(action:
|
|
160
|
+
assert_not_equal pointer, pointer(types: R::Pointer::PEN)
|
|
161
|
+
assert_not_equal pointer, pointer(action: R::Pointer::UP)
|
|
161
162
|
assert_not_equal pointer, pointer(position: 2)
|
|
162
163
|
assert_not_equal pointer, pointer(modifiers: 3)
|
|
163
164
|
assert_not_equal pointer, pointer(click_count: 4)
|
|
@@ -165,4 +166,13 @@ class TestPointer < Test::Unit::TestCase
|
|
|
165
166
|
assert_not_equal pointer, pointer(time: 5)
|
|
166
167
|
end
|
|
167
168
|
|
|
169
|
+
def test_inspect()
|
|
170
|
+
assert_equal(
|
|
171
|
+
'#<Reflex::Pointer id:1 [:mouse, :mouse_left] :up (2.0, 3.0) mod:[:shift, :control] click:5 drag:true time:4.0>',
|
|
172
|
+
pointer(
|
|
173
|
+
id: 1, types: MOUSE | LEFT, action: UP, position: [2, 3], modifiers: 6,
|
|
174
|
+
click_count: 5, drag: true, time: 4
|
|
175
|
+
).inspect)
|
|
176
|
+
end
|
|
177
|
+
|
|
168
178
|
end# TestPointer
|
data/test/test_pointer_event.rb
CHANGED
|
@@ -3,16 +3,20 @@ require_relative 'helper'
|
|
|
3
3
|
|
|
4
4
|
class TestPointerEvent < Test::Unit::TestCase
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
TOUCH = Reflex::Pointer::TOUCH
|
|
8
|
-
PEN = Reflex::Pointer::PEN
|
|
6
|
+
R = Reflex
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
TYPE_NONE = R::Pointer::TYPE_NONE
|
|
9
|
+
MOUSE = R::Pointer::MOUSE
|
|
10
|
+
LEFT = R::Pointer::MOUSE_LEFT
|
|
11
|
+
TOUCH = R::Pointer::TOUCH
|
|
12
|
+
PEN = R::Pointer::PEN
|
|
13
|
+
|
|
14
|
+
ACTION_NONE = R::Pointer::ACTION_NONE
|
|
15
|
+
DOWN = R::Pointer::DOWN
|
|
16
|
+
UP = R::Pointer::UP
|
|
13
17
|
|
|
14
18
|
def event(*args, **kwargs)
|
|
15
|
-
|
|
19
|
+
R::PointerEvent.new(*args, **kwargs)
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def pointer(
|
|
@@ -20,8 +24,7 @@ class TestPointerEvent < Test::Unit::TestCase
|
|
|
20
24
|
position: 0, modifiers: 0, click_count: 0, drag: false,
|
|
21
25
|
time: 0)
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
id, type, action, position, modifiers, click_count, drag, time)
|
|
27
|
+
R::Pointer.new(id, type, action, position, modifiers, click_count, drag, time)
|
|
25
28
|
end
|
|
26
29
|
|
|
27
30
|
def test_initialize()
|
|
@@ -89,4 +92,16 @@ class TestPointerEvent < Test::Unit::TestCase
|
|
|
89
92
|
assert_nil e[-4]
|
|
90
93
|
end
|
|
91
94
|
|
|
95
|
+
def test_inspect()
|
|
96
|
+
assert_equal(
|
|
97
|
+
"#<Reflex::PointerEvent id:1 [:mouse, :mouse_left] :down (2.0, 3.0) mod:[:shift, :control] click:5 drag:true time:4.0>",
|
|
98
|
+
event(
|
|
99
|
+
pointer(
|
|
100
|
+
id: 1, type: MOUSE | LEFT, action: DOWN,
|
|
101
|
+
position: [2, 3], modifiers: 6, drag: true, click_count: 5,
|
|
102
|
+
time: 4),
|
|
103
|
+
pointer(id: 10, type: TOUCH, action: UP)
|
|
104
|
+
).inspect)
|
|
105
|
+
end
|
|
106
|
+
|
|
92
107
|
end# TestPointerEvent
|
data/test/test_reflex.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require_relative 'helper'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class TestReflex < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
R = Reflex
|
|
7
|
+
|
|
8
|
+
def test_all_keys_have_symbol()
|
|
9
|
+
R::KEYS.each do |key|
|
|
10
|
+
assert_not_nil R.get_key_symbol!(key), "no symbol for keycode 0x%X" % key
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_all_keys_are_on_this_platform()
|
|
15
|
+
R::KEYS.each do |key|
|
|
16
|
+
assert_operator key, :>=, 0, "keycode 0x%X is not on this platform" % key
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_unsided_modifiers_have_symbol()
|
|
21
|
+
omit 'no command or option key here' unless Xot.osx? || Xot.win32?
|
|
22
|
+
assert_equal :command, R.get_key_symbol!(R::KEY_COMMAND)
|
|
23
|
+
assert_equal :option, R.get_key_symbol!(R::KEY_OPTION)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_key_symbol_representative()
|
|
27
|
+
# Several keycodes share one symbol; the reverse lookup returns the
|
|
28
|
+
# first-defined keycode (KEY_SHIFT is listed before KEY_LSHIFT/KEY_RSHIFT).
|
|
29
|
+
assert_equal :shift, R.get_key_symbol!(R::KEY_SHIFT)
|
|
30
|
+
assert_equal :shift, R.get_key_symbol!(R::KEY_LSHIFT)
|
|
31
|
+
assert_equal :shift, R.get_key_symbol!(R::KEY_RSHIFT)
|
|
32
|
+
|
|
33
|
+
assert_equal R::KEY_SHIFT, R::KEYS.find {:shift == R.get_key_symbol!(_1)}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end# TestReflex
|
data/test/test_screen.rb
CHANGED
|
@@ -3,12 +3,34 @@ require_relative 'helper'
|
|
|
3
3
|
|
|
4
4
|
class TestScreen < Test::Unit::TestCase
|
|
5
5
|
|
|
6
|
+
include HasWindow
|
|
7
|
+
|
|
8
|
+
R = Reflex
|
|
9
|
+
S = R::Screen
|
|
10
|
+
|
|
6
11
|
def screen()
|
|
7
|
-
|
|
12
|
+
window.screen
|
|
8
13
|
end
|
|
9
14
|
|
|
10
15
|
def test_initialize()
|
|
11
|
-
assert_raise(
|
|
16
|
+
assert_raise(R::ReflexError) {S.new}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_name()
|
|
20
|
+
S.all.each {assert_kind_of String, _1.name}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_pixel_density()
|
|
24
|
+
S.all.each {assert_operator _1.pixel_density, :>=, 1}
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_all()
|
|
28
|
+
all = S.all
|
|
29
|
+
assert_true all.all? {_1.is_a? S}
|
|
30
|
+
|
|
31
|
+
omit 'no screen here' if all.empty?
|
|
32
|
+
|
|
33
|
+
assert_equal [0, 0], all.first.frame.position.to_a(2)
|
|
12
34
|
end
|
|
13
35
|
|
|
14
36
|
end# TestScreen
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
require_relative 'helper'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TestTextEvent < Test::Unit::TestCase
|
|
6
|
+
|
|
7
|
+
PREEDIT, COMMIT = Reflex::TextEvent::PREEDIT, Reflex::TextEvent::COMMIT
|
|
8
|
+
|
|
9
|
+
def event(*args)
|
|
10
|
+
Reflex::TextEvent.new(*args)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_initialize()
|
|
14
|
+
assert_equal :preedit, event(PREEDIT, 'あ', 1, 2).action
|
|
15
|
+
assert_equal 'あ', event(PREEDIT, 'あ', 1, 2).text
|
|
16
|
+
assert_equal 1...3, event(PREEDIT, 'あ', 1, 2).selection
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_dup()
|
|
20
|
+
assert_equal :preedit, event(PREEDIT, 'あ', 1, 2).dup.action
|
|
21
|
+
assert_equal 'あ', event(PREEDIT, 'あ', 1, 2).dup.text
|
|
22
|
+
assert_equal 1...3, event(PREEDIT, 'あ', 1, 2).dup.selection
|
|
23
|
+
|
|
24
|
+
e1 = event PREEDIT, 'あ', 1, 2
|
|
25
|
+
e2 = e1.dup
|
|
26
|
+
e1.block
|
|
27
|
+
e3 = e1.dup
|
|
28
|
+
assert_true e1.blocked?
|
|
29
|
+
assert_false e2.blocked?
|
|
30
|
+
assert_true e3.blocked?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_preedit_commit()
|
|
34
|
+
assert_true event(PREEDIT, 'あ', 1, 2).preedit?
|
|
35
|
+
assert_false event(PREEDIT, 'あ', 1, 2).commit?
|
|
36
|
+
assert_false event(COMMIT, 'あ', 1, 2).preedit?
|
|
37
|
+
assert_true event(COMMIT, 'あ', 1, 2).commit?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_text()
|
|
41
|
+
assert_equal '', event(PREEDIT, '', 1, 2).text
|
|
42
|
+
assert_equal '', event(PREEDIT, nil, 1, 2).text
|
|
43
|
+
assert_equal Encoding::UTF_8, event(PREEDIT, 'あいう', 1, 2).text.encoding
|
|
44
|
+
assert_equal 3, event(PREEDIT, 'あい😁', 1, 2).text.size
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_selection()
|
|
48
|
+
assert_nil event(PREEDIT, 'あいうえ', -1, 0).selection
|
|
49
|
+
assert_equal 0...0, event(PREEDIT, 'あいうえ', 0, 0).selection
|
|
50
|
+
assert_equal 1...1, event(PREEDIT, 'あいうえ', 1, 0).selection
|
|
51
|
+
assert_equal 'いう', 'あいうえ'[event(PREEDIT, 'あいうえ', 1, 2).selection]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end# TestTextEvent
|
data/test/test_view.rb
CHANGED
|
@@ -3,14 +3,12 @@ require_relative 'helper'
|
|
|
3
3
|
|
|
4
4
|
class TestView < Test::Unit::TestCase
|
|
5
5
|
|
|
6
|
+
include HasWindow
|
|
7
|
+
|
|
6
8
|
def view(*a, **k, &b)
|
|
7
9
|
Reflex::View.new(*a, **k, &b)
|
|
8
10
|
end
|
|
9
11
|
|
|
10
|
-
def window(*a, **k, &b)
|
|
11
|
-
Reflex::Window.new(*a, **k, &b)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
12
|
def style(*a, **k, &b)
|
|
15
13
|
Reflex::Style.new(*a, **k, &b)
|
|
16
14
|
end
|
|
@@ -486,6 +484,45 @@ class TestView < Test::Unit::TestCase
|
|
|
486
484
|
v.capture += []; assert_equal [], v.capture
|
|
487
485
|
end
|
|
488
486
|
|
|
487
|
+
def test_accepts_text_input()
|
|
488
|
+
assert_false view .accepts_text_input?
|
|
489
|
+
assert_true view.tap {_1.text_input = true} .accepts_text_input?
|
|
490
|
+
assert_true view.tap {_1.text_input = true; _1.on(:text) {}}.accepts_text_input?
|
|
491
|
+
assert_false view.tap {_1.text_input = false} .accepts_text_input?
|
|
492
|
+
assert_false view.tap {_1.text_input = false; _1.on(:text) {}}.accepts_text_input?
|
|
493
|
+
assert_false view.tap {_1.text_input = nil} .accepts_text_input?
|
|
494
|
+
assert_true view.tap {_1.text_input = nil; _1.on(:text) {}}.accepts_text_input?
|
|
495
|
+
|
|
496
|
+
new_class = -> hook = nil {
|
|
497
|
+
Class.new(Reflex::View) {define_method(hook) {|*|} if hook}
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
assert_true new_class.call(:on_text).new .accepts_text_input?
|
|
501
|
+
assert_false new_class.call(:on_text).new.hide .accepts_text_input?
|
|
502
|
+
assert_true new_class.call(:on_text).new.hide.show.accepts_text_input?
|
|
503
|
+
|
|
504
|
+
%w[on_text on_text_preedit on_text_commit].each do |hook|
|
|
505
|
+
on_less = hook.sub 'on_', ''
|
|
506
|
+
assert_true new_class.call(hook).new .accepts_text_input?, hook
|
|
507
|
+
assert_true view.tap {_1.on(on_less) {|*|}}.accepts_text_input?, hook
|
|
508
|
+
assert_true view.tap {_1.before(hook) {|*|}}.accepts_text_input?, hook
|
|
509
|
+
assert_true view.tap {_1.after(hook) {|*|}}.accepts_text_input?, hook
|
|
510
|
+
end
|
|
511
|
+
end
|
|
512
|
+
|
|
513
|
+
def test_text_input()
|
|
514
|
+
v = view; assert_nil v.text_input
|
|
515
|
+
v.text_input = true; assert_true v.text_input
|
|
516
|
+
v.text_input = false; assert_false v.text_input
|
|
517
|
+
v.text_input = nil; assert_nil v.text_input
|
|
518
|
+
end
|
|
519
|
+
|
|
520
|
+
def test_text_input_bounds()
|
|
521
|
+
v = view
|
|
522
|
+
v.frame = [10, 20, 30, 40]
|
|
523
|
+
assert_equal Reflex::Bounds.new(0, 0, 30, 40), v.text_input_bounds
|
|
524
|
+
end
|
|
525
|
+
|
|
489
526
|
def test_capturing()
|
|
490
527
|
v, w = view, window
|
|
491
528
|
w.add v
|
data/test/test_wheel_event.rb
CHANGED
|
@@ -3,8 +3,10 @@ require_relative 'helper'
|
|
|
3
3
|
|
|
4
4
|
class TestWheelEvent < Test::Unit::TestCase
|
|
5
5
|
|
|
6
|
+
R = Reflex
|
|
7
|
+
|
|
6
8
|
def event(*args)
|
|
7
|
-
|
|
9
|
+
R::WheelEvent.new(*args)
|
|
8
10
|
end
|
|
9
11
|
|
|
10
12
|
def point(*args)
|
|
@@ -19,7 +21,7 @@ class TestWheelEvent < Test::Unit::TestCase
|
|
|
19
21
|
assert_equal 4, e.dx
|
|
20
22
|
assert_equal 5, e.dy
|
|
21
23
|
assert_equal 6, e.dz
|
|
22
|
-
assert_equal [:
|
|
24
|
+
assert_equal [:shift, :control, :alt], e.modifiers
|
|
23
25
|
assert_equal point(1, 2, 3), e. position
|
|
24
26
|
assert_equal point(4, 5, 6), e.dposition
|
|
25
27
|
end
|
|
@@ -35,9 +37,15 @@ class TestWheelEvent < Test::Unit::TestCase
|
|
|
35
37
|
end
|
|
36
38
|
|
|
37
39
|
def test_modifiers()
|
|
38
|
-
e = event 0, 0, 0, 0, 0, 0,
|
|
39
|
-
assert_equal [:control
|
|
40
|
-
assert_equal [:control],
|
|
40
|
+
e = event 0, 0, 0, 0, 0, 0, R::MOD_CONTROL | R::MOD_SCROLL
|
|
41
|
+
assert_equal [:control], e.modifiers
|
|
42
|
+
assert_equal [:control, :scroll], e.modifiers(all: true)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_inspect()
|
|
46
|
+
assert_equal(
|
|
47
|
+
"#<Reflex::WheelEvent x:1.0 y:2.0 z:3.0 dx:4.0 dy:5.0 dz:6.79 mod:[:control, :scroll]>",
|
|
48
|
+
event(1, 2, 3, 4, 5, 6.789, R::MOD_CONTROL | R::MOD_SCROLL).inspect)
|
|
41
49
|
end
|
|
42
50
|
|
|
43
51
|
end# TestWheelEvent
|