reflexion 0.5.3 → 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 +56 -7
- data/.doc/ext/reflex/capture_event.cpp +1 -1
- data/.doc/ext/reflex/chase_constraint.cpp +84 -0
- data/.doc/ext/reflex/clipboard.cpp +65 -0
- data/.doc/ext/reflex/color_event.cpp +76 -0
- data/.doc/ext/reflex/color_picker.cpp +113 -0
- data/.doc/ext/reflex/constraint.cpp +135 -0
- 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 +178 -0
- data/.doc/ext/reflex/menu.cpp +303 -0
- 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 +40 -10
- data/.doc/ext/reflex/note_event.cpp +1 -1
- data/.doc/ext/reflex/pin.cpp +156 -0
- data/.doc/ext/reflex/pointer.cpp +3 -1
- data/.doc/ext/reflex/pointer_event.cpp +3 -3
- data/.doc/ext/reflex/polygon_shape.cpp +1 -1
- data/.doc/ext/reflex/rect_shape.cpp +1 -1
- data/.doc/ext/reflex/reflex.cpp +606 -237
- data/.doc/ext/reflex/screen.cpp +27 -1
- data/.doc/ext/reflex/scroll_event.cpp +1 -1
- data/.doc/ext/reflex/selector.cpp +5 -5
- data/.doc/ext/reflex/shape.cpp +1 -1
- data/.doc/ext/reflex/snap_constraint.cpp +125 -0
- data/.doc/ext/reflex/style.cpp +1 -1
- data/.doc/ext/reflex/style_length.cpp +4 -3
- 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 +206 -79
- data/.doc/ext/reflex/wheel_constraint.cpp +142 -0
- data/.doc/ext/reflex/wheel_event.cpp +1 -1
- data/.doc/ext/reflex/window.cpp +282 -31
- data/.github/workflows/release-gem.yml +2 -40
- data/.github/workflows/tag.yml +5 -28
- data/.github/workflows/test.yml +1 -28
- data/ChangeLog.md +79 -0
- data/Gemfile.lock +13 -8
- data/README.md +1 -0
- data/Rakefile +13 -2
- data/Reflex.podspec +2 -2
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +62 -7
- data/ext/reflex/capture_event.cpp +1 -1
- data/ext/reflex/chase_constraint.cpp +89 -0
- data/ext/reflex/clipboard.cpp +69 -0
- data/ext/reflex/color_event.cpp +80 -0
- data/ext/reflex/color_picker.cpp +121 -0
- data/ext/reflex/constraint.cpp +146 -0
- 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 +194 -0
- data/ext/reflex/menu.cpp +331 -0
- 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 +40 -10
- data/ext/reflex/note_event.cpp +1 -1
- data/ext/reflex/pin.cpp +165 -0
- data/ext/reflex/pointer.cpp +3 -1
- data/ext/reflex/pointer_event.cpp +3 -3
- data/ext/reflex/polygon_shape.cpp +1 -1
- data/ext/reflex/rect_shape.cpp +1 -1
- data/ext/reflex/reflex.cpp +608 -237
- data/ext/reflex/screen.cpp +31 -2
- data/ext/reflex/scroll_event.cpp +1 -1
- data/ext/reflex/selector.cpp +5 -5
- data/ext/reflex/selector.h +10 -10
- data/ext/reflex/shape.cpp +1 -1
- data/ext/reflex/snap_constraint.cpp +135 -0
- data/ext/reflex/style.cpp +1 -1
- data/ext/reflex/style_length.cpp +4 -3
- 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 +236 -96
- data/ext/reflex/wheel_constraint.cpp +154 -0
- data/ext/reflex/wheel_event.cpp +1 -1
- data/ext/reflex/window.cpp +318 -40
- data/include/reflex/application.h +19 -0
- data/include/reflex/clipboard.h +53 -0
- data/include/reflex/color_picker.h +65 -0
- data/include/reflex/constraint.h +275 -0
- data/include/reflex/defs.h +204 -195
- data/include/reflex/event.h +180 -88
- data/include/reflex/file_dialog.h +73 -0
- data/include/reflex/gamepad.h +3 -0
- data/include/reflex/menu.h +120 -0
- data/include/reflex/midi.h +3 -0
- data/include/reflex/pin.h +68 -0
- data/include/reflex/pointer.h +4 -0
- data/include/reflex/reflex.h +2 -0
- data/include/reflex/ruby/application.h +6 -1
- data/include/reflex/ruby/clipboard.h +23 -0
- data/include/reflex/ruby/color_picker.h +89 -0
- data/include/reflex/ruby/constraint.h +94 -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/menu.h +103 -0
- data/include/reflex/ruby/pin.h +40 -0
- data/include/reflex/ruby/reflex.h +3 -0
- data/include/reflex/ruby/view.h +123 -39
- data/include/reflex/ruby/window.h +96 -19
- data/include/reflex/ruby.h +3 -0
- data/include/reflex/screen.h +11 -2
- data/include/reflex/view.h +66 -27
- data/include/reflex/window.h +57 -12
- data/include/reflex.h +8 -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/chase_constraint.rb +15 -0
- data/lib/reflex/clipboard.rb +19 -0
- data/lib/reflex/color_event.rb +16 -0
- data/lib/reflex/color_picker.rb +45 -0
- data/lib/reflex/constraint.rb +29 -0
- data/lib/reflex/control_change_event.rb +17 -0
- data/lib/reflex/extension.rb +1 -1
- data/lib/reflex/file_dialog.rb +70 -0
- data/lib/reflex/file_event.rb +37 -0
- data/lib/reflex/helper.rb +79 -0
- data/lib/reflex/key_event.rb +14 -14
- data/lib/reflex/link_constraint.rb +31 -0
- data/lib/reflex/menu.rb +92 -0
- data/lib/reflex/model.rb +19 -19
- data/lib/reflex/note_event.rb +1 -1
- data/lib/reflex/pin.rb +39 -0
- data/lib/reflex/pointer.rb +30 -1
- data/lib/reflex/pointer_event.rb +13 -2
- data/lib/reflex/reflex.rb +5 -0
- data/lib/reflex/shape.rb +14 -14
- data/lib/reflex/snap_constraint.rb +28 -0
- 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 +85 -18
- data/lib/reflex/wheel_constraint.rb +28 -0
- data/lib/reflex/wheel_event.rb +19 -1
- data/lib/reflex/window.rb +25 -13
- data/lib/reflex.rb +23 -8
- data/pod.rake +1 -1
- data/reflex.gemspec +4 -4
- data/samples/constraint.rb +152 -0
- data/samples/ime.rb +100 -0
- data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
- data/samples/menu.rb +32 -0
- 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 +180 -20
- data/src/application.h +95 -5
- data/src/clipboard.cpp +81 -0
- data/src/color_picker.cpp +113 -0
- data/src/color_picker.h +36 -0
- data/src/constraint.cpp +1662 -0
- data/src/constraint.h +64 -0
- data/src/event.cpp +416 -252
- data/src/event.h +13 -2
- 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 +29 -0
- data/src/ios/clipboard.mm +44 -0
- data/src/ios/color_picker.mm +19 -0
- data/src/ios/event.h +6 -2
- data/src/ios/event.mm +31 -12
- data/src/ios/file_dialog.mm +21 -0
- data/src/ios/gamepad.mm +4 -4
- data/src/ios/menu.mm +41 -0
- data/src/ios/reflex.mm +8 -0
- data/src/ios/screen.mm +26 -0
- data/src/ios/view_controller.mm +47 -42
- data/src/ios/window.mm +44 -9
- data/src/menu.cpp +387 -0
- data/src/menu.h +81 -0
- data/src/midi.cpp +61 -31
- data/src/osx/app_delegate.h +4 -0
- data/src/osx/app_delegate.mm +168 -139
- data/src/osx/application.mm +103 -5
- data/src/osx/clipboard.mm +45 -0
- data/src/osx/color_picker.mm +112 -0
- data/src/osx/event.h +10 -0
- data/src/osx/event.mm +114 -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.h +25 -0
- data/src/osx/menu.mm +516 -0
- data/src/osx/native_window.h +16 -2
- data/src/osx/native_window.mm +141 -57
- data/src/osx/opengl_view.h +2 -1
- data/src/osx/opengl_view.mm +229 -37
- data/src/osx/reflex.mm +38 -0
- data/src/osx/screen.mm +36 -0
- data/src/osx/window.mm +117 -24
- data/src/pin.cpp +137 -0
- data/src/pointer.cpp +36 -16
- data/src/pointer.h +10 -0
- data/src/rays.h +46 -0
- data/src/sdl/application.cpp +73 -8
- data/src/sdl/clipboard.cpp +39 -0
- data/src/sdl/color_picker.cpp +18 -0
- data/src/sdl/event.cpp +44 -6
- data/src/sdl/event.h +18 -3
- data/src/sdl/file_dialog.cpp +20 -0
- data/src/sdl/gamepad.cpp +3 -7
- data/src/sdl/menu.cpp +40 -0
- data/src/sdl/reflex.cpp +20 -0
- data/src/sdl/screen.cpp +36 -0
- data/src/sdl/window.cpp +168 -37
- data/src/shape.cpp +15 -10
- data/src/view.cpp +583 -233
- data/src/view.h +22 -4
- data/src/vk.h +416 -0
- data/src/win32/application.cpp +167 -12
- data/src/win32/application.h +20 -0
- data/src/win32/clipboard.cpp +210 -0
- data/src/win32/color_picker.cpp +82 -0
- data/src/win32/event.cpp +123 -11
- data/src/win32/event.h +22 -3
- data/src/win32/file_dialog.cpp +226 -0
- data/src/win32/gamepad.cpp +9 -2
- data/src/win32/menu.cpp +490 -0
- data/src/win32/menu.h +35 -0
- 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 +858 -135
- data/src/win32/window.h +9 -0
- data/src/window.cpp +929 -183
- data/src/window.h +77 -33
- data/src/world.cpp +86 -15
- data/src/world.h +9 -2
- data/test/helper.rb +24 -0
- data/test/test_application.rb +101 -1
- data/test/test_chase_constraint.rb +122 -0
- data/test/test_clipboard.rb +54 -0
- data/test/test_color_event.rb +36 -0
- data/test/test_color_picker.rb +62 -0
- data/test/test_constraint.rb +184 -0
- 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 +23 -2
- data/test/test_link_constraint.rb +237 -0
- data/test/test_menu.rb +237 -0
- data/test/test_pin.rb +65 -0
- data/test/test_pointer.rb +50 -26
- data/test/test_pointer_event.rb +25 -10
- data/test/test_reflex.rb +36 -0
- data/test/test_screen.rb +24 -2
- data/test/test_snap_constraint.rb +140 -0
- data/test/test_text_event.rb +54 -0
- data/test/test_view.rb +152 -25
- data/test/test_wheel_constraint.rb +125 -0
- data/test/test_wheel_event.rb +24 -10
- data/test/test_window.rb +205 -43
- metadata +154 -10
- data/.github/workflows/utils.rb +0 -127
data/include/reflex/window.h
CHANGED
|
@@ -18,6 +18,7 @@ namespace Reflex
|
|
|
18
18
|
{
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
class Menu;
|
|
21
22
|
class View;
|
|
22
23
|
|
|
23
24
|
|
|
@@ -33,19 +34,35 @@ namespace Reflex
|
|
|
33
34
|
enum Flag
|
|
34
35
|
{
|
|
35
36
|
|
|
36
|
-
FLAG_CLOSABLE
|
|
37
|
+
FLAG_CLOSABLE = Xot::bit(0),
|
|
37
38
|
|
|
38
|
-
FLAG_MINIMIZABLE
|
|
39
|
+
FLAG_MINIMIZABLE = Xot::bit(1),
|
|
39
40
|
|
|
40
|
-
FLAG_RESIZABLE
|
|
41
|
+
FLAG_RESIZABLE = Xot::bit(2),
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
FLAG_TITLEBAR_BUTTONS = Xot::bit(3),
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
FLAG_TITLEBAR_BACKGROUND = Xot::bit(4),
|
|
45
46
|
|
|
46
|
-
|
|
47
|
+
FLAG_UNLISTED = Xot::bit(5),
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
FLAG_SHADOW = Xot::bit(6),
|
|
50
|
+
|
|
51
|
+
FLAG_TRANSPARENT = Xot::bit(7),
|
|
52
|
+
|
|
53
|
+
FLAG_FULLSCREEN = Xot::bit(8),
|
|
54
|
+
|
|
55
|
+
FLAG_ALWAYS_ON_TOP = Xot::bit(9),
|
|
56
|
+
|
|
57
|
+
FLAG_ALWAYS_ON_BOTTOM = Xot::bit(10),
|
|
58
|
+
|
|
59
|
+
FLAG_POINTER_THROUGH = Xot::bit(11),
|
|
60
|
+
|
|
61
|
+
FLAG_PORTRAIT = Xot::bit(12),
|
|
62
|
+
|
|
63
|
+
FLAG_LANDSCAPE = Xot::bit(13),
|
|
64
|
+
|
|
65
|
+
FLAG_LAST = FLAG_LANDSCAPE
|
|
49
66
|
|
|
50
67
|
};// Flag
|
|
51
68
|
|
|
@@ -65,6 +82,8 @@ namespace Reflex
|
|
|
65
82
|
|
|
66
83
|
virtual Point to_screen (const Point& point) const;
|
|
67
84
|
|
|
85
|
+
virtual bool active () const;
|
|
86
|
+
|
|
68
87
|
virtual void set_title (const char* title);
|
|
69
88
|
|
|
70
89
|
virtual const char* title () const;
|
|
@@ -75,7 +94,17 @@ namespace Reflex
|
|
|
75
94
|
|
|
76
95
|
virtual Bounds frame () const;
|
|
77
96
|
|
|
78
|
-
virtual void
|
|
97
|
+
virtual void set_menu (Menu* menu);
|
|
98
|
+
|
|
99
|
+
virtual Menu* menu ();
|
|
100
|
+
|
|
101
|
+
virtual const Menu* menu () const;
|
|
102
|
+
|
|
103
|
+
virtual void set_pointer_through_alpha (float alpha);
|
|
104
|
+
|
|
105
|
+
virtual float pointer_through_alpha () const;
|
|
106
|
+
|
|
107
|
+
virtual void set_flags (uint flags);
|
|
79
108
|
|
|
80
109
|
virtual uint flags () const;
|
|
81
110
|
|
|
@@ -99,16 +128,16 @@ namespace Reflex
|
|
|
99
128
|
|
|
100
129
|
virtual const Painter* painter () const;
|
|
101
130
|
|
|
102
|
-
virtual void on_activate (Event* e);
|
|
103
|
-
|
|
104
|
-
virtual void on_deactivate (Event* e);
|
|
105
|
-
|
|
106
131
|
virtual void on_show (Event* e);
|
|
107
132
|
|
|
108
133
|
virtual void on_hide (Event* e);
|
|
109
134
|
|
|
110
135
|
virtual void on_close (Event* e);
|
|
111
136
|
|
|
137
|
+
virtual void on_activate (Event* e);
|
|
138
|
+
|
|
139
|
+
virtual void on_deactivate (Event* e);
|
|
140
|
+
|
|
112
141
|
virtual void on_update (UpdateEvent* e);
|
|
113
142
|
|
|
114
143
|
virtual void on_draw (DrawEvent* e);
|
|
@@ -123,6 +152,12 @@ namespace Reflex
|
|
|
123
152
|
|
|
124
153
|
virtual void on_key_up (KeyEvent* e);
|
|
125
154
|
|
|
155
|
+
virtual void on_text (TextEvent* e);
|
|
156
|
+
|
|
157
|
+
virtual void on_text_preedit (TextEvent* e);
|
|
158
|
+
|
|
159
|
+
virtual void on_text_commit (TextEvent* e);
|
|
160
|
+
|
|
126
161
|
virtual void on_pointer (PointerEvent* e);
|
|
127
162
|
|
|
128
163
|
virtual void on_pointer_down (PointerEvent* e);
|
|
@@ -133,8 +168,18 @@ namespace Reflex
|
|
|
133
168
|
|
|
134
169
|
virtual void on_pointer_cancel (PointerEvent* e);
|
|
135
170
|
|
|
171
|
+
virtual void on_pointer_enter (PointerEvent* e);
|
|
172
|
+
|
|
173
|
+
virtual void on_pointer_leave (PointerEvent* e);
|
|
174
|
+
|
|
136
175
|
virtual void on_wheel (WheelEvent* e);
|
|
137
176
|
|
|
177
|
+
virtual void on_file (FileEvent* e);
|
|
178
|
+
|
|
179
|
+
virtual void on_file_open (FileEvent* e);
|
|
180
|
+
|
|
181
|
+
virtual void on_file_save (FileEvent* e);
|
|
182
|
+
|
|
138
183
|
virtual void on_midi (MIDIEvent* e);
|
|
139
184
|
|
|
140
185
|
virtual void on_note (NoteEvent* e);
|
data/include/reflex.h
CHANGED
|
@@ -15,14 +15,22 @@
|
|
|
15
15
|
#include <reflex/style.h>
|
|
16
16
|
#include <reflex/timer.h>
|
|
17
17
|
#include <reflex/shape.h>
|
|
18
|
+
#include <reflex/pin.h>
|
|
19
|
+
#include <reflex/constraint.h>
|
|
18
20
|
#include <reflex/filter.h>
|
|
19
21
|
|
|
20
22
|
#include <reflex/application.h>
|
|
21
23
|
#include <reflex/window.h>
|
|
22
24
|
#include <reflex/view.h>
|
|
25
|
+
#include <reflex/menu.h>
|
|
23
26
|
#include <reflex/screen.h>
|
|
27
|
+
#include <reflex/clipboard.h>
|
|
28
|
+
#include <reflex/file_dialog.h>
|
|
29
|
+
#include <reflex/color_picker.h>
|
|
24
30
|
|
|
25
31
|
#include <reflex/device.h>
|
|
32
|
+
#include <reflex/midi.h>
|
|
33
|
+
#include <reflex/gamepad.h>
|
|
26
34
|
|
|
27
35
|
#include <reflex/image_view.h>
|
|
28
36
|
|
data/lib/reflex/application.rb
CHANGED
|
@@ -33,11 +33,11 @@ module Reflex
|
|
|
33
33
|
|
|
34
34
|
private
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
def call_start_block()
|
|
37
|
+
return unless @start_block
|
|
38
|
+
Xot::BlockUtil.instance_eval_or_block_call self, &@start_block
|
|
39
|
+
@start_block = nil
|
|
40
|
+
end
|
|
41
41
|
|
|
42
42
|
end# Application
|
|
43
43
|
|
data/lib/reflex/autoinit.rb
CHANGED
data/lib/reflex/button.rb
CHANGED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'xot/setter'
|
|
2
|
+
require 'xot/hookable'
|
|
3
|
+
require 'xot/block_util'
|
|
4
|
+
require 'xot/universal_accessor'
|
|
5
|
+
require 'xot/inspectable'
|
|
6
|
+
require 'reflex/ext'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
module Reflex
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ColorPicker
|
|
13
|
+
|
|
14
|
+
include Xot::Setter
|
|
15
|
+
include Xot::Hookable
|
|
16
|
+
include Xot::Inspectable
|
|
17
|
+
|
|
18
|
+
def initialize(options = nil, &block)
|
|
19
|
+
super()
|
|
20
|
+
set options if options
|
|
21
|
+
Xot::BlockUtil.instance_eval_or_block_call self, &block if block
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
universal_accessor :owner, alpha: {reader: :alpha?}
|
|
25
|
+
|
|
26
|
+
def pick_color(initial = nil, &block)
|
|
27
|
+
@color_block = block ? -> e {block.call e.color, e} : nil
|
|
28
|
+
pick_color! initial
|
|
29
|
+
self
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
def call_color_block(e)
|
|
35
|
+
@color_block&.call e
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def clear_color_block()
|
|
39
|
+
@color_block = nil
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end# ColorPicker
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
end# Reflex
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'xot/setter'
|
|
2
|
+
require 'xot/universal_accessor'
|
|
3
|
+
require 'reflex/ext'
|
|
4
|
+
require 'reflex/helper'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
module Reflex
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Constraint
|
|
11
|
+
|
|
12
|
+
include Xot::Setter
|
|
13
|
+
include HasTags
|
|
14
|
+
|
|
15
|
+
def pins()
|
|
16
|
+
[get_pin(0), get_pin(1)]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def views()
|
|
20
|
+
pins.map(&:view)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
universal_accessor :name, :selector,
|
|
24
|
+
:spring, :damping, collide: {reader: :collide?}
|
|
25
|
+
|
|
26
|
+
end# Constraint
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
end# Reflex
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'reflex/ext'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Reflex
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ControlChangeEvent < Event
|
|
8
|
+
|
|
9
|
+
def inspect()
|
|
10
|
+
"#<Reflex::ControlChangeEvent channel:%d controller:%d value:%f time:%f captured?:%s>" %
|
|
11
|
+
[channel, controller, value, time, captured?]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end# ControlChangeEvent
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
end# Reflex
|
data/lib/reflex/extension.rb
CHANGED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require 'xot/setter'
|
|
2
|
+
require 'xot/hookable'
|
|
3
|
+
require 'xot/block_util'
|
|
4
|
+
require 'xot/universal_accessor'
|
|
5
|
+
require 'xot/inspectable'
|
|
6
|
+
require 'reflex/ext'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
module Reflex
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class FileDialog
|
|
13
|
+
|
|
14
|
+
include Xot::Setter
|
|
15
|
+
include Xot::Hookable
|
|
16
|
+
include Xot::Inspectable
|
|
17
|
+
|
|
18
|
+
def initialize(options = nil, &block)
|
|
19
|
+
super()
|
|
20
|
+
set options if options
|
|
21
|
+
Xot::BlockUtil.instance_eval_or_block_call self, &block if block
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
universal_accessor :owner, :title, :extensions
|
|
25
|
+
|
|
26
|
+
def open_file(dir = nil, &block)
|
|
27
|
+
@file_block = block ? -> e {block.call e.paths.first, e} : nil
|
|
28
|
+
open_file! expand(dir)
|
|
29
|
+
self
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def open_files(dir = nil, &block)
|
|
33
|
+
@file_block = block ? -> e {block.call e.paths, e} : nil
|
|
34
|
+
open_files! expand(dir)
|
|
35
|
+
self
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def open_directory(dir = nil, &block)
|
|
39
|
+
@file_block = block ? -> e {block.call e.paths.first, e} : nil
|
|
40
|
+
open_directory! expand(dir)
|
|
41
|
+
self
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def save_file(dir = nil, name: nil, &block)
|
|
45
|
+
@file_block = block ? -> e {block.call e.paths.first, e} : nil
|
|
46
|
+
save_file! expand(dir), name
|
|
47
|
+
self
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
alias open_dir open_directory
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def expand(dir)
|
|
55
|
+
dir ? File.expand_path(dir.to_s) : nil
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def call_file_block(e)
|
|
59
|
+
block, @file_block = @file_block, nil
|
|
60
|
+
block&.call e
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def call_cancel_block()
|
|
64
|
+
@file_block = nil
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end# FileDialog
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
end# Reflex
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'xot/const_symbol_accessor'
|
|
2
|
+
require 'reflex/ext'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
module Reflex
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class FileEvent < Event
|
|
9
|
+
|
|
10
|
+
alias get_action action
|
|
11
|
+
|
|
12
|
+
const_symbol_reader :action, **{
|
|
13
|
+
none: ACTION_NONE,
|
|
14
|
+
open: FileEvent::OPEN,
|
|
15
|
+
save: FileEvent::SAVE
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
def path()
|
|
19
|
+
paths.first
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def open?()
|
|
23
|
+
get_action == FileEvent::OPEN
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def save?()
|
|
27
|
+
get_action == FileEvent::SAVE
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def inspect()
|
|
31
|
+
"#<Reflex::FileEvent #{action} paths:#{paths}>"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end# FileEvent
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
end# Reflex
|
data/lib/reflex/helper.rb
CHANGED
|
@@ -1,11 +1,37 @@
|
|
|
1
1
|
require 'xot/universal_accessor'
|
|
2
|
+
require 'reflex/ext'
|
|
2
3
|
require 'reflex/point'
|
|
3
4
|
require 'reflex/bounds'
|
|
5
|
+
require 'reflex/text_event'
|
|
4
6
|
|
|
5
7
|
|
|
6
8
|
module Reflex
|
|
7
9
|
|
|
8
10
|
|
|
11
|
+
MODIFIER_SYMBOLS = {
|
|
12
|
+
shift: MOD_SHIFT,
|
|
13
|
+
control: MOD_CONTROL,
|
|
14
|
+
alt: MOD_ALT,
|
|
15
|
+
win: MOD_WIN,
|
|
16
|
+
option: MOD_OPTION,
|
|
17
|
+
command: MOD_COMMAND,
|
|
18
|
+
help: MOD_HELP,
|
|
19
|
+
function: MOD_FUNCTION,
|
|
20
|
+
numpad: MOD_NUMPAD,
|
|
21
|
+
caps: MOD_CAPS,
|
|
22
|
+
scroll: MOD_SCROLL
|
|
23
|
+
}.freeze
|
|
24
|
+
|
|
25
|
+
SHORTCUT_MODIFIER_SYMBOLS = MODIFIER_SYMBOLS.slice(
|
|
26
|
+
:shift,
|
|
27
|
+
:control,
|
|
28
|
+
:alt,
|
|
29
|
+
:win,
|
|
30
|
+
:option,
|
|
31
|
+
:command
|
|
32
|
+
).freeze
|
|
33
|
+
|
|
34
|
+
|
|
9
35
|
module HasFrame
|
|
10
36
|
|
|
11
37
|
def move_to(*args)
|
|
@@ -84,4 +110,57 @@ module Reflex
|
|
|
84
110
|
end# HasTags
|
|
85
111
|
|
|
86
112
|
|
|
113
|
+
# keeps the text being composed by the input method. defining the hooks
|
|
114
|
+
# below is also what lets the view accept text input.
|
|
115
|
+
module HasTextPreedit
|
|
116
|
+
|
|
117
|
+
def preedit()
|
|
118
|
+
@preedit ||= ''
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def preedit_selection()
|
|
122
|
+
@preedit_selection
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def preedit?()
|
|
126
|
+
!preedit.empty?
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def on_text_preedit(e)
|
|
130
|
+
@preedit, @preedit_selection = e.text, e.selection
|
|
131
|
+
redraw
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def on_text_commit(e)
|
|
135
|
+
return unless preedit?
|
|
136
|
+
|
|
137
|
+
@preedit, @preedit_selection = '', nil
|
|
138
|
+
redraw
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# draws the composing text underlined, with a double underline under the
|
|
142
|
+
# clause being converted, in the painter's current font and fill color.
|
|
143
|
+
def draw_preedit(painter, x, y, height: nil)
|
|
144
|
+
return unless preedit?
|
|
145
|
+
|
|
146
|
+
font = painter.font
|
|
147
|
+
height ||= font.height
|
|
148
|
+
width = font.width preedit
|
|
149
|
+
uy = y + height - 1
|
|
150
|
+
|
|
151
|
+
painter.push stroke: painter.fill do |p|
|
|
152
|
+
p.text preedit, x, y
|
|
153
|
+
p.line x, uy, x + width, uy
|
|
154
|
+
|
|
155
|
+
if preedit_selection
|
|
156
|
+
sx = x + font.width(preedit[0...preedit_selection.begin] || '')
|
|
157
|
+
sw = font.width(preedit[preedit_selection] || '')
|
|
158
|
+
p.line sx, uy - 2, sx + sw, uy - 2
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
end# HasTextPreedit
|
|
164
|
+
|
|
165
|
+
|
|
87
166
|
end# Reflex
|
data/lib/reflex/key_event.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'xot/bit_flag_accessor'
|
|
2
2
|
require 'xot/const_symbol_accessor'
|
|
3
3
|
require 'reflex/ext'
|
|
4
|
+
require 'reflex/helper'
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
module Reflex
|
|
@@ -16,18 +17,16 @@ module Reflex
|
|
|
16
17
|
up: UP
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
bit_flag_reader :modifiers, **
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
caps: MOD_CAPS,
|
|
30
|
-
}
|
|
20
|
+
bit_flag_reader :modifiers, **MODIFIER_SYMBOLS
|
|
21
|
+
private alias_method :get_modifiers!, :modifiers
|
|
22
|
+
|
|
23
|
+
def modifiers(all: false)
|
|
24
|
+
all ? get_modifiers! : (get_modifiers!.select {SHORTCUT_MODIFIER_SYMBOLS.key? _1})
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def key()
|
|
28
|
+
Reflex.get_key_symbol! code
|
|
29
|
+
end
|
|
31
30
|
|
|
32
31
|
def down?()
|
|
33
32
|
get_action == DOWN
|
|
@@ -42,12 +41,13 @@ module Reflex
|
|
|
42
41
|
end
|
|
43
42
|
|
|
44
43
|
def inspect()
|
|
45
|
-
"#<Reflex::KeyEvent
|
|
44
|
+
"#<Reflex::KeyEvent %p chars:%s key:%s code:0x%X mod:%p repeat:%d captured?:%p>" %
|
|
45
|
+
[
|
|
46
46
|
action,
|
|
47
47
|
chars ? "'#{chars}'" : :nil,
|
|
48
48
|
key ? key : :nil,
|
|
49
49
|
code,
|
|
50
|
-
modifiers
|
|
50
|
+
modifiers(all: true),
|
|
51
51
|
repeat,
|
|
52
52
|
captured?
|
|
53
53
|
]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'reflex/ext'
|
|
2
|
+
require 'reflex/constraint'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
module Reflex
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class LinkConstraint < Constraint
|
|
9
|
+
|
|
10
|
+
def range=(range)
|
|
11
|
+
case range
|
|
12
|
+
when nil then clear_range!
|
|
13
|
+
when Range then set_range! range.begin, range.end
|
|
14
|
+
when Numeric then set_range! range, range
|
|
15
|
+
else raise ArgumentError, "invalid range: #{range.inspect}"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def range()
|
|
20
|
+
has_range! ? Range.new(range_min!, range_max!) : nil
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
universal_accessor :axis, :distance, :range, :motor, :force
|
|
24
|
+
|
|
25
|
+
alias dist= distance=
|
|
26
|
+
alias dist distance
|
|
27
|
+
|
|
28
|
+
end# LinkConstraint
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
end# Reflex
|