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.
Files changed (275) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +37 -6
  3. data/.doc/ext/reflex/capture_event.cpp +1 -1
  4. data/.doc/ext/reflex/chase_constraint.cpp +1 -1
  5. data/.doc/ext/reflex/clipboard.cpp +1 -1
  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 +1 -1
  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 +1 -1
  26. data/.doc/ext/reflex/menu.cpp +6 -5
  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 +18 -6
  31. data/.doc/ext/reflex/note_event.cpp +1 -1
  32. data/.doc/ext/reflex/pin.cpp +1 -1
  33. data/.doc/ext/reflex/pointer.cpp +1 -1
  34. data/.doc/ext/reflex/pointer_event.cpp +2 -2
  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 +566 -232
  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 +1 -1
  41. data/.doc/ext/reflex/shape.cpp +1 -1
  42. data/.doc/ext/reflex/snap_constraint.cpp +1 -1
  43. data/.doc/ext/reflex/style.cpp +1 -1
  44. data/.doc/ext/reflex/style_length.cpp +1 -1
  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 +110 -56
  50. data/.doc/ext/reflex/wheel_constraint.cpp +1 -1
  51. data/.doc/ext/reflex/wheel_event.cpp +1 -1
  52. data/.doc/ext/reflex/window.cpp +226 -17
  53. data/.github/workflows/release-gem.yml +2 -49
  54. data/.github/workflows/tag.yml +5 -28
  55. data/.github/workflows/test.yml +1 -37
  56. data/ChangeLog.md +54 -0
  57. data/Gemfile.lock +13 -8
  58. data/Rakefile +13 -2
  59. data/Reflex.podspec +2 -2
  60. data/VERSION +1 -1
  61. data/ext/reflex/application.cpp +41 -6
  62. data/ext/reflex/capture_event.cpp +1 -1
  63. data/ext/reflex/chase_constraint.cpp +1 -1
  64. data/ext/reflex/clipboard.cpp +1 -1
  65. data/ext/reflex/color_event.cpp +80 -0
  66. data/ext/reflex/color_picker.cpp +121 -0
  67. data/ext/reflex/constraint.cpp +1 -1
  68. data/ext/reflex/contact_event.cpp +1 -1
  69. data/ext/reflex/control_change_event.cpp +1 -1
  70. data/ext/reflex/device.cpp +1 -1
  71. data/ext/reflex/device_event.cpp +1 -1
  72. data/ext/reflex/draw_event.cpp +1 -1
  73. data/ext/reflex/ellipse_shape.cpp +1 -1
  74. data/ext/reflex/event.cpp +1 -1
  75. data/ext/reflex/extconf.rb +4 -2
  76. data/ext/reflex/file_dialog.cpp +194 -0
  77. data/ext/reflex/file_event.cpp +108 -0
  78. data/ext/reflex/filter.cpp +1 -1
  79. data/ext/reflex/focus_event.cpp +1 -1
  80. data/ext/reflex/frame_event.cpp +1 -1
  81. data/ext/reflex/gamepad.cpp +50 -0
  82. data/ext/reflex/image_view.cpp +1 -1
  83. data/ext/reflex/key_event.cpp +1 -275
  84. data/ext/reflex/line_shape.cpp +1 -1
  85. data/ext/reflex/link_constraint.cpp +1 -1
  86. data/ext/reflex/menu.cpp +8 -7
  87. data/ext/reflex/midi.cpp +11 -3
  88. data/ext/reflex/midi_event.cpp +1 -1
  89. data/ext/reflex/motion_event.cpp +1 -1
  90. data/ext/reflex/native.cpp +18 -6
  91. data/ext/reflex/note_event.cpp +1 -1
  92. data/ext/reflex/pin.cpp +1 -1
  93. data/ext/reflex/pointer.cpp +1 -1
  94. data/ext/reflex/pointer_event.cpp +2 -2
  95. data/ext/reflex/polygon_shape.cpp +1 -1
  96. data/ext/reflex/rect_shape.cpp +1 -1
  97. data/ext/reflex/reflex.cpp +568 -232
  98. data/ext/reflex/screen.cpp +31 -2
  99. data/ext/reflex/scroll_event.cpp +1 -1
  100. data/ext/reflex/selector.cpp +1 -1
  101. data/ext/reflex/selector.h +9 -9
  102. data/ext/reflex/shape.cpp +1 -1
  103. data/ext/reflex/snap_constraint.cpp +1 -1
  104. data/ext/reflex/style.cpp +1 -1
  105. data/ext/reflex/style_length.cpp +1 -1
  106. data/ext/reflex/text_event.cpp +111 -0
  107. data/ext/reflex/timer.cpp +1 -1
  108. data/ext/reflex/timer_event.cpp +1 -1
  109. data/ext/reflex/update_event.cpp +1 -1
  110. data/ext/reflex/view.cpp +121 -61
  111. data/ext/reflex/wheel_constraint.cpp +1 -1
  112. data/ext/reflex/wheel_event.cpp +1 -1
  113. data/ext/reflex/window.cpp +256 -25
  114. data/include/reflex/application.h +10 -0
  115. data/include/reflex/color_picker.h +65 -0
  116. data/include/reflex/event.h +178 -88
  117. data/include/reflex/file_dialog.h +73 -0
  118. data/include/reflex/gamepad.h +3 -0
  119. data/include/reflex/menu.h +3 -3
  120. data/include/reflex/midi.h +3 -0
  121. data/include/reflex/reflex.h +2 -0
  122. data/include/reflex/ruby/application.h +6 -1
  123. data/include/reflex/ruby/color_picker.h +89 -0
  124. data/include/reflex/ruby/event.h +62 -29
  125. data/include/reflex/ruby/file_dialog.h +89 -0
  126. data/include/reflex/ruby/gamepad.h +46 -0
  127. data/include/reflex/ruby/reflex.h +3 -0
  128. data/include/reflex/ruby/view.h +92 -44
  129. data/include/reflex/ruby/window.h +60 -1
  130. data/include/reflex/ruby.h +3 -0
  131. data/include/reflex/screen.h +11 -2
  132. data/include/reflex/view.h +28 -16
  133. data/include/reflex/window.h +40 -8
  134. data/include/reflex.h +3 -0
  135. data/lib/reflex/application.rb +5 -5
  136. data/lib/reflex/autoinit.rb +3 -1
  137. data/lib/reflex/button.rb +3 -3
  138. data/lib/reflex/color_event.rb +16 -0
  139. data/lib/reflex/color_picker.rb +45 -0
  140. data/lib/reflex/control_change_event.rb +17 -0
  141. data/lib/reflex/file_dialog.rb +70 -0
  142. data/lib/reflex/file_event.rb +37 -0
  143. data/lib/reflex/helper.rb +58 -7
  144. data/lib/reflex/key_event.rb +9 -4
  145. data/lib/reflex/menu.rb +17 -1
  146. data/lib/reflex/model.rb +19 -19
  147. data/lib/reflex/note_event.rb +1 -1
  148. data/lib/reflex/pointer.rb +14 -3
  149. data/lib/reflex/pointer_event.rb +12 -1
  150. data/lib/reflex/reflex.rb +5 -0
  151. data/lib/reflex/shape.rb +14 -14
  152. data/lib/reflex/style.rb +16 -16
  153. data/lib/reflex/text_event.rb +40 -0
  154. data/lib/reflex/timer.rb +3 -3
  155. data/lib/reflex/view.rb +29 -14
  156. data/lib/reflex/wheel_event.rb +12 -3
  157. data/lib/reflex/window.rb +25 -13
  158. data/lib/reflex.rb +8 -2
  159. data/reflex.gemspec +4 -4
  160. data/samples/ime.rb +100 -0
  161. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
  162. data/samples/menu.rb +4 -1
  163. data/samples/model.rb +3 -3
  164. data/samples/test/alert.rb +93 -0
  165. data/samples/test/always_on.rb +76 -0
  166. data/samples/test/app_background.rb +51 -0
  167. data/samples/test/boundary.rb +75 -0
  168. data/samples/test/callback_exception.rb +101 -0
  169. data/samples/test/cancel.rb +53 -0
  170. data/samples/test/color_picker.rb +63 -0
  171. data/samples/test/file_dialog.rb +102 -0
  172. data/samples/window_style.rb +156 -0
  173. data/src/application.cpp +159 -18
  174. data/src/application.h +92 -7
  175. data/src/color_picker.cpp +113 -0
  176. data/src/color_picker.h +36 -0
  177. data/src/event.cpp +410 -252
  178. data/src/event.h +12 -0
  179. data/src/file_dialog.cpp +163 -0
  180. data/src/file_dialog.h +52 -0
  181. data/src/gamepad.cpp +42 -5
  182. data/src/gamepad.h +4 -0
  183. data/src/ios/app_delegate.mm +5 -3
  184. data/src/ios/application.mm +24 -0
  185. data/src/ios/color_picker.mm +19 -0
  186. data/src/ios/file_dialog.mm +21 -0
  187. data/src/ios/gamepad.mm +4 -4
  188. data/src/ios/menu.mm +5 -0
  189. data/src/ios/reflex.mm +8 -0
  190. data/src/ios/screen.mm +26 -0
  191. data/src/ios/view_controller.mm +2 -30
  192. data/src/ios/window.mm +38 -9
  193. data/src/menu.cpp +66 -4
  194. data/src/menu.h +17 -1
  195. data/src/midi.cpp +61 -31
  196. data/src/osx/app_delegate.h +4 -0
  197. data/src/osx/app_delegate.mm +102 -22
  198. data/src/osx/application.mm +88 -6
  199. data/src/osx/color_picker.mm +112 -0
  200. data/src/osx/event.h +10 -0
  201. data/src/osx/event.mm +84 -30
  202. data/src/osx/file_dialog.mm +168 -0
  203. data/src/osx/gamepad.mm +2 -2
  204. data/src/osx/gamepad_hid.mm +1 -1
  205. data/src/osx/menu.mm +177 -33
  206. data/src/osx/native_window.h +16 -2
  207. data/src/osx/native_window.mm +114 -57
  208. data/src/osx/opengl_view.h +2 -1
  209. data/src/osx/opengl_view.mm +184 -43
  210. data/src/osx/reflex.mm +38 -0
  211. data/src/osx/screen.mm +36 -0
  212. data/src/osx/window.mm +106 -24
  213. data/src/pointer.cpp +13 -4
  214. data/src/pointer.h +4 -0
  215. data/src/rays.h +46 -0
  216. data/src/sdl/application.cpp +68 -8
  217. data/src/sdl/color_picker.cpp +18 -0
  218. data/src/sdl/event.cpp +24 -3
  219. data/src/sdl/event.h +12 -0
  220. data/src/sdl/file_dialog.cpp +20 -0
  221. data/src/sdl/gamepad.cpp +3 -7
  222. data/src/sdl/menu.cpp +5 -0
  223. data/src/sdl/reflex.cpp +20 -0
  224. data/src/sdl/screen.cpp +36 -0
  225. data/src/sdl/window.cpp +142 -29
  226. data/src/shape.cpp +15 -10
  227. data/src/view.cpp +287 -198
  228. data/src/view.h +4 -2
  229. data/src/vk.h +416 -0
  230. data/src/win32/application.cpp +162 -12
  231. data/src/win32/application.h +20 -0
  232. data/src/win32/color_picker.cpp +82 -0
  233. data/src/win32/event.cpp +114 -12
  234. data/src/win32/event.h +21 -4
  235. data/src/win32/file_dialog.cpp +226 -0
  236. data/src/win32/gamepad.cpp +9 -2
  237. data/src/win32/menu.cpp +191 -53
  238. data/src/win32/menu.h +9 -1
  239. data/src/win32/opengl.cpp +2 -9
  240. data/src/win32/reflex.cpp +44 -3
  241. data/src/win32/screen.cpp +164 -3
  242. data/src/win32/screen.h +8 -0
  243. data/src/win32/tray.cpp +191 -0
  244. data/src/win32/tray.h +22 -0
  245. data/src/win32/vk.cpp +11 -0
  246. data/src/win32/window.cpp +809 -148
  247. data/src/win32/window.h +6 -0
  248. data/src/window.cpp +718 -185
  249. data/src/window.h +66 -33
  250. data/src/world.cpp +9 -1
  251. data/test/helper.rb +17 -0
  252. data/test/test_application.rb +90 -1
  253. data/test/test_chase_constraint.rb +1 -3
  254. data/test/test_color_event.rb +36 -0
  255. data/test/test_color_picker.rb +62 -0
  256. data/test/test_constraint.rb +2 -4
  257. data/test/test_event.rb +1 -1
  258. data/test/test_file_dialog.rb +48 -0
  259. data/test/test_file_event.rb +43 -0
  260. data/test/test_has_text_preedit.rb +54 -0
  261. data/test/test_key_event.rb +20 -5
  262. data/test/test_link_constraint.rb +1 -3
  263. data/test/test_menu.rb +40 -10
  264. data/test/test_pointer.rb +33 -23
  265. data/test/test_pointer_event.rb +24 -9
  266. data/test/test_reflex.rb +36 -0
  267. data/test/test_screen.rb +24 -2
  268. data/test/test_snap_constraint.rb +1 -3
  269. data/test/test_text_event.rb +54 -0
  270. data/test/test_view.rb +41 -4
  271. data/test/test_wheel_constraint.rb +1 -3
  272. data/test/test_wheel_event.rb +13 -5
  273. data/test/test_window.rb +196 -44
  274. metadata +80 -10
  275. data/.github/workflows/utils.rb +0 -127
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7dfd1c406c7a371f5d109f3d24816c4dce13dc011a91915f790355a779c21020
4
- data.tar.gz: 4d42b1ce9f95d72d222a016a41ea216786276b539abd77d6818c4f71d4bf6d9b
3
+ metadata.gz: 5228288ca6eaf922b07a4e5934fc402f16a79261541db581691fdc77df985a41
4
+ data.tar.gz: 9a4918d2d0c66b5aec2dda5b4cf9afd080d9c7fd8ef863517791b2bcf34561f4
5
5
  SHA512:
6
- metadata.gz: e90160117d281ea46b2cf1d2a51e086575f5790154c67059d877c5ec85c3c0c00e34ee7972f70188cb125b08028154f86ba9f61d6ebd5ac55c6614f443ed10d4
7
- data.tar.gz: 103874aa03b0f69b65e576c2841c7962d566dfb0642ac3a8041b7bd489a1d5b5a7312822eecb4b078b6738a834e92254297a5c79a39d7e317e9d2f0192b38053
6
+ metadata.gz: 6520e51eb23b4215b34116fd37b34fe1a06532e554186bf47ac0b956e5f9a71e97d6c7aae4465550e8d4ed86f763e86f605d2e811959fbe42fe50fb253bcfb67
7
+ data.tar.gz: 371a81c13682e5c6cceda6549fcf2e6378574d3bf4181bcedbf4e09f175a7ba975869d76240692c72ce312de6dc0dec079e11e546aaba4bb86eb0c038c28e085
@@ -10,8 +10,8 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Application)
10
10
 
11
11
  #define THIS to<Reflex::Application*>(self)
12
12
 
13
- #define CHECK_OBJ RUCY_CHECK_OBJ( Reflex::Application, self)
14
- #define CHECK RUCY_CHECK_OBJECT(Reflex::Application, self)
13
+ #define CHECK_PTR RUCY_CHECK_PTR(Reflex::Application, self)
14
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Application, self)
15
15
 
16
16
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
17
17
 
@@ -25,7 +25,7 @@ VALUE alloc(VALUE klass)
25
25
  static
26
26
  VALUE start(VALUE self)
27
27
  {
28
- CHECK_OBJ;
28
+ CHECK_PTR;
29
29
  CALL(start());
30
30
  return self;
31
31
  }
@@ -68,6 +68,36 @@ VALUE get_menu(VALUE self)
68
68
  return value(THIS->menu());
69
69
  }
70
70
 
71
+ static
72
+ VALUE set_background(VALUE self, VALUE state)
73
+ {
74
+ CHECK;
75
+ THIS->set_background(to<bool>(state));
76
+ return state;
77
+ }
78
+
79
+ static
80
+ VALUE is_background(VALUE self)
81
+ {
82
+ CHECK;
83
+ return value(THIS->background());
84
+ }
85
+
86
+ static
87
+ VALUE set_background_menu(VALUE self, VALUE menu)
88
+ {
89
+ CHECK;
90
+ THIS->set_background_menu(menu ? to<Reflex::Menu*>(menu) : NULL);
91
+ return menu;
92
+ }
93
+
94
+ static
95
+ VALUE get_background_menu(VALUE self)
96
+ {
97
+ CHECK;
98
+ return value(THIS->background_menu());
99
+ }
100
+
71
101
  static
72
102
  VALUE each_window(VALUE self)
73
103
  {
@@ -84,9 +114,6 @@ VALUE on_start(VALUE self, VALUE event)
84
114
  {
85
115
  CHECK;
86
116
 
87
- RUCY_SYM(call_start_block);
88
- self.call(call_start_block);
89
-
90
117
  CALL(on_start(to<Reflex::Event*>(event)));
91
118
  }
92
119
 
@@ -154,6 +181,10 @@ Init_reflex_application ()
154
181
  rb_define_method(cApplication, "name", RUBY_METHOD_FUNC(get_name), 0);
155
182
  rb_define_method(cApplication, "menu=", RUBY_METHOD_FUNC(set_menu), 1);
156
183
  rb_define_method(cApplication, "menu", RUBY_METHOD_FUNC(get_menu), 0);
184
+ rb_define_method(cApplication, "background=", RUBY_METHOD_FUNC(set_background), 1);
185
+ cApplication.define_method("background?", is_background);
186
+ rb_define_method(cApplication, "background_menu=", RUBY_METHOD_FUNC(set_background_menu), 1);
187
+ rb_define_method(cApplication, "background_menu", RUBY_METHOD_FUNC(get_background_menu), 0);
157
188
  rb_define_method(cApplication, "each_window", RUBY_METHOD_FUNC(each_window), 0);
158
189
  rb_define_method(cApplication, "on_start", RUBY_METHOD_FUNC(on_start), 1);
159
190
  rb_define_method(cApplication, "on_quit", RUBY_METHOD_FUNC(on_quit), 1);
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::CaptureEvent)
9
9
 
10
10
  #define THIS to<Reflex::CaptureEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::CaptureEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::CaptureEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -12,7 +12,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ChaseConstraint)
12
12
 
13
13
  #define THIS to<Reflex::ChaseConstraint*>(self)
14
14
 
15
- #define CHECK RUCY_CHECK_OBJ(Reflex::ChaseConstraint, self)
15
+ #define CHECK RUCY_CHECK_PTR(Reflex::ChaseConstraint, self)
16
16
 
17
17
 
18
18
  static
@@ -25,7 +25,7 @@ VALUE get_text(VALUE self)
25
25
  {
26
26
  Reflex::Clipboard clipboard = Reflex::get_clipboard();
27
27
  const char* text = clipboard.text();
28
- return text ? value(text, rb_utf8_encoding()) : nil();
28
+ return text ? value(text) : nil();
29
29
  }
30
30
 
31
31
  static
@@ -0,0 +1,76 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include <rays/ruby/color.h>
5
+ #include "defs.h"
6
+
7
+
8
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ColorEvent)
9
+
10
+ #define THIS to<Reflex::ColorEvent*>(self)
11
+
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::ColorEvent, self)
13
+
14
+
15
+ static
16
+ VALUE alloc(VALUE klass)
17
+ {
18
+ return new_type<Reflex::ColorEvent>(klass);
19
+ }
20
+
21
+ static
22
+ VALUE initialize(VALUE self, VALUE color)
23
+ {
24
+ CHECK;
25
+
26
+ if (color.is_nil())
27
+ argument_error(__FILE__, __LINE__);
28
+
29
+ *THIS = Reflex::ColorEvent(to<Rays::Color>(color));
30
+
31
+ return rb_call_super(0, NULL);
32
+ }
33
+
34
+ static
35
+ VALUE initialize_copy(VALUE self, VALUE obj)
36
+ {
37
+ CHECK;
38
+ *THIS = to<Reflex::ColorEvent&>(obj).dup();
39
+ return self;
40
+ }
41
+
42
+ static
43
+ VALUE get_color(VALUE self)
44
+ {
45
+ CHECK;
46
+ return value(THIS->color());
47
+ }
48
+
49
+
50
+ static Class cColorEvent;
51
+
52
+ void
53
+ Init_reflex_color_event ()
54
+ {
55
+ Module mReflex = rb_define_module("Reflex");
56
+
57
+ cColorEvent = mReflex.define_class("ColorEvent", Reflex::event_class());
58
+ rb_define_alloc_func(cColorEvent, alloc);
59
+ rb_define_private_method(cColorEvent, "initialize", RUBY_METHOD_FUNC(initialize), 1);
60
+ rb_define_private_method(cColorEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
61
+ rb_define_method(cColorEvent, "color", RUBY_METHOD_FUNC(get_color), 0);
62
+ }
63
+
64
+
65
+ namespace Reflex
66
+ {
67
+
68
+
69
+ Class
70
+ color_event_class ()
71
+ {
72
+ return cColorEvent;
73
+ }
74
+
75
+
76
+ }// Reflex
@@ -0,0 +1,113 @@
1
+ #include "reflex/ruby/color_picker.h"
2
+
3
+
4
+ #include <rays/ruby/color.h>
5
+ #include "reflex/ruby/window.h"
6
+ #include "defs.h"
7
+
8
+
9
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ColorPicker)
10
+
11
+ #define THIS to<Reflex::ColorPicker*>(self)
12
+
13
+ #define CHECK RUCY_CHECK_OBJ(Reflex::ColorPicker, self)
14
+
15
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
16
+
17
+
18
+ static
19
+ VALUE alloc(VALUE klass)
20
+ {
21
+ return value(new Reflex::RubyColorPicker<Reflex::ColorPicker>, klass);
22
+ }
23
+
24
+ static
25
+ VALUE pick_color(VALUE self, VALUE initial)
26
+ {
27
+ CHECK;
28
+
29
+ if (initial.is_nil())
30
+ THIS->pick_color();
31
+ else
32
+ THIS->pick_color(to<Rays::Color>(initial));
33
+ return self;
34
+ }
35
+
36
+ static
37
+ VALUE set_owner(VALUE self, VALUE owner)
38
+ {
39
+ CHECK;
40
+ THIS->set_owner(owner.is_nil() ? NULL : to<Reflex::Window*>(owner));
41
+ return owner;
42
+ }
43
+
44
+ static
45
+ VALUE get_owner(VALUE self)
46
+ {
47
+ CHECK;
48
+ return value(THIS->owner());
49
+ }
50
+
51
+ static
52
+ VALUE set_alpha(VALUE self, VALUE state)
53
+ {
54
+ CHECK;
55
+ THIS->set_alpha(to<bool>(state));
56
+ return state;
57
+ }
58
+
59
+ static
60
+ VALUE is_alpha(VALUE self)
61
+ {
62
+ CHECK;
63
+ return value(THIS->alpha());
64
+ }
65
+
66
+ static
67
+ VALUE on_color(VALUE self, VALUE event)
68
+ {
69
+ CHECK;
70
+
71
+ CALL(on_color(to<Reflex::ColorEvent*>(event)));
72
+ }
73
+
74
+ static
75
+ VALUE on_close(VALUE self, VALUE event)
76
+ {
77
+ CHECK;
78
+
79
+ CALL(on_close(to<Reflex::Event*>(event)));
80
+ }
81
+
82
+
83
+ static Class cColorPicker;
84
+
85
+ void
86
+ Init_reflex_color_picker ()
87
+ {
88
+ Module mReflex = rb_define_module("Reflex");
89
+
90
+ cColorPicker = rb_define_class_under(mReflex, "ColorPicker", rb_cObject);
91
+ rb_define_alloc_func(cColorPicker, alloc);
92
+ cColorPicker.define_method("pick_color!", pick_color);
93
+ rb_define_method(cColorPicker, "owner=", RUBY_METHOD_FUNC(set_owner), 1);
94
+ rb_define_method(cColorPicker, "owner", RUBY_METHOD_FUNC(get_owner), 0);
95
+ rb_define_method(cColorPicker, "alpha=", RUBY_METHOD_FUNC(set_alpha), 1);
96
+ cColorPicker.define_method("alpha?", is_alpha);
97
+ rb_define_method(cColorPicker, "on_color", RUBY_METHOD_FUNC(on_color), 1);
98
+ rb_define_method(cColorPicker, "on_close", RUBY_METHOD_FUNC(on_close), 1);
99
+ }
100
+
101
+
102
+ namespace Reflex
103
+ {
104
+
105
+
106
+ Class
107
+ color_picker_class ()
108
+ {
109
+ return cColorPicker;
110
+ }
111
+
112
+
113
+ }// Reflex
@@ -13,7 +13,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Constraint)
13
13
 
14
14
  #define THIS to<Reflex::Constraint*>(self)
15
15
 
16
- #define CHECK RUCY_CHECK_OBJ(Reflex::Constraint, self)
16
+ #define CHECK RUCY_CHECK_PTR(Reflex::Constraint, self)
17
17
 
18
18
 
19
19
  static
@@ -11,7 +11,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ContactEvent)
11
11
 
12
12
  #define THIS to<Reflex::ContactEvent*>(self)
13
13
 
14
- #define CHECK RUCY_CHECK_OBJ(Reflex::ContactEvent, self)
14
+ #define CHECK RUCY_CHECK_PTR(Reflex::ContactEvent, self)
15
15
 
16
16
 
17
17
  static
@@ -8,7 +8,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::ControlChangeEvent)
8
8
 
9
9
  #define THIS to<Reflex::ControlChangeEvent*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::ControlChangeEvent, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::ControlChangeEvent, self)
12
12
 
13
13
 
14
14
  static
@@ -8,7 +8,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Device)
8
8
 
9
9
  #define THIS to<Reflex::Device*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJECT(Reflex::Device, self)
11
+ #define CHECK RUCY_CHECK_OBJ(Reflex::Device, self)
12
12
 
13
13
 
14
14
  static
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::DeviceEvent)
9
9
 
10
10
  #define THIS to<Reflex::DeviceEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::DeviceEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::DeviceEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -10,7 +10,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::DrawEvent)
10
10
 
11
11
  #define THIS to<Reflex::DrawEvent*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::DrawEvent, self)
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::DrawEvent, self)
14
14
 
15
15
 
16
16
  static
@@ -8,7 +8,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::EllipseShape)
8
8
 
9
9
  #define THIS to<Reflex::EllipseShape*>(self)
10
10
 
11
- #define CHECK RUCY_CHECK_OBJ(Reflex::EllipseShape, self)
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::EllipseShape, self)
12
12
 
13
13
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
14
14
 
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Event)
9
9
 
10
10
  #define THIS to<Reflex::Event*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::Event, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::Event, self)
13
13
 
14
14
 
15
15
  static
@@ -0,0 +1,181 @@
1
+ #include "reflex/ruby/file_dialog.h"
2
+
3
+
4
+ #include "reflex/ruby/window.h"
5
+ #include "defs.h"
6
+
7
+
8
+ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::FileDialog)
9
+
10
+ #define THIS to<Reflex::FileDialog*>(self)
11
+
12
+ #define CHECK RUCY_CHECK_OBJ(Reflex::FileDialog, self)
13
+
14
+ #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
15
+
16
+
17
+ static
18
+ VALUE alloc(VALUE klass)
19
+ {
20
+ return value(new Reflex::RubyFileDialog<Reflex::FileDialog>, klass);
21
+ }
22
+
23
+ static
24
+ VALUE open_file(VALUE self, VALUE dir)
25
+ {
26
+ CHECK;
27
+ THIS->open_file(dir.is_nil() ? NULL : dir.c_str());
28
+ return self;
29
+ }
30
+
31
+ static
32
+ VALUE open_files(VALUE self, VALUE dir)
33
+ {
34
+ CHECK;
35
+ THIS->open_files(dir.is_nil() ? NULL : dir.c_str());
36
+ return self;
37
+ }
38
+
39
+ static
40
+ VALUE open_directory(VALUE self, VALUE dir)
41
+ {
42
+ CHECK;
43
+ THIS->open_directory(dir.is_nil() ? NULL : dir.c_str());
44
+ return self;
45
+ }
46
+
47
+ static
48
+ VALUE save_file(VALUE self, VALUE dir, VALUE name)
49
+ {
50
+ CHECK;
51
+ THIS->save_file(
52
+ dir.is_nil() ? NULL : dir.c_str(),
53
+ name.is_nil() ? NULL : name.c_str());
54
+ return self;
55
+ }
56
+
57
+ static
58
+ VALUE set_owner(VALUE self, VALUE owner)
59
+ {
60
+ CHECK;
61
+ THIS->set_owner(owner.is_nil() ? NULL : to<Reflex::Window*>(owner));
62
+ return owner;
63
+ }
64
+
65
+ static
66
+ VALUE get_owner(VALUE self)
67
+ {
68
+ CHECK;
69
+ return value(THIS->owner());
70
+ }
71
+
72
+ static
73
+ VALUE set_title(VALUE self, VALUE title)
74
+ {
75
+ CHECK;
76
+ THIS->set_title(title.c_str());
77
+ return title;
78
+ }
79
+
80
+ static
81
+ VALUE get_title(VALUE self)
82
+ {
83
+ CHECK;
84
+ return value(THIS->title());
85
+ }
86
+
87
+ static
88
+ VALUE set_extensions(VALUE self, VALUE extensions)
89
+ {
90
+ CHECK;
91
+
92
+ Reflex::StringList list;
93
+ if (extensions.is_nil())
94
+ ;// emplace nothing
95
+ else if (extensions.is_s() || extensions.is_sym())
96
+ list.emplace_back(extensions.c_str());
97
+ else if (extensions.is_array())
98
+ {
99
+ size_t size = extensions.size();
100
+ for (size_t i = 0; i < size; ++i)
101
+ {
102
+ if (!extensions[i].is_s() && !extensions[i].is_sym())
103
+ argument_error(__FILE__, __LINE__);
104
+
105
+ list.emplace_back(extensions[i].c_str());
106
+ }
107
+ }
108
+ else
109
+ argument_error(__FILE__, __LINE__);
110
+
111
+ THIS->set_extensions(list);
112
+ return extensions;
113
+ }
114
+
115
+ static
116
+ VALUE get_extensions(VALUE self)
117
+ {
118
+ CHECK;
119
+
120
+ const auto& extensions = THIS->extensions();
121
+
122
+ Value values = array(NULL, extensions.size());
123
+ for (const auto& extension : extensions)
124
+ values.push(extension.c_str());
125
+
126
+ return values;
127
+ }
128
+
129
+ static
130
+ VALUE on_file(VALUE self, VALUE event)
131
+ {
132
+ CHECK;
133
+
134
+ CALL(on_file(to<Reflex::FileEvent*>(event)));
135
+ }
136
+
137
+ static
138
+ VALUE on_cancel(VALUE self, VALUE event)
139
+ {
140
+ CHECK;
141
+
142
+ CALL(on_cancel(to<Reflex::Event*>(event)));
143
+ }
144
+
145
+
146
+ static Class cFileDialog;
147
+
148
+ void
149
+ Init_reflex_file_dialog ()
150
+ {
151
+ Module mReflex = rb_define_module("Reflex");
152
+
153
+ cFileDialog = rb_define_class_under(mReflex, "FileDialog", rb_cObject);
154
+ rb_define_alloc_func(cFileDialog, alloc);
155
+ cFileDialog.define_method("open_file!", open_file);
156
+ cFileDialog.define_method("open_files!", open_files);
157
+ cFileDialog.define_method("open_directory!", open_directory);
158
+ cFileDialog.define_method("save_file!", save_file);
159
+ rb_define_method(cFileDialog, "owner=", RUBY_METHOD_FUNC(set_owner), 1);
160
+ rb_define_method(cFileDialog, "owner", RUBY_METHOD_FUNC(get_owner), 0);
161
+ rb_define_method(cFileDialog, "title=", RUBY_METHOD_FUNC(set_title), 1);
162
+ rb_define_method(cFileDialog, "title", RUBY_METHOD_FUNC(get_title), 0);
163
+ rb_define_method(cFileDialog, "extensions=", RUBY_METHOD_FUNC(set_extensions), 1);
164
+ rb_define_method(cFileDialog, "extensions", RUBY_METHOD_FUNC(get_extensions), 0);
165
+ rb_define_method(cFileDialog, "on_file", RUBY_METHOD_FUNC(on_file), 1);
166
+ rb_define_method(cFileDialog, "on_cancel", RUBY_METHOD_FUNC(on_cancel), 1);
167
+ }
168
+
169
+
170
+ namespace Reflex
171
+ {
172
+
173
+
174
+ Class
175
+ file_dialog_class ()
176
+ {
177
+ return cFileDialog;
178
+ }
179
+
180
+
181
+ }// Reflex
@@ -0,0 +1,103 @@
1
+ #include "reflex/ruby/event.h"
2
+
3
+
4
+ #include "defs.h"
5
+
6
+
7
+ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::FileEvent)
8
+
9
+ #define THIS to<Reflex::FileEvent*>(self)
10
+
11
+ #define CHECK RUCY_CHECK_PTR(Reflex::FileEvent, self)
12
+
13
+
14
+ static
15
+ VALUE alloc(VALUE klass)
16
+ {
17
+ return new_type<Reflex::FileEvent>(klass);
18
+ }
19
+
20
+ static
21
+ VALUE initialize(VALUE self, VALUE action, VALUE paths)
22
+ {
23
+ CHECK;
24
+
25
+ if (!paths.is_array())
26
+ argument_error(__FILE__, __LINE__);
27
+
28
+ Reflex::StringList list;
29
+ int size = paths.size();
30
+ for (int i = 0; i < size; ++i)
31
+ {
32
+ if (paths[i].is_nil())
33
+ argument_error(__FILE__, __LINE__);
34
+
35
+ list.emplace_back(paths[i].c_str());
36
+ }
37
+ *THIS = Reflex::FileEvent((Reflex::FileEvent::Action) to<uint>(action), list);
38
+
39
+ return rb_call_super(0, NULL);
40
+ }
41
+
42
+ static
43
+ VALUE initialize_copy(VALUE self, VALUE obj)
44
+ {
45
+ CHECK;
46
+ *THIS = to<Reflex::FileEvent&>(obj).dup();
47
+ return self;
48
+ }
49
+
50
+ static
51
+ VALUE get_action(VALUE self)
52
+ {
53
+ CHECK;
54
+ return value(THIS->action());
55
+ }
56
+
57
+ static
58
+ VALUE get_paths(VALUE self)
59
+ {
60
+ CHECK;
61
+
62
+ const Reflex::StringList& paths = THIS->paths();
63
+
64
+ Value values = array(NULL, paths.size());
65
+ for (const auto& path : paths)
66
+ values.push(path.c_str());
67
+
68
+ return values;
69
+ }
70
+
71
+
72
+ static Class cFileEvent;
73
+
74
+ void
75
+ Init_reflex_file_event ()
76
+ {
77
+ Module mReflex = rb_define_module("Reflex");
78
+
79
+ cFileEvent = mReflex.define_class("FileEvent", Reflex::event_class());
80
+ rb_define_alloc_func(cFileEvent, alloc);
81
+ rb_define_private_method(cFileEvent, "initialize", RUBY_METHOD_FUNC(initialize), 2);
82
+ rb_define_private_method(cFileEvent, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
83
+ rb_define_method(cFileEvent, "action", RUBY_METHOD_FUNC(get_action), 0);
84
+ rb_define_method(cFileEvent, "paths", RUBY_METHOD_FUNC(get_paths), 0);
85
+
86
+ cFileEvent.define_const("ACTION_NONE", Reflex::FileEvent::ACTION_NONE);
87
+ cFileEvent.define_const("OPEN", Reflex::FileEvent::OPEN);
88
+ cFileEvent.define_const("SAVE", Reflex::FileEvent::SAVE);
89
+ }
90
+
91
+
92
+ namespace Reflex
93
+ {
94
+
95
+
96
+ Class
97
+ file_event_class ()
98
+ {
99
+ return cFileEvent;
100
+ }
101
+
102
+
103
+ }// Reflex
@@ -10,7 +10,7 @@ RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Filter)
10
10
 
11
11
  #define THIS to<Reflex::Filter*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::Filter, self)
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::Filter, self)
14
14
 
15
15
  #define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
16
16
 
@@ -9,7 +9,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::FocusEvent)
9
9
 
10
10
  #define THIS to<Reflex::FocusEvent*>(self)
11
11
 
12
- #define CHECK RUCY_CHECK_OBJ(Reflex::FocusEvent, self)
12
+ #define CHECK RUCY_CHECK_PTR(Reflex::FocusEvent, self)
13
13
 
14
14
 
15
15
  static
@@ -10,7 +10,7 @@ RUCY_DEFINE_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::FrameEvent)
10
10
 
11
11
  #define THIS to<Reflex::FrameEvent*>(self)
12
12
 
13
- #define CHECK RUCY_CHECK_OBJ(Reflex::FrameEvent, self)
13
+ #define CHECK RUCY_CHECK_PTR(Reflex::FrameEvent, self)
14
14
 
15
15
 
16
16
  static