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.
Files changed (309) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +56 -7
  3. data/.doc/ext/reflex/capture_event.cpp +1 -1
  4. data/.doc/ext/reflex/chase_constraint.cpp +84 -0
  5. data/.doc/ext/reflex/clipboard.cpp +65 -0
  6. data/.doc/ext/reflex/color_event.cpp +76 -0
  7. data/.doc/ext/reflex/color_picker.cpp +113 -0
  8. data/.doc/ext/reflex/constraint.cpp +135 -0
  9. data/.doc/ext/reflex/contact_event.cpp +1 -1
  10. data/.doc/ext/reflex/control_change_event.cpp +1 -1
  11. data/.doc/ext/reflex/device.cpp +1 -1
  12. data/.doc/ext/reflex/device_event.cpp +1 -1
  13. data/.doc/ext/reflex/draw_event.cpp +1 -1
  14. data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
  15. data/.doc/ext/reflex/event.cpp +1 -1
  16. data/.doc/ext/reflex/file_dialog.cpp +181 -0
  17. data/.doc/ext/reflex/file_event.cpp +103 -0
  18. data/.doc/ext/reflex/filter.cpp +1 -1
  19. data/.doc/ext/reflex/focus_event.cpp +1 -1
  20. data/.doc/ext/reflex/frame_event.cpp +1 -1
  21. data/.doc/ext/reflex/gamepad.cpp +48 -0
  22. data/.doc/ext/reflex/image_view.cpp +1 -1
  23. data/.doc/ext/reflex/key_event.cpp +1 -274
  24. data/.doc/ext/reflex/line_shape.cpp +1 -1
  25. data/.doc/ext/reflex/link_constraint.cpp +178 -0
  26. data/.doc/ext/reflex/menu.cpp +303 -0
  27. data/.doc/ext/reflex/midi.cpp +9 -2
  28. data/.doc/ext/reflex/midi_event.cpp +1 -1
  29. data/.doc/ext/reflex/motion_event.cpp +1 -1
  30. data/.doc/ext/reflex/native.cpp +40 -10
  31. data/.doc/ext/reflex/note_event.cpp +1 -1
  32. data/.doc/ext/reflex/pin.cpp +156 -0
  33. data/.doc/ext/reflex/pointer.cpp +3 -1
  34. data/.doc/ext/reflex/pointer_event.cpp +3 -3
  35. data/.doc/ext/reflex/polygon_shape.cpp +1 -1
  36. data/.doc/ext/reflex/rect_shape.cpp +1 -1
  37. data/.doc/ext/reflex/reflex.cpp +606 -237
  38. data/.doc/ext/reflex/screen.cpp +27 -1
  39. data/.doc/ext/reflex/scroll_event.cpp +1 -1
  40. data/.doc/ext/reflex/selector.cpp +5 -5
  41. data/.doc/ext/reflex/shape.cpp +1 -1
  42. data/.doc/ext/reflex/snap_constraint.cpp +125 -0
  43. data/.doc/ext/reflex/style.cpp +1 -1
  44. data/.doc/ext/reflex/style_length.cpp +4 -3
  45. data/.doc/ext/reflex/text_event.cpp +104 -0
  46. data/.doc/ext/reflex/timer.cpp +1 -1
  47. data/.doc/ext/reflex/timer_event.cpp +1 -1
  48. data/.doc/ext/reflex/update_event.cpp +1 -1
  49. data/.doc/ext/reflex/view.cpp +206 -79
  50. data/.doc/ext/reflex/wheel_constraint.cpp +142 -0
  51. data/.doc/ext/reflex/wheel_event.cpp +1 -1
  52. data/.doc/ext/reflex/window.cpp +282 -31
  53. data/.github/workflows/release-gem.yml +2 -40
  54. data/.github/workflows/tag.yml +5 -28
  55. data/.github/workflows/test.yml +1 -28
  56. data/ChangeLog.md +79 -0
  57. data/Gemfile.lock +13 -8
  58. data/README.md +1 -0
  59. data/Rakefile +13 -2
  60. data/Reflex.podspec +2 -2
  61. data/VERSION +1 -1
  62. data/ext/reflex/application.cpp +62 -7
  63. data/ext/reflex/capture_event.cpp +1 -1
  64. data/ext/reflex/chase_constraint.cpp +89 -0
  65. data/ext/reflex/clipboard.cpp +69 -0
  66. data/ext/reflex/color_event.cpp +80 -0
  67. data/ext/reflex/color_picker.cpp +121 -0
  68. data/ext/reflex/constraint.cpp +146 -0
  69. data/ext/reflex/contact_event.cpp +1 -1
  70. data/ext/reflex/control_change_event.cpp +1 -1
  71. data/ext/reflex/device.cpp +1 -1
  72. data/ext/reflex/device_event.cpp +1 -1
  73. data/ext/reflex/draw_event.cpp +1 -1
  74. data/ext/reflex/ellipse_shape.cpp +1 -1
  75. data/ext/reflex/event.cpp +1 -1
  76. data/ext/reflex/extconf.rb +4 -2
  77. data/ext/reflex/file_dialog.cpp +194 -0
  78. data/ext/reflex/file_event.cpp +108 -0
  79. data/ext/reflex/filter.cpp +1 -1
  80. data/ext/reflex/focus_event.cpp +1 -1
  81. data/ext/reflex/frame_event.cpp +1 -1
  82. data/ext/reflex/gamepad.cpp +50 -0
  83. data/ext/reflex/image_view.cpp +1 -1
  84. data/ext/reflex/key_event.cpp +1 -275
  85. data/ext/reflex/line_shape.cpp +1 -1
  86. data/ext/reflex/link_constraint.cpp +194 -0
  87. data/ext/reflex/menu.cpp +331 -0
  88. data/ext/reflex/midi.cpp +11 -3
  89. data/ext/reflex/midi_event.cpp +1 -1
  90. data/ext/reflex/motion_event.cpp +1 -1
  91. data/ext/reflex/native.cpp +40 -10
  92. data/ext/reflex/note_event.cpp +1 -1
  93. data/ext/reflex/pin.cpp +165 -0
  94. data/ext/reflex/pointer.cpp +3 -1
  95. data/ext/reflex/pointer_event.cpp +3 -3
  96. data/ext/reflex/polygon_shape.cpp +1 -1
  97. data/ext/reflex/rect_shape.cpp +1 -1
  98. data/ext/reflex/reflex.cpp +608 -237
  99. data/ext/reflex/screen.cpp +31 -2
  100. data/ext/reflex/scroll_event.cpp +1 -1
  101. data/ext/reflex/selector.cpp +5 -5
  102. data/ext/reflex/selector.h +10 -10
  103. data/ext/reflex/shape.cpp +1 -1
  104. data/ext/reflex/snap_constraint.cpp +135 -0
  105. data/ext/reflex/style.cpp +1 -1
  106. data/ext/reflex/style_length.cpp +4 -3
  107. data/ext/reflex/text_event.cpp +111 -0
  108. data/ext/reflex/timer.cpp +1 -1
  109. data/ext/reflex/timer_event.cpp +1 -1
  110. data/ext/reflex/update_event.cpp +1 -1
  111. data/ext/reflex/view.cpp +236 -96
  112. data/ext/reflex/wheel_constraint.cpp +154 -0
  113. data/ext/reflex/wheel_event.cpp +1 -1
  114. data/ext/reflex/window.cpp +318 -40
  115. data/include/reflex/application.h +19 -0
  116. data/include/reflex/clipboard.h +53 -0
  117. data/include/reflex/color_picker.h +65 -0
  118. data/include/reflex/constraint.h +275 -0
  119. data/include/reflex/defs.h +204 -195
  120. data/include/reflex/event.h +180 -88
  121. data/include/reflex/file_dialog.h +73 -0
  122. data/include/reflex/gamepad.h +3 -0
  123. data/include/reflex/menu.h +120 -0
  124. data/include/reflex/midi.h +3 -0
  125. data/include/reflex/pin.h +68 -0
  126. data/include/reflex/pointer.h +4 -0
  127. data/include/reflex/reflex.h +2 -0
  128. data/include/reflex/ruby/application.h +6 -1
  129. data/include/reflex/ruby/clipboard.h +23 -0
  130. data/include/reflex/ruby/color_picker.h +89 -0
  131. data/include/reflex/ruby/constraint.h +94 -0
  132. data/include/reflex/ruby/event.h +62 -29
  133. data/include/reflex/ruby/file_dialog.h +89 -0
  134. data/include/reflex/ruby/gamepad.h +46 -0
  135. data/include/reflex/ruby/menu.h +103 -0
  136. data/include/reflex/ruby/pin.h +40 -0
  137. data/include/reflex/ruby/reflex.h +3 -0
  138. data/include/reflex/ruby/view.h +123 -39
  139. data/include/reflex/ruby/window.h +96 -19
  140. data/include/reflex/ruby.h +3 -0
  141. data/include/reflex/screen.h +11 -2
  142. data/include/reflex/view.h +66 -27
  143. data/include/reflex/window.h +57 -12
  144. data/include/reflex.h +8 -0
  145. data/lib/reflex/application.rb +5 -5
  146. data/lib/reflex/autoinit.rb +3 -1
  147. data/lib/reflex/button.rb +3 -3
  148. data/lib/reflex/chase_constraint.rb +15 -0
  149. data/lib/reflex/clipboard.rb +19 -0
  150. data/lib/reflex/color_event.rb +16 -0
  151. data/lib/reflex/color_picker.rb +45 -0
  152. data/lib/reflex/constraint.rb +29 -0
  153. data/lib/reflex/control_change_event.rb +17 -0
  154. data/lib/reflex/extension.rb +1 -1
  155. data/lib/reflex/file_dialog.rb +70 -0
  156. data/lib/reflex/file_event.rb +37 -0
  157. data/lib/reflex/helper.rb +79 -0
  158. data/lib/reflex/key_event.rb +14 -14
  159. data/lib/reflex/link_constraint.rb +31 -0
  160. data/lib/reflex/menu.rb +92 -0
  161. data/lib/reflex/model.rb +19 -19
  162. data/lib/reflex/note_event.rb +1 -1
  163. data/lib/reflex/pin.rb +39 -0
  164. data/lib/reflex/pointer.rb +30 -1
  165. data/lib/reflex/pointer_event.rb +13 -2
  166. data/lib/reflex/reflex.rb +5 -0
  167. data/lib/reflex/shape.rb +14 -14
  168. data/lib/reflex/snap_constraint.rb +28 -0
  169. data/lib/reflex/style.rb +16 -16
  170. data/lib/reflex/text_event.rb +40 -0
  171. data/lib/reflex/timer.rb +3 -3
  172. data/lib/reflex/view.rb +85 -18
  173. data/lib/reflex/wheel_constraint.rb +28 -0
  174. data/lib/reflex/wheel_event.rb +19 -1
  175. data/lib/reflex/window.rb +25 -13
  176. data/lib/reflex.rb +23 -8
  177. data/pod.rake +1 -1
  178. data/reflex.gemspec +4 -4
  179. data/samples/constraint.rb +152 -0
  180. data/samples/ime.rb +100 -0
  181. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
  182. data/samples/menu.rb +32 -0
  183. data/samples/model.rb +3 -3
  184. data/samples/test/alert.rb +93 -0
  185. data/samples/test/always_on.rb +76 -0
  186. data/samples/test/app_background.rb +51 -0
  187. data/samples/test/boundary.rb +75 -0
  188. data/samples/test/callback_exception.rb +101 -0
  189. data/samples/test/cancel.rb +53 -0
  190. data/samples/test/color_picker.rb +63 -0
  191. data/samples/test/file_dialog.rb +102 -0
  192. data/samples/window_style.rb +156 -0
  193. data/src/application.cpp +180 -20
  194. data/src/application.h +95 -5
  195. data/src/clipboard.cpp +81 -0
  196. data/src/color_picker.cpp +113 -0
  197. data/src/color_picker.h +36 -0
  198. data/src/constraint.cpp +1662 -0
  199. data/src/constraint.h +64 -0
  200. data/src/event.cpp +416 -252
  201. data/src/event.h +13 -2
  202. data/src/file_dialog.cpp +163 -0
  203. data/src/file_dialog.h +52 -0
  204. data/src/gamepad.cpp +42 -5
  205. data/src/gamepad.h +4 -0
  206. data/src/ios/app_delegate.mm +5 -3
  207. data/src/ios/application.mm +29 -0
  208. data/src/ios/clipboard.mm +44 -0
  209. data/src/ios/color_picker.mm +19 -0
  210. data/src/ios/event.h +6 -2
  211. data/src/ios/event.mm +31 -12
  212. data/src/ios/file_dialog.mm +21 -0
  213. data/src/ios/gamepad.mm +4 -4
  214. data/src/ios/menu.mm +41 -0
  215. data/src/ios/reflex.mm +8 -0
  216. data/src/ios/screen.mm +26 -0
  217. data/src/ios/view_controller.mm +47 -42
  218. data/src/ios/window.mm +44 -9
  219. data/src/menu.cpp +387 -0
  220. data/src/menu.h +81 -0
  221. data/src/midi.cpp +61 -31
  222. data/src/osx/app_delegate.h +4 -0
  223. data/src/osx/app_delegate.mm +168 -139
  224. data/src/osx/application.mm +103 -5
  225. data/src/osx/clipboard.mm +45 -0
  226. data/src/osx/color_picker.mm +112 -0
  227. data/src/osx/event.h +10 -0
  228. data/src/osx/event.mm +114 -30
  229. data/src/osx/file_dialog.mm +168 -0
  230. data/src/osx/gamepad.mm +2 -2
  231. data/src/osx/gamepad_hid.mm +1 -1
  232. data/src/osx/menu.h +25 -0
  233. data/src/osx/menu.mm +516 -0
  234. data/src/osx/native_window.h +16 -2
  235. data/src/osx/native_window.mm +141 -57
  236. data/src/osx/opengl_view.h +2 -1
  237. data/src/osx/opengl_view.mm +229 -37
  238. data/src/osx/reflex.mm +38 -0
  239. data/src/osx/screen.mm +36 -0
  240. data/src/osx/window.mm +117 -24
  241. data/src/pin.cpp +137 -0
  242. data/src/pointer.cpp +36 -16
  243. data/src/pointer.h +10 -0
  244. data/src/rays.h +46 -0
  245. data/src/sdl/application.cpp +73 -8
  246. data/src/sdl/clipboard.cpp +39 -0
  247. data/src/sdl/color_picker.cpp +18 -0
  248. data/src/sdl/event.cpp +44 -6
  249. data/src/sdl/event.h +18 -3
  250. data/src/sdl/file_dialog.cpp +20 -0
  251. data/src/sdl/gamepad.cpp +3 -7
  252. data/src/sdl/menu.cpp +40 -0
  253. data/src/sdl/reflex.cpp +20 -0
  254. data/src/sdl/screen.cpp +36 -0
  255. data/src/sdl/window.cpp +168 -37
  256. data/src/shape.cpp +15 -10
  257. data/src/view.cpp +583 -233
  258. data/src/view.h +22 -4
  259. data/src/vk.h +416 -0
  260. data/src/win32/application.cpp +167 -12
  261. data/src/win32/application.h +20 -0
  262. data/src/win32/clipboard.cpp +210 -0
  263. data/src/win32/color_picker.cpp +82 -0
  264. data/src/win32/event.cpp +123 -11
  265. data/src/win32/event.h +22 -3
  266. data/src/win32/file_dialog.cpp +226 -0
  267. data/src/win32/gamepad.cpp +9 -2
  268. data/src/win32/menu.cpp +490 -0
  269. data/src/win32/menu.h +35 -0
  270. data/src/win32/opengl.cpp +2 -9
  271. data/src/win32/reflex.cpp +44 -3
  272. data/src/win32/screen.cpp +164 -3
  273. data/src/win32/screen.h +8 -0
  274. data/src/win32/tray.cpp +191 -0
  275. data/src/win32/tray.h +22 -0
  276. data/src/win32/vk.cpp +11 -0
  277. data/src/win32/window.cpp +858 -135
  278. data/src/win32/window.h +9 -0
  279. data/src/window.cpp +929 -183
  280. data/src/window.h +77 -33
  281. data/src/world.cpp +86 -15
  282. data/src/world.h +9 -2
  283. data/test/helper.rb +24 -0
  284. data/test/test_application.rb +101 -1
  285. data/test/test_chase_constraint.rb +122 -0
  286. data/test/test_clipboard.rb +54 -0
  287. data/test/test_color_event.rb +36 -0
  288. data/test/test_color_picker.rb +62 -0
  289. data/test/test_constraint.rb +184 -0
  290. data/test/test_event.rb +1 -1
  291. data/test/test_file_dialog.rb +48 -0
  292. data/test/test_file_event.rb +43 -0
  293. data/test/test_has_text_preedit.rb +54 -0
  294. data/test/test_key_event.rb +23 -2
  295. data/test/test_link_constraint.rb +237 -0
  296. data/test/test_menu.rb +237 -0
  297. data/test/test_pin.rb +65 -0
  298. data/test/test_pointer.rb +50 -26
  299. data/test/test_pointer_event.rb +25 -10
  300. data/test/test_reflex.rb +36 -0
  301. data/test/test_screen.rb +24 -2
  302. data/test/test_snap_constraint.rb +140 -0
  303. data/test/test_text_event.rb +54 -0
  304. data/test/test_view.rb +152 -25
  305. data/test/test_wheel_constraint.rb +125 -0
  306. data/test/test_wheel_event.rb +24 -10
  307. data/test/test_window.rb +205 -43
  308. metadata +154 -10
  309. data/.github/workflows/utils.rb +0 -127
@@ -0,0 +1,331 @@
1
+ #include "reflex/ruby/menu.h"
2
+
3
+
4
+ #include <ranges>
5
+ #include <rays/ruby/image.h>
6
+ #include "reflex/exception.h"
7
+ #include "reflex/ruby/reflex.h"
8
+ #include "reflex/ruby/selector.h"
9
+ #include "reflex/ruby/view.h"
10
+ #include "defs.h"
11
+ #include "selector.h"
12
+
13
+
14
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Menu)
15
+
16
+ #define THIS to<Reflex::Menu*>(self)
17
+
18
+ #define CHECK RUCY_CHECK_PTR(Reflex::Menu, self)
19
+
20
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
21
+
22
+
23
+ static
24
+ RUCY_DEF_ALLOC(alloc, klass)
25
+ {
26
+ return value(new Reflex::RubyMenu<Reflex::Menu>, klass);
27
+ }
28
+ RUCY_END
29
+
30
+ static
31
+ RUCY_DEFN(popup)
32
+ {
33
+ CHECK;
34
+ check_arg_count(__FILE__, __LINE__, "Menu#popup", argc, 2, 3);
35
+
36
+ Reflex::View* view = NULL;
37
+ if (argv[0].is_a(Reflex::view_class()))
38
+ {
39
+ view = to<Reflex::View*>(argv[0]);
40
+ argc--;
41
+ argv++;
42
+ }
43
+ THIS->popup(view, to<Rays::Point>(argc, argv));
44
+ return self;
45
+ }
46
+ RUCY_END
47
+
48
+ static
49
+ RUCY_DEF2(add_child, child, index)
50
+ {
51
+ CHECK;
52
+ THIS->add_child(to<Reflex::Menu*>(child), index.is_nil() ? -1 : to<int>(index));
53
+ return child;
54
+ }
55
+ RUCY_END
56
+
57
+ static
58
+ RUCY_DEF1(remove_child, child)
59
+ {
60
+ CHECK;
61
+ THIS->remove_child(to<Reflex::Menu*>(child));
62
+ return child;
63
+ }
64
+ RUCY_END
65
+
66
+ static
67
+ RUCY_DEF0(clear_children)
68
+ {
69
+ CHECK;
70
+ THIS->clear_children();
71
+ return self;
72
+ }
73
+ RUCY_END
74
+
75
+ static
76
+ RUCY_DEFN(find_children)
77
+ {
78
+ CHECK;
79
+ check_arg_count(__FILE__, __LINE__, "Menu#find_children", argc, 1, 2);
80
+
81
+ bool recursive = (argc >= 2) ? to<bool>(argv[1]) : true;
82
+
83
+ auto children =
84
+ THIS->find_children(to<Reflex::Selector>(argv[0]), recursive) |
85
+ std::views::transform([](auto& ref) {return value(ref);});
86
+ return array(children.begin(), children.end());
87
+ }
88
+ RUCY_END
89
+
90
+ static
91
+ RUCY_DEF1(set_label, label)
92
+ {
93
+ CHECK;
94
+ THIS->set_label(label ? to<const char*>(label) : NULL);
95
+ }
96
+ RUCY_END
97
+
98
+ static
99
+ RUCY_DEF0(get_label)
100
+ {
101
+ CHECK;
102
+ return value(THIS->label());
103
+ }
104
+ RUCY_END
105
+
106
+ static
107
+ RUCY_DEF1(set_image, image)
108
+ {
109
+ CHECK;
110
+ THIS->set_image(image ? to<Rays::Image&>(image) : Rays::Image());
111
+ return image;
112
+ }
113
+ RUCY_END
114
+
115
+ static
116
+ RUCY_DEF0(get_image)
117
+ {
118
+ CHECK;
119
+ const Rays::Image& image = THIS->image();
120
+ return image ? value(image) : nil();
121
+ }
122
+ RUCY_END
123
+
124
+ static
125
+ RUCY_DEF1(enable, state)
126
+ {
127
+ CHECK;
128
+ THIS->enable(to<bool>(state));
129
+ }
130
+ RUCY_END
131
+
132
+ static
133
+ RUCY_DEF0(is_enabled)
134
+ {
135
+ CHECK;
136
+ return value(THIS->is_enabled());
137
+ }
138
+ RUCY_END
139
+
140
+ static
141
+ RUCY_DEF1(check, state)
142
+ {
143
+ CHECK;
144
+ THIS->check(to<bool>(state));
145
+ }
146
+ RUCY_END
147
+
148
+ static
149
+ RUCY_DEF0(is_checked)
150
+ {
151
+ CHECK;
152
+ return value(THIS->is_checked());
153
+ }
154
+ RUCY_END
155
+
156
+
157
+ static
158
+ RUCY_DEF1(set_shortcut_key, key)
159
+ {
160
+ CHECK;
161
+ THIS->set_shortcut(
162
+ key ? to<Reflex::KeyCode>(key) : Reflex::KEY_NONE,
163
+ THIS->shortcut_modifiers());
164
+ }
165
+ RUCY_END
166
+
167
+ static
168
+ RUCY_DEF0(get_shortcut_key)
169
+ {
170
+ CHECK;
171
+ return value((int) THIS->shortcut_key());
172
+ }
173
+ RUCY_END
174
+
175
+ static
176
+ RUCY_DEF1(set_shortcut_modifiers, modifiers)
177
+ {
178
+ CHECK;
179
+ THIS->set_shortcut(THIS->shortcut_key(), to<uint>(modifiers));
180
+ }
181
+ RUCY_END
182
+
183
+ static
184
+ RUCY_DEF0(get_shortcut_modifiers)
185
+ {
186
+ CHECK;
187
+ return value(THIS->shortcut_modifiers());
188
+ }
189
+ RUCY_END
190
+
191
+ static
192
+ RUCY_DEF0(is_separator)
193
+ {
194
+ CHECK;
195
+ return value(THIS->is_separator());
196
+ }
197
+ RUCY_END
198
+
199
+ static
200
+ RUCY_DEF0(get_parent)
201
+ {
202
+ CHECK;
203
+ return value(THIS->parent());
204
+ }
205
+ RUCY_END
206
+
207
+ static
208
+ RUCY_DEF0(get_size)
209
+ {
210
+ CHECK;
211
+ return value((int) THIS->size());
212
+ }
213
+ RUCY_END
214
+
215
+ static
216
+ RUCY_DEF0(is_empty)
217
+ {
218
+ CHECK;
219
+ return value(THIS->empty());
220
+ }
221
+ RUCY_END
222
+
223
+ static
224
+ RUCY_DEF0(each)
225
+ {
226
+ CHECK;
227
+
228
+ std::vector<Reflex::Menu::Ref> children(THIS->begin(), THIS->end());
229
+
230
+ Value ret;
231
+ for (auto& child : children)
232
+ ret = yield(value(child.get()));
233
+ return ret;
234
+ }
235
+ RUCY_END
236
+
237
+ static
238
+ RUCY_DEF1(on_show, event)
239
+ {
240
+ CHECK;
241
+ CALL(on_show(to<Reflex::Event*>(event)));
242
+ }
243
+ RUCY_END
244
+
245
+ static
246
+ RUCY_DEF1(on_hide, event)
247
+ {
248
+ CHECK;
249
+ CALL(on_hide(to<Reflex::Event*>(event)));
250
+ }
251
+ RUCY_END
252
+
253
+ static
254
+ RUCY_DEF1(on_open_submenu, event)
255
+ {
256
+ CHECK;
257
+ CALL(on_open_submenu(to<Reflex::Event*>(event)));
258
+ }
259
+ RUCY_END
260
+
261
+ static
262
+ RUCY_DEF1(on_close_submenu, event)
263
+ {
264
+ CHECK;
265
+ CALL(on_close_submenu(to<Reflex::Event*>(event)));
266
+ }
267
+ RUCY_END
268
+
269
+ static
270
+ RUCY_DEF1(on_click, event)
271
+ {
272
+ CHECK;
273
+ CALL(on_click(to<Reflex::Event*>(event)));
274
+ }
275
+ RUCY_END
276
+
277
+
278
+ static Class cMenu;
279
+
280
+ void
281
+ Init_reflex_menu ()
282
+ {
283
+ Module mReflex = define_module("Reflex");
284
+
285
+ cMenu = mReflex.define_class("Menu");
286
+ cMenu.define_alloc_func(alloc);
287
+ cMenu.define_method("popup", popup);
288
+ cMenu.define_method( "add_child!", add_child);
289
+ cMenu.define_method("remove_child", remove_child);
290
+ cMenu.define_method( "clear_children", clear_children);
291
+ cMenu.define_method( "find_children", find_children);
292
+ cMenu.define_method("label=", set_label);
293
+ cMenu.define_method("label", get_label);
294
+ cMenu.define_method("image=", set_image);
295
+ cMenu.define_method("image", get_image);
296
+ cMenu.define_method("enable!", enable);
297
+ cMenu.define_method("enabled?", is_enabled);
298
+ cMenu.define_method("check!", check);
299
+ cMenu.define_method("checked?", is_checked);
300
+ cMenu.define_private_method("set_shortcut_key!", set_shortcut_key);
301
+ cMenu.define_private_method("shortcut_key!", get_shortcut_key);
302
+ cMenu.define_method("shortcut_modifiers=", set_shortcut_modifiers);
303
+ cMenu.define_method("shortcut_modifiers", get_shortcut_modifiers);
304
+ cMenu.define_method("separator?", is_separator);
305
+ cMenu.define_method("parent", get_parent);
306
+ cMenu.define_method("size", get_size);
307
+ cMenu.define_method("empty?", is_empty);
308
+ cMenu.define_method("each!", each);
309
+ cMenu.define_method("on_show", on_show);
310
+ cMenu.define_method("on_hide", on_hide);
311
+ cMenu.define_method("on_open_submenu", on_open_submenu);
312
+ cMenu.define_method("on_close_submenu", on_close_submenu);
313
+ cMenu.define_method("on_click", on_click);
314
+
315
+ define_wrapper_equality_methods<Reflex::Menu>(cMenu);
316
+ define_selector_methods<Reflex::Menu>(cMenu);
317
+ }
318
+
319
+
320
+ namespace Reflex
321
+ {
322
+
323
+
324
+ Class
325
+ menu_class ()
326
+ {
327
+ return cMenu;
328
+ }
329
+
330
+
331
+ }// Reflex
data/ext/reflex/midi.cpp CHANGED
@@ -10,7 +10,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MIDI)
10
10
 
11
11
  #define THIS to<Reflex::MIDI*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJECT(Reflex::MIDI, self)
13
+ #define CHECK RUCY_CHECK_OBJ(Reflex::MIDI, self)
14
14
 
15
15
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
16
16
 
@@ -66,11 +66,18 @@ static
66
66
  RUCY_DEF0(s_get_all)
67
67
  {
68
68
  auto list = Reflex::MIDI::all() |
69
- std::views::transform([](auto& ref) {return value(ref);});
69
+ std::views::transform([](Reflex::MIDI::Ref ref) {return value(ref);});
70
70
  return array(list.begin(), list.end());
71
71
  }
72
72
  RUCY_END
73
73
 
74
+ static
75
+ RUCY_DEF0(s_enable)
76
+ {
77
+ Reflex::enable_midi();
78
+ }
79
+ RUCY_END
80
+
74
81
 
75
82
  static Class cMIDI;
76
83
 
@@ -86,7 +93,8 @@ Init_reflex_midi ()
86
93
  cMIDI.define_method("on_note_on", on_note_on);
87
94
  cMIDI.define_method("on_note_off", on_note_off);
88
95
  cMIDI.define_method("on_control_change", on_control_change);
89
- cMIDI.define_singleton_method("all", s_get_all);
96
+ cMIDI.define_singleton_method("all", s_get_all);
97
+ cMIDI.define_singleton_method("enable", s_enable);
90
98
 
91
99
  define_wrapper_equality_methods<Reflex::MIDI>(cMIDI);
92
100
  }
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MIDIEvent)
9
9
 
10
10
  #define THIS to<Reflex::MIDIEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::MIDIEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::MIDIEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::MotionEvent)
9
9
 
10
10
  #define THIS to<Reflex::MotionEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::MotionEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::MotionEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -4,8 +4,8 @@
4
4
  void Init_reflex ();
5
5
  void Init_reflex_exception ();
6
6
 
7
- void Init_reflex_pointer ();
8
7
  void Init_reflex_selector ();
8
+ void Init_reflex_pointer ();
9
9
  void Init_reflex_style ();
10
10
  void Init_reflex_style_length ();
11
11
  void Init_reflex_timer ();
@@ -19,15 +19,18 @@ void Init_reflex_frame_event ();
19
19
  void Init_reflex_scroll_event ();
20
20
  void Init_reflex_focus_event ();
21
21
  void Init_reflex_key_event ();
22
+ void Init_reflex_text_event ();
22
23
  void Init_reflex_pointer_event ();
23
24
  void Init_reflex_wheel_event ();
24
- void Init_reflex_midi_event ();
25
- void Init_reflex_note_event ();
26
- void Init_reflex_control_change_event ();
27
25
  void Init_reflex_capture_event ();
28
26
  void Init_reflex_timer_event ();
29
27
  void Init_reflex_contact_event ();
30
28
  void Init_reflex_motion_event ();
29
+ void Init_reflex_file_event ();
30
+ void Init_reflex_color_event ();
31
+ void Init_reflex_midi_event ();
32
+ void Init_reflex_note_event ();
33
+ void Init_reflex_control_change_event ();
31
34
 
32
35
  void Init_reflex_shape ();
33
36
  void Init_reflex_polygon_shape ();
@@ -35,13 +38,25 @@ void Init_reflex_line_shape ();
35
38
  void Init_reflex_rect_shape ();
36
39
  void Init_reflex_ellipse_shape ();
37
40
 
41
+ void Init_reflex_pin ();
42
+ void Init_reflex_constraint ();
43
+ void Init_reflex_snap_constraint ();
44
+ void Init_reflex_link_constraint ();
45
+ void Init_reflex_wheel_constraint ();
46
+ void Init_reflex_chase_constraint ();
47
+
38
48
  void Init_reflex_application ();
39
- void Init_reflex_screen ();
40
49
  void Init_reflex_window ();
41
50
  void Init_reflex_view ();
51
+ void Init_reflex_menu ();
52
+ void Init_reflex_screen ();
53
+ void Init_reflex_clipboard ();
54
+ void Init_reflex_file_dialog ();
55
+ void Init_reflex_color_picker ();
42
56
 
43
57
  void Init_reflex_device ();
44
58
  void Init_reflex_midi ();
59
+ void Init_reflex_gamepad ();
45
60
 
46
61
  void Init_reflex_image_view ();
47
62
 
@@ -56,8 +71,8 @@ Init_reflex_ext ()
56
71
  Init_reflex();
57
72
  Init_reflex_exception();
58
73
 
59
- Init_reflex_pointer();
60
74
  Init_reflex_selector();
75
+ Init_reflex_pointer();
61
76
  Init_reflex_style();
62
77
  Init_reflex_style_length();
63
78
  Init_reflex_timer();
@@ -71,15 +86,18 @@ Init_reflex_ext ()
71
86
  Init_reflex_scroll_event();
72
87
  Init_reflex_focus_event();
73
88
  Init_reflex_key_event();
89
+ Init_reflex_text_event();
74
90
  Init_reflex_pointer_event();
75
91
  Init_reflex_wheel_event();
76
- Init_reflex_midi_event();
77
- Init_reflex_note_event();
78
- Init_reflex_control_change_event();
79
92
  Init_reflex_capture_event();
80
93
  Init_reflex_timer_event();
81
94
  Init_reflex_contact_event();
82
95
  Init_reflex_motion_event();
96
+ Init_reflex_file_event();
97
+ Init_reflex_color_event();
98
+ Init_reflex_midi_event();
99
+ Init_reflex_note_event();
100
+ Init_reflex_control_change_event();
83
101
 
84
102
  Init_reflex_shape();
85
103
  Init_reflex_polygon_shape();
@@ -87,13 +105,25 @@ Init_reflex_ext ()
87
105
  Init_reflex_rect_shape();
88
106
  Init_reflex_ellipse_shape();
89
107
 
108
+ Init_reflex_pin();
109
+ Init_reflex_constraint();
110
+ Init_reflex_snap_constraint();
111
+ Init_reflex_link_constraint();
112
+ Init_reflex_wheel_constraint();
113
+ Init_reflex_chase_constraint();
114
+
90
115
  Init_reflex_application();
91
- Init_reflex_screen();
92
116
  Init_reflex_window();
93
117
  Init_reflex_view();
118
+ Init_reflex_menu();
119
+ Init_reflex_screen();
120
+ Init_reflex_clipboard();
121
+ Init_reflex_file_dialog();
122
+ Init_reflex_color_picker();
94
123
 
95
124
  Init_reflex_device();
96
125
  Init_reflex_midi();
126
+ Init_reflex_gamepad();
97
127
 
98
128
  Init_reflex_image_view();
99
129
 
@@ -8,7 +8,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::NoteEvent)
8
8
 
9
9
  #define THIS to<Reflex::NoteEvent*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::NoteEvent, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::NoteEvent, self)
12
12
 
13
13
 
14
14
  static
@@ -0,0 +1,165 @@
1
+ #include "reflex/ruby/pin.h"
2
+
3
+
4
+ #include <rays/ruby/point.h>
5
+ #include "reflex/ruby/constraint.h"
6
+ #include "reflex/ruby/view.h"
7
+ #include "defs.h"
8
+
9
+
10
+ RUCY_DEFINE_VALUE_OR_ARRAY_FROM_TO(REFLEX_EXPORT, Reflex::Pin)
11
+
12
+ #define THIS to<Reflex::Pin*>(self)
13
+
14
+ #define CHECK RUCY_CHECK_PTR(Reflex::Pin, self)
15
+
16
+
17
+ static
18
+ RUCY_DEF_ALLOC(alloc, klass)
19
+ {
20
+ return new_type<Reflex::Pin>(klass);
21
+ }
22
+ RUCY_END
23
+
24
+ static
25
+ RUCY_DEFN(initialize)
26
+ {
27
+ CHECK;
28
+ *THIS = to<Reflex::Pin>(argc, argv);
29
+ }
30
+ RUCY_END
31
+
32
+ static
33
+ RUCY_DEF1(initialize_copy, obj)
34
+ {
35
+ CHECK;
36
+ *THIS = to<Reflex::Pin&>(obj);
37
+ }
38
+ RUCY_END
39
+
40
+ static
41
+ RUCY_DEFN(snap)
42
+ {
43
+ CHECK;
44
+ return value(THIS->snap(to<Reflex::Pin>(argc, argv)));
45
+ }
46
+ RUCY_END
47
+
48
+ static
49
+ RUCY_DEFN(link)
50
+ {
51
+ CHECK;
52
+ return value(THIS->link(to<Reflex::Pin>(argc, argv)));
53
+ }
54
+ RUCY_END
55
+
56
+ static
57
+ RUCY_DEFN(wheel)
58
+ {
59
+ CHECK;
60
+ return value(THIS->wheel(to<Reflex::Pin>(argc, argv)));
61
+ }
62
+ RUCY_END
63
+
64
+ static
65
+ RUCY_DEFN(chase)
66
+ {
67
+ CHECK;
68
+ return value(THIS->chase(to<Reflex::Pin>(argc, argv)));
69
+ }
70
+ RUCY_END
71
+
72
+ static
73
+ RUCY_DEF0(get_view)
74
+ {
75
+ CHECK;
76
+ return value(THIS->view());
77
+ }
78
+ RUCY_END
79
+
80
+ static
81
+ RUCY_DEF0(get_position)
82
+ {
83
+ CHECK;
84
+ const Rays::Point* pos = THIS->position();
85
+ return pos ? value(*pos) : nil();
86
+ }
87
+ RUCY_END
88
+
89
+
90
+ static Class cPin;
91
+
92
+ void
93
+ Init_reflex_pin ()
94
+ {
95
+ Module mReflex = define_module("Reflex");
96
+
97
+ cPin = mReflex.define_class("Pin");
98
+ cPin.define_alloc_func(alloc);
99
+ cPin.define_private_method("initialize", initialize);
100
+ cPin.define_private_method("initialize_copy", initialize_copy);
101
+ cPin.define_private_method("snap!", snap);
102
+ cPin.define_private_method("link!", link);
103
+ cPin.define_private_method("wheel!", wheel);
104
+ cPin.define_private_method("chase!", chase);
105
+ cPin.define_method("view", get_view);
106
+ cPin.define_method("position", get_position);
107
+ }
108
+
109
+
110
+ namespace Rucy
111
+ {
112
+
113
+
114
+ template <> REFLEX_EXPORT Reflex::Pin
115
+ value_to<Reflex::Pin> (int argc, const Value* argv, bool convert)
116
+ {
117
+ if (argc == 1 && argv && argv->is_array())
118
+ {
119
+ argc = argv->size();
120
+ argv = argv->as_array();
121
+ }
122
+
123
+ if (convert)
124
+ {
125
+ if (argc == 0 || argv->is_nil())
126
+ return Reflex::Pin();
127
+
128
+ if (argv->is_a(Reflex::view_class()))
129
+ {
130
+ Reflex::View* view = value_to<Reflex::View*>(*argv);
131
+ argc -= 1;
132
+ argv += 1;
133
+
134
+ if (argc == 0)
135
+ return Reflex::Pin(view);
136
+ else
137
+ return Reflex::Pin(view, value_to<Rays::Point>(argc, argv, convert));
138
+ }
139
+
140
+ if (!argv->is_a(Reflex::pin_class()))
141
+ return Reflex::Pin(value_to<Rays::Point>(argc, argv, convert));
142
+ }
143
+
144
+ if (argc != 1)
145
+ argument_error(__FILE__, __LINE__);
146
+
147
+ return value_to<Reflex::Pin&>(*argv, convert);
148
+ }
149
+
150
+
151
+ }// Rucy
152
+
153
+
154
+ namespace Reflex
155
+ {
156
+
157
+
158
+ Class
159
+ pin_class ()
160
+ {
161
+ return cPin;
162
+ }
163
+
164
+
165
+ }// Reflex
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Pointer)
9
9
 
10
10
  #define THIS to<Reflex::Pointer*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::Pointer, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::Pointer, self)
13
13
 
14
14
 
15
15
  static
@@ -163,6 +163,8 @@ Init_reflex_pointer ()
163
163
  cPointer.define_const("UP", Reflex::Pointer::UP);
164
164
  cPointer.define_const("MOVE", Reflex::Pointer::MOVE);
165
165
  cPointer.define_const("CANCEL", Reflex::Pointer::CANCEL);
166
+ cPointer.define_const("ENTER", Reflex::Pointer::ENTER);
167
+ cPointer.define_const("LEAVE", Reflex::Pointer::LEAVE);
166
168
  cPointer.define_const("STAY", Reflex::Pointer::STAY);
167
169
  }
168
170
 
@@ -11,7 +11,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::PointerEvent)
11
11
 
12
12
  #define THIS to<Reflex::PointerEvent*>(self)
13
13
 
14
- #define CHECK RUCY_CHECK_OBJ(Reflex::PointerEvent, self)
14
+ #define CHECK RUCY_CHECK_PTR(Reflex::PointerEvent, self)
15
15
 
16
16
 
17
17
  static
@@ -33,7 +33,7 @@ RUCY_DEFN(initialize)
33
33
  for (size_t i = 0; i < argc; ++i)
34
34
  pointers.emplace_back(to<Reflex::Pointer&>(argv[i]));
35
35
 
36
- *THIS = Reflex::PointerEvent(&pointers[0], pointers.size());
36
+ *THIS = Reflex::PointerEvent(pointers.data(), pointers.size());
37
37
  return rb_call_super(0, NULL);
38
38
  }
39
39
  RUCY_END
@@ -92,7 +92,7 @@ RUCY_DEF0(each)
92
92
 
93
93
  Value ret;
94
94
  for (size_t i = 0, size = THIS->size(); i < size; ++i)
95
- ret = rb_yield(value((*THIS)[i]));
95
+ ret = yield(value((*THIS)[i]));
96
96
  return ret;
97
97
  }
98
98
  RUCY_END