reflexion 0.5.2 → 0.6.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 +19 -1
- data/.doc/ext/reflex/chase_constraint.cpp +84 -0
- data/.doc/ext/reflex/clipboard.cpp +65 -0
- data/.doc/ext/reflex/constraint.cpp +135 -0
- data/.doc/ext/reflex/key_event.cpp +6 -6
- data/.doc/ext/reflex/link_constraint.cpp +178 -0
- data/.doc/ext/reflex/menu.cpp +302 -0
- data/.doc/ext/reflex/native.cpp +22 -4
- data/.doc/ext/reflex/pin.cpp +156 -0
- data/.doc/ext/reflex/pointer.cpp +2 -0
- data/.doc/ext/reflex/pointer_event.cpp +1 -1
- data/.doc/ext/reflex/reflex.cpp +42 -7
- data/.doc/ext/reflex/selector.cpp +4 -4
- data/.doc/ext/reflex/snap_constraint.cpp +125 -0
- data/.doc/ext/reflex/style_length.cpp +3 -2
- data/.doc/ext/reflex/view.cpp +96 -23
- data/.doc/ext/reflex/wheel_constraint.cpp +142 -0
- data/.doc/ext/reflex/window.cpp +59 -17
- data/.github/workflows/release-gem.yml +10 -1
- data/.github/workflows/test.yml +9 -0
- data/ChangeLog.md +30 -0
- data/README.md +1 -0
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +21 -1
- data/ext/reflex/chase_constraint.cpp +89 -0
- data/ext/reflex/clipboard.cpp +69 -0
- data/ext/reflex/constraint.cpp +146 -0
- data/ext/reflex/key_event.cpp +6 -6
- data/ext/reflex/link_constraint.cpp +194 -0
- data/ext/reflex/menu.cpp +330 -0
- data/ext/reflex/native.cpp +22 -4
- data/ext/reflex/pin.cpp +165 -0
- data/ext/reflex/pointer.cpp +2 -0
- data/ext/reflex/pointer_event.cpp +1 -1
- data/ext/reflex/reflex.cpp +42 -7
- data/ext/reflex/selector.cpp +4 -4
- data/ext/reflex/selector.h +1 -1
- data/ext/reflex/snap_constraint.cpp +135 -0
- data/ext/reflex/style_length.cpp +3 -2
- data/ext/reflex/view.cpp +117 -37
- data/ext/reflex/wheel_constraint.cpp +154 -0
- data/ext/reflex/window.cpp +65 -18
- data/include/reflex/application.h +9 -0
- data/include/reflex/clipboard.h +53 -0
- data/include/reflex/constraint.h +275 -0
- data/include/reflex/defs.h +204 -195
- data/include/reflex/event.h +2 -0
- data/include/reflex/menu.h +120 -0
- data/include/reflex/pin.h +68 -0
- data/include/reflex/pointer.h +4 -0
- data/include/reflex/ruby/clipboard.h +23 -0
- data/include/reflex/ruby/constraint.h +94 -0
- data/include/reflex/ruby/menu.h +103 -0
- data/include/reflex/ruby/pin.h +40 -0
- data/include/reflex/ruby/view.h +36 -0
- data/include/reflex/ruby/window.h +36 -18
- data/include/reflex/view.h +39 -12
- data/include/reflex/window.h +17 -4
- data/include/reflex.h +5 -0
- data/lib/reflex/chase_constraint.rb +15 -0
- data/lib/reflex/clipboard.rb +19 -0
- data/lib/reflex/constraint.rb +29 -0
- data/lib/reflex/extension.rb +1 -1
- data/lib/reflex/helper.rb +28 -0
- data/lib/reflex/key_event.rb +7 -12
- data/lib/reflex/link_constraint.rb +31 -0
- data/lib/reflex/menu.rb +76 -0
- data/lib/reflex/pin.rb +39 -0
- data/lib/reflex/pointer.rb +18 -0
- data/lib/reflex/pointer_event.rb +1 -1
- data/lib/reflex/snap_constraint.rb +28 -0
- data/lib/reflex/view.rb +56 -4
- data/lib/reflex/wheel_constraint.rb +28 -0
- data/lib/reflex/wheel_event.rb +9 -0
- data/lib/reflex.rb +15 -6
- data/pod.rake +4 -2
- data/reflex.gemspec +3 -3
- data/samples/constraint.rb +152 -0
- data/samples/menu.rb +29 -0
- data/src/application.cpp +21 -2
- data/src/application.h +5 -0
- data/src/clipboard.cpp +81 -0
- data/src/constraint.cpp +1662 -0
- data/src/constraint.h +64 -0
- data/src/event.cpp +7 -1
- data/src/event.h +1 -2
- data/src/ios/application.mm +5 -0
- data/src/ios/clipboard.mm +44 -0
- data/src/ios/event.h +6 -2
- data/src/ios/event.mm +31 -12
- data/src/ios/menu.mm +36 -0
- data/src/ios/view_controller.mm +45 -12
- data/src/ios/window.mm +6 -0
- data/src/menu.cpp +325 -0
- data/src/menu.h +65 -0
- data/src/osx/app_delegate.mm +74 -125
- data/src/osx/application.mm +16 -0
- data/src/osx/clipboard.mm +45 -0
- data/src/osx/event.mm +40 -10
- data/src/osx/menu.h +25 -0
- data/src/osx/menu.mm +372 -0
- data/src/osx/native_window.mm +27 -0
- data/src/osx/opengl_view.mm +51 -0
- data/src/osx/window.mm +11 -0
- data/src/pin.cpp +137 -0
- data/src/pointer.cpp +27 -16
- data/src/pointer.h +6 -0
- data/src/sdl/application.cpp +5 -0
- data/src/sdl/clipboard.cpp +39 -0
- data/src/sdl/event.cpp +20 -3
- data/src/sdl/event.h +6 -3
- data/src/sdl/menu.cpp +35 -0
- data/src/sdl/window.cpp +26 -8
- data/src/view.cpp +313 -52
- data/src/view.h +18 -2
- data/src/win32/application.cpp +5 -0
- data/src/win32/clipboard.cpp +210 -0
- data/src/win32/event.cpp +11 -1
- data/src/win32/event.h +2 -0
- data/src/win32/menu.cpp +352 -0
- data/src/win32/menu.h +27 -0
- data/src/win32/window.cpp +62 -0
- data/src/win32/window.h +3 -0
- data/src/window.cpp +235 -22
- data/src/window.h +13 -2
- data/src/world.cpp +77 -14
- data/src/world.h +9 -2
- data/test/helper.rb +7 -0
- data/test/test_application.rb +11 -0
- data/test/test_chase_constraint.rb +124 -0
- data/test/test_clipboard.rb +54 -0
- data/test/test_constraint.rb +186 -0
- data/test/test_key_event.rb +6 -0
- data/test/test_link_constraint.rb +239 -0
- data/test/test_menu.rb +207 -0
- data/test/test_pin.rb +65 -0
- data/test/test_pointer.rb +23 -9
- data/test/test_pointer_event.rb +1 -1
- data/test/test_snap_constraint.rb +142 -0
- data/test/test_view.rb +113 -23
- data/test/test_wheel_constraint.rb +127 -0
- data/test/test_wheel_event.rb +15 -9
- data/test/test_window.rb +10 -0
- metadata +82 -8
data/ext/reflex/menu.cpp
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
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/selector.h"
|
|
8
|
+
#include "reflex/ruby/view.h"
|
|
9
|
+
#include "defs.h"
|
|
10
|
+
#include "selector.h"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
RUCY_DEFINE_WRAPPER_VALUE_FROM_TO(REFLEX_EXPORT, Reflex::Menu)
|
|
14
|
+
|
|
15
|
+
#define THIS to<Reflex::Menu*>(self)
|
|
16
|
+
|
|
17
|
+
#define CHECK RUCY_CHECK_OBJ(Reflex::Menu, self)
|
|
18
|
+
|
|
19
|
+
#define CALL(fun) RUCY_CALL_SUPER(THIS, fun)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
static
|
|
23
|
+
RUCY_DEF_ALLOC(alloc, klass)
|
|
24
|
+
{
|
|
25
|
+
return value(new Reflex::RubyMenu<Reflex::Menu>, klass);
|
|
26
|
+
}
|
|
27
|
+
RUCY_END
|
|
28
|
+
|
|
29
|
+
static
|
|
30
|
+
RUCY_DEFN(popup)
|
|
31
|
+
{
|
|
32
|
+
CHECK;
|
|
33
|
+
check_arg_count(__FILE__, __LINE__, "Menu#popup", argc, 2, 3);
|
|
34
|
+
|
|
35
|
+
Reflex::View* view = NULL;
|
|
36
|
+
if (argv[0].is_a(Reflex::view_class()))
|
|
37
|
+
{
|
|
38
|
+
view = to<Reflex::View*>(argv[0]);
|
|
39
|
+
argc--;
|
|
40
|
+
argv++;
|
|
41
|
+
}
|
|
42
|
+
THIS->popup(view, to<Rays::Point>(argc, argv));
|
|
43
|
+
return self;
|
|
44
|
+
}
|
|
45
|
+
RUCY_END
|
|
46
|
+
|
|
47
|
+
static
|
|
48
|
+
RUCY_DEF2(add_child, child, index)
|
|
49
|
+
{
|
|
50
|
+
CHECK;
|
|
51
|
+
THIS->add_child(to<Reflex::Menu*>(child), index.is_nil() ? -1 : to<int>(index));
|
|
52
|
+
return child;
|
|
53
|
+
}
|
|
54
|
+
RUCY_END
|
|
55
|
+
|
|
56
|
+
static
|
|
57
|
+
RUCY_DEF1(remove_child, child)
|
|
58
|
+
{
|
|
59
|
+
CHECK;
|
|
60
|
+
THIS->remove_child(to<Reflex::Menu*>(child));
|
|
61
|
+
return child;
|
|
62
|
+
}
|
|
63
|
+
RUCY_END
|
|
64
|
+
|
|
65
|
+
static
|
|
66
|
+
RUCY_DEF0(clear_children)
|
|
67
|
+
{
|
|
68
|
+
CHECK;
|
|
69
|
+
THIS->clear_children();
|
|
70
|
+
return self;
|
|
71
|
+
}
|
|
72
|
+
RUCY_END
|
|
73
|
+
|
|
74
|
+
static
|
|
75
|
+
RUCY_DEFN(find_children)
|
|
76
|
+
{
|
|
77
|
+
CHECK;
|
|
78
|
+
check_arg_count(__FILE__, __LINE__, "Menu#find_children", argc, 1, 2);
|
|
79
|
+
|
|
80
|
+
bool recursive = (argc >= 2) ? to<bool>(argv[1]) : true;
|
|
81
|
+
|
|
82
|
+
auto children =
|
|
83
|
+
THIS->find_children(to<Reflex::Selector>(argv[0]), recursive) |
|
|
84
|
+
std::views::transform([](auto& ref) {return value(ref);});
|
|
85
|
+
return array(children.begin(), children.end());
|
|
86
|
+
}
|
|
87
|
+
RUCY_END
|
|
88
|
+
|
|
89
|
+
static
|
|
90
|
+
RUCY_DEF1(set_label, label)
|
|
91
|
+
{
|
|
92
|
+
CHECK;
|
|
93
|
+
THIS->set_label(label ? to<const char*>(label) : NULL);
|
|
94
|
+
}
|
|
95
|
+
RUCY_END
|
|
96
|
+
|
|
97
|
+
static
|
|
98
|
+
RUCY_DEF0(get_label)
|
|
99
|
+
{
|
|
100
|
+
CHECK;
|
|
101
|
+
return value(THIS->label());
|
|
102
|
+
}
|
|
103
|
+
RUCY_END
|
|
104
|
+
|
|
105
|
+
static
|
|
106
|
+
RUCY_DEF1(set_image, image)
|
|
107
|
+
{
|
|
108
|
+
CHECK;
|
|
109
|
+
THIS->set_image(image ? to<Rays::Image&>(image) : Rays::Image());
|
|
110
|
+
return image;
|
|
111
|
+
}
|
|
112
|
+
RUCY_END
|
|
113
|
+
|
|
114
|
+
static
|
|
115
|
+
RUCY_DEF0(get_image)
|
|
116
|
+
{
|
|
117
|
+
CHECK;
|
|
118
|
+
const Rays::Image& image = THIS->image();
|
|
119
|
+
return image ? value(image) : nil();
|
|
120
|
+
}
|
|
121
|
+
RUCY_END
|
|
122
|
+
|
|
123
|
+
static
|
|
124
|
+
RUCY_DEF1(enable, state)
|
|
125
|
+
{
|
|
126
|
+
CHECK;
|
|
127
|
+
THIS->enable(to<bool>(state));
|
|
128
|
+
}
|
|
129
|
+
RUCY_END
|
|
130
|
+
|
|
131
|
+
static
|
|
132
|
+
RUCY_DEF0(is_enabled)
|
|
133
|
+
{
|
|
134
|
+
CHECK;
|
|
135
|
+
return value(THIS->is_enabled());
|
|
136
|
+
}
|
|
137
|
+
RUCY_END
|
|
138
|
+
|
|
139
|
+
static
|
|
140
|
+
RUCY_DEF1(check, state)
|
|
141
|
+
{
|
|
142
|
+
CHECK;
|
|
143
|
+
THIS->check(to<bool>(state));
|
|
144
|
+
}
|
|
145
|
+
RUCY_END
|
|
146
|
+
|
|
147
|
+
static
|
|
148
|
+
RUCY_DEF0(is_checked)
|
|
149
|
+
{
|
|
150
|
+
CHECK;
|
|
151
|
+
return value(THIS->is_checked());
|
|
152
|
+
}
|
|
153
|
+
RUCY_END
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
static
|
|
157
|
+
RUCY_DEF1(set_shortcut_key, key)
|
|
158
|
+
{
|
|
159
|
+
CHECK;
|
|
160
|
+
THIS->set_shortcut(
|
|
161
|
+
key ? to<const char*>(key) : NULL,
|
|
162
|
+
THIS->shortcut_modifiers());
|
|
163
|
+
}
|
|
164
|
+
RUCY_END
|
|
165
|
+
|
|
166
|
+
static
|
|
167
|
+
RUCY_DEF0(get_shortcut_key)
|
|
168
|
+
{
|
|
169
|
+
CHECK;
|
|
170
|
+
return value(THIS->shortcut_key());
|
|
171
|
+
}
|
|
172
|
+
RUCY_END
|
|
173
|
+
|
|
174
|
+
static
|
|
175
|
+
RUCY_DEF1(set_shortcut_modifiers, modifiers)
|
|
176
|
+
{
|
|
177
|
+
CHECK;
|
|
178
|
+
THIS->set_shortcut(THIS->shortcut_key(), to<uint>(modifiers));
|
|
179
|
+
}
|
|
180
|
+
RUCY_END
|
|
181
|
+
|
|
182
|
+
static
|
|
183
|
+
RUCY_DEF0(get_shortcut_modifiers)
|
|
184
|
+
{
|
|
185
|
+
CHECK;
|
|
186
|
+
return value(THIS->shortcut_modifiers());
|
|
187
|
+
}
|
|
188
|
+
RUCY_END
|
|
189
|
+
|
|
190
|
+
static
|
|
191
|
+
RUCY_DEF0(is_separator)
|
|
192
|
+
{
|
|
193
|
+
CHECK;
|
|
194
|
+
return value(THIS->is_separator());
|
|
195
|
+
}
|
|
196
|
+
RUCY_END
|
|
197
|
+
|
|
198
|
+
static
|
|
199
|
+
RUCY_DEF0(get_parent)
|
|
200
|
+
{
|
|
201
|
+
CHECK;
|
|
202
|
+
return value(THIS->parent());
|
|
203
|
+
}
|
|
204
|
+
RUCY_END
|
|
205
|
+
|
|
206
|
+
static
|
|
207
|
+
RUCY_DEF0(get_size)
|
|
208
|
+
{
|
|
209
|
+
CHECK;
|
|
210
|
+
return value((int) THIS->size());
|
|
211
|
+
}
|
|
212
|
+
RUCY_END
|
|
213
|
+
|
|
214
|
+
static
|
|
215
|
+
RUCY_DEF0(is_empty)
|
|
216
|
+
{
|
|
217
|
+
CHECK;
|
|
218
|
+
return value(THIS->empty());
|
|
219
|
+
}
|
|
220
|
+
RUCY_END
|
|
221
|
+
|
|
222
|
+
static
|
|
223
|
+
RUCY_DEF0(each)
|
|
224
|
+
{
|
|
225
|
+
CHECK;
|
|
226
|
+
|
|
227
|
+
std::vector<Reflex::Menu::Ref> children(THIS->begin(), THIS->end());
|
|
228
|
+
|
|
229
|
+
Value ret;
|
|
230
|
+
for (auto& child : children)
|
|
231
|
+
ret = yield(value(child.get()));
|
|
232
|
+
return ret;
|
|
233
|
+
}
|
|
234
|
+
RUCY_END
|
|
235
|
+
|
|
236
|
+
static
|
|
237
|
+
RUCY_DEF1(on_show, event)
|
|
238
|
+
{
|
|
239
|
+
CHECK;
|
|
240
|
+
CALL(on_show(to<Reflex::Event*>(event)));
|
|
241
|
+
}
|
|
242
|
+
RUCY_END
|
|
243
|
+
|
|
244
|
+
static
|
|
245
|
+
RUCY_DEF1(on_hide, event)
|
|
246
|
+
{
|
|
247
|
+
CHECK;
|
|
248
|
+
CALL(on_hide(to<Reflex::Event*>(event)));
|
|
249
|
+
}
|
|
250
|
+
RUCY_END
|
|
251
|
+
|
|
252
|
+
static
|
|
253
|
+
RUCY_DEF1(on_open_submenu, event)
|
|
254
|
+
{
|
|
255
|
+
CHECK;
|
|
256
|
+
CALL(on_open_submenu(to<Reflex::Event*>(event)));
|
|
257
|
+
}
|
|
258
|
+
RUCY_END
|
|
259
|
+
|
|
260
|
+
static
|
|
261
|
+
RUCY_DEF1(on_close_submenu, event)
|
|
262
|
+
{
|
|
263
|
+
CHECK;
|
|
264
|
+
CALL(on_close_submenu(to<Reflex::Event*>(event)));
|
|
265
|
+
}
|
|
266
|
+
RUCY_END
|
|
267
|
+
|
|
268
|
+
static
|
|
269
|
+
RUCY_DEF1(on_click, event)
|
|
270
|
+
{
|
|
271
|
+
CHECK;
|
|
272
|
+
CALL(on_click(to<Reflex::Event*>(event)));
|
|
273
|
+
}
|
|
274
|
+
RUCY_END
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
static Class cMenu;
|
|
278
|
+
|
|
279
|
+
void
|
|
280
|
+
Init_reflex_menu ()
|
|
281
|
+
{
|
|
282
|
+
Module mReflex = define_module("Reflex");
|
|
283
|
+
|
|
284
|
+
cMenu = mReflex.define_class("Menu");
|
|
285
|
+
cMenu.define_alloc_func(alloc);
|
|
286
|
+
cMenu.define_method("popup", popup);
|
|
287
|
+
cMenu.define_method( "add_child!", add_child);
|
|
288
|
+
cMenu.define_method("remove_child", remove_child);
|
|
289
|
+
cMenu.define_method( "clear_children", clear_children);
|
|
290
|
+
cMenu.define_method( "find_children", find_children);
|
|
291
|
+
cMenu.define_method("label=", set_label);
|
|
292
|
+
cMenu.define_method("label", get_label);
|
|
293
|
+
cMenu.define_method("image=", set_image);
|
|
294
|
+
cMenu.define_method("image", get_image);
|
|
295
|
+
cMenu.define_method("enable!", enable);
|
|
296
|
+
cMenu.define_method("enabled?", is_enabled);
|
|
297
|
+
cMenu.define_method("check!", check);
|
|
298
|
+
cMenu.define_method("checked?", is_checked);
|
|
299
|
+
cMenu.define_method("shortcut_key=", set_shortcut_key);
|
|
300
|
+
cMenu.define_method("shortcut_key", get_shortcut_key);
|
|
301
|
+
cMenu.define_method("shortcut_modifiers=", set_shortcut_modifiers);
|
|
302
|
+
cMenu.define_method("shortcut_modifiers", get_shortcut_modifiers);
|
|
303
|
+
cMenu.define_method("separator?", is_separator);
|
|
304
|
+
cMenu.define_method("parent", get_parent);
|
|
305
|
+
cMenu.define_method("size", get_size);
|
|
306
|
+
cMenu.define_method("empty?", is_empty);
|
|
307
|
+
cMenu.define_method("each!", each);
|
|
308
|
+
cMenu.define_method("on_show", on_show);
|
|
309
|
+
cMenu.define_method("on_hide", on_hide);
|
|
310
|
+
cMenu.define_method("on_open_submenu", on_open_submenu);
|
|
311
|
+
cMenu.define_method("on_close_submenu", on_close_submenu);
|
|
312
|
+
cMenu.define_method("on_click", on_click);
|
|
313
|
+
|
|
314
|
+
define_wrapper_equality_methods<Reflex::Menu>(cMenu);
|
|
315
|
+
define_selector_methods<Reflex::Menu>(cMenu);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
namespace Reflex
|
|
320
|
+
{
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
Class
|
|
324
|
+
menu_class ()
|
|
325
|
+
{
|
|
326
|
+
return cMenu;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
}// Reflex
|
data/ext/reflex/native.cpp
CHANGED
|
@@ -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 ();
|
|
@@ -35,10 +35,19 @@ void Init_reflex_line_shape ();
|
|
|
35
35
|
void Init_reflex_rect_shape ();
|
|
36
36
|
void Init_reflex_ellipse_shape ();
|
|
37
37
|
|
|
38
|
+
void Init_reflex_pin ();
|
|
39
|
+
void Init_reflex_constraint ();
|
|
40
|
+
void Init_reflex_snap_constraint ();
|
|
41
|
+
void Init_reflex_link_constraint ();
|
|
42
|
+
void Init_reflex_wheel_constraint ();
|
|
43
|
+
void Init_reflex_chase_constraint ();
|
|
44
|
+
|
|
38
45
|
void Init_reflex_application ();
|
|
39
|
-
void Init_reflex_screen ();
|
|
40
46
|
void Init_reflex_window ();
|
|
41
47
|
void Init_reflex_view ();
|
|
48
|
+
void Init_reflex_menu ();
|
|
49
|
+
void Init_reflex_screen ();
|
|
50
|
+
void Init_reflex_clipboard ();
|
|
42
51
|
|
|
43
52
|
void Init_reflex_device ();
|
|
44
53
|
void Init_reflex_midi ();
|
|
@@ -56,8 +65,8 @@ Init_reflex_ext ()
|
|
|
56
65
|
Init_reflex();
|
|
57
66
|
Init_reflex_exception();
|
|
58
67
|
|
|
59
|
-
Init_reflex_pointer();
|
|
60
68
|
Init_reflex_selector();
|
|
69
|
+
Init_reflex_pointer();
|
|
61
70
|
Init_reflex_style();
|
|
62
71
|
Init_reflex_style_length();
|
|
63
72
|
Init_reflex_timer();
|
|
@@ -87,10 +96,19 @@ Init_reflex_ext ()
|
|
|
87
96
|
Init_reflex_rect_shape();
|
|
88
97
|
Init_reflex_ellipse_shape();
|
|
89
98
|
|
|
99
|
+
Init_reflex_pin();
|
|
100
|
+
Init_reflex_constraint();
|
|
101
|
+
Init_reflex_snap_constraint();
|
|
102
|
+
Init_reflex_link_constraint();
|
|
103
|
+
Init_reflex_wheel_constraint();
|
|
104
|
+
Init_reflex_chase_constraint();
|
|
105
|
+
|
|
90
106
|
Init_reflex_application();
|
|
91
|
-
Init_reflex_screen();
|
|
92
107
|
Init_reflex_window();
|
|
93
108
|
Init_reflex_view();
|
|
109
|
+
Init_reflex_menu();
|
|
110
|
+
Init_reflex_screen();
|
|
111
|
+
Init_reflex_clipboard();
|
|
94
112
|
|
|
95
113
|
Init_reflex_device();
|
|
96
114
|
Init_reflex_midi();
|
data/ext/reflex/pin.cpp
ADDED
|
@@ -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_OBJ(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
|
data/ext/reflex/pointer.cpp
CHANGED
|
@@ -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
|
|
data/ext/reflex/reflex.cpp
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
#include "reflex/ruby/view.h"
|
|
5
|
+
#include "reflex/ruby/constraint.h"
|
|
5
6
|
#include "reflex/ruby/timer.h"
|
|
6
7
|
#include "reflex/ruby/midi.h"
|
|
7
8
|
#include "../../src/window.h"
|
|
9
|
+
#include "../../src/constraint.h"
|
|
8
10
|
#include "../../src/timer.h"
|
|
9
11
|
#include "../../src/midi.h"
|
|
10
12
|
#include "defs.h"
|
|
@@ -16,6 +18,30 @@ create_root_view ()
|
|
|
16
18
|
return new Reflex::RubyView<Reflex::View>();
|
|
17
19
|
}
|
|
18
20
|
|
|
21
|
+
static Reflex::SnapConstraint*
|
|
22
|
+
create_snap_constraint ()
|
|
23
|
+
{
|
|
24
|
+
return new Reflex::RubyConstraint<Reflex::SnapConstraint>();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static Reflex::LinkConstraint*
|
|
28
|
+
create_link_constraint ()
|
|
29
|
+
{
|
|
30
|
+
return new Reflex::RubyConstraint<Reflex::LinkConstraint>();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static Reflex::WheelConstraint*
|
|
34
|
+
create_wheel_constraint ()
|
|
35
|
+
{
|
|
36
|
+
return new Reflex::RubyConstraint<Reflex::WheelConstraint>();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static Reflex::ChaseConstraint*
|
|
40
|
+
create_chase_constraint ()
|
|
41
|
+
{
|
|
42
|
+
return new Reflex::RubyConstraint<Reflex::ChaseConstraint>();
|
|
43
|
+
}
|
|
44
|
+
|
|
19
45
|
static Reflex::Timer*
|
|
20
46
|
create_timer ()
|
|
21
47
|
{
|
|
@@ -35,9 +61,13 @@ static
|
|
|
35
61
|
RUCY_DEF0(init)
|
|
36
62
|
{
|
|
37
63
|
Reflex::init();
|
|
38
|
-
Reflex::Window_set_create_root_view_fun(create_root_view);
|
|
39
|
-
Reflex::
|
|
40
|
-
Reflex::
|
|
64
|
+
Reflex:: Window_set_create_root_view_fun(create_root_view);
|
|
65
|
+
Reflex:: SnapConstraint_set_create_fun(create_snap_constraint);
|
|
66
|
+
Reflex:: LinkConstraint_set_create_fun(create_link_constraint);
|
|
67
|
+
Reflex::WheelConstraint_set_create_fun(create_wheel_constraint);
|
|
68
|
+
Reflex::ChaseConstraint_set_create_fun(create_chase_constraint);
|
|
69
|
+
Reflex:: Timer_set_create_fun(create_timer);
|
|
70
|
+
Reflex:: MIDI_set_create_fun(create_midi);
|
|
41
71
|
|
|
42
72
|
return self;
|
|
43
73
|
}
|
|
@@ -46,9 +76,13 @@ RUCY_END
|
|
|
46
76
|
static
|
|
47
77
|
RUCY_DEF0(fin)
|
|
48
78
|
{
|
|
49
|
-
Reflex::Window_set_create_root_view_fun(NULL);
|
|
50
|
-
Reflex::
|
|
51
|
-
Reflex::
|
|
79
|
+
Reflex:: Window_set_create_root_view_fun(NULL);
|
|
80
|
+
Reflex:: SnapConstraint_set_create_fun(NULL);
|
|
81
|
+
Reflex:: LinkConstraint_set_create_fun(NULL);
|
|
82
|
+
Reflex::WheelConstraint_set_create_fun(NULL);
|
|
83
|
+
Reflex::ChaseConstraint_set_create_fun(NULL);
|
|
84
|
+
Reflex:: Timer_set_create_fun(NULL);
|
|
85
|
+
Reflex:: MIDI_set_create_fun(NULL);
|
|
52
86
|
Reflex::fin();
|
|
53
87
|
|
|
54
88
|
return self;
|
|
@@ -242,7 +276,7 @@ Init_reflex ()
|
|
|
242
276
|
DEFINE_CONST(KEY_SLEEP);
|
|
243
277
|
DEFINE_CONST(KEY_EXEC);
|
|
244
278
|
DEFINE_CONST(KEY_PRINT);
|
|
245
|
-
DEFINE_CONST(
|
|
279
|
+
DEFINE_CONST(KEY_CONTEXT_MENU);
|
|
246
280
|
DEFINE_CONST(KEY_SELECT);
|
|
247
281
|
DEFINE_CONST(KEY_CLEAR);
|
|
248
282
|
|
|
@@ -307,6 +341,7 @@ Init_reflex ()
|
|
|
307
341
|
DEFINE_CONST(MOD_FUNCTION);
|
|
308
342
|
DEFINE_CONST(MOD_NUMPAD);
|
|
309
343
|
DEFINE_CONST(MOD_CAPS);
|
|
344
|
+
DEFINE_CONST(MOD_SCROLL);
|
|
310
345
|
|
|
311
346
|
#undef DEFINE_CONST
|
|
312
347
|
}
|
data/ext/reflex/selector.cpp
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#include "reflex/ruby/selector.h"
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
#include <assert.h>
|
|
5
4
|
#include "defs.h"
|
|
6
5
|
|
|
7
6
|
|
|
@@ -86,7 +85,7 @@ RUCY_DEF0(each_tag)
|
|
|
86
85
|
Value ret;
|
|
87
86
|
Reflex::Selector::const_iterator end = C_THIS->end();
|
|
88
87
|
for (Reflex::Selector::const_iterator it = C_THIS->begin(); it != end; ++it)
|
|
89
|
-
ret =
|
|
88
|
+
ret = yield(value(*it));
|
|
90
89
|
return ret;
|
|
91
90
|
}
|
|
92
91
|
RUCY_END
|
|
@@ -146,13 +145,14 @@ namespace Rucy
|
|
|
146
145
|
template <> REFLEX_EXPORT Reflex::Selector
|
|
147
146
|
value_to<Reflex::Selector> (int argc, const Value* argv, bool convert)
|
|
148
147
|
{
|
|
149
|
-
if (argc == 1 && argv->is_array())
|
|
148
|
+
if (argc == 1 && argv && argv->is_array())
|
|
150
149
|
{
|
|
151
150
|
argc = argv->size();
|
|
152
151
|
argv = argv->as_array();
|
|
153
152
|
}
|
|
154
153
|
|
|
155
|
-
|
|
154
|
+
if (argc <= 0 || !argv)
|
|
155
|
+
argument_error(__FILE__, __LINE__);
|
|
156
156
|
|
|
157
157
|
if (convert)
|
|
158
158
|
{
|
data/ext/reflex/selector.h
CHANGED
|
@@ -83,7 +83,7 @@ RUCY_DEF0(each_tag)
|
|
|
83
83
|
Rucy::Value ret;
|
|
84
84
|
Reflex::Selector::const_iterator end = this_->tag_end();
|
|
85
85
|
for (Reflex::Selector::const_iterator it = this_->tag_begin(); it != end; ++it)
|
|
86
|
-
ret =
|
|
86
|
+
ret = Rucy::yield(Rucy::value(*it));
|
|
87
87
|
return ret;
|
|
88
88
|
}
|
|
89
89
|
RUCY_END
|