reflexion 0.1.20 → 0.1.24
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/capture_event.cpp +6 -5
- data/.doc/ext/reflex/contact_event.cpp +18 -16
- data/.doc/ext/reflex/draw_event.cpp +10 -8
- data/.doc/ext/reflex/event.cpp +10 -10
- data/.doc/ext/reflex/focus_event.cpp +18 -17
- data/.doc/ext/reflex/frame_event.cpp +17 -17
- data/.doc/ext/reflex/key_event.cpp +227 -28
- data/.doc/ext/reflex/native.cpp +2 -0
- data/.doc/ext/reflex/pointer.cpp +158 -0
- data/.doc/ext/reflex/pointer_event.cpp +32 -91
- data/.doc/ext/reflex/scroll_event.cpp +14 -17
- data/.doc/ext/reflex/selector.cpp +8 -0
- data/.doc/ext/reflex/timer.cpp +9 -1
- data/.doc/ext/reflex/timer_event.cpp +4 -13
- data/.doc/ext/reflex/update_event.cpp +6 -5
- data/.doc/ext/reflex/view.cpp +57 -0
- data/.doc/ext/reflex/wheel_event.cpp +39 -22
- data/.doc/ext/reflex/window.cpp +41 -0
- data/VERSION +1 -1
- data/ext/reflex/capture_event.cpp +6 -5
- data/ext/reflex/contact_event.cpp +18 -16
- data/ext/reflex/draw_event.cpp +9 -7
- data/ext/reflex/event.cpp +11 -11
- data/ext/reflex/focus_event.cpp +18 -17
- data/ext/reflex/frame_event.cpp +16 -16
- data/ext/reflex/key_event.cpp +228 -28
- data/ext/reflex/native.cpp +2 -0
- data/ext/reflex/pointer.cpp +170 -0
- data/ext/reflex/pointer_event.cpp +31 -96
- data/ext/reflex/scroll_event.cpp +15 -18
- data/ext/reflex/selector.cpp +9 -0
- data/ext/reflex/timer.cpp +15 -6
- data/ext/reflex/timer_event.cpp +9 -19
- data/ext/reflex/update_event.cpp +6 -5
- data/ext/reflex/view.cpp +67 -3
- data/ext/reflex/wheel_event.cpp +40 -21
- data/ext/reflex/window.cpp +49 -3
- data/include/reflex/defs.h +140 -106
- data/include/reflex/event.h +232 -124
- data/include/reflex/pointer.h +107 -0
- data/include/reflex/ruby/pointer.h +41 -0
- data/include/reflex/ruby/view.h +9 -0
- data/include/reflex/ruby/window.h +9 -0
- data/include/reflex/selector.h +1 -1
- data/include/reflex/shape.h +2 -2
- data/include/reflex/view.h +6 -4
- data/include/reflex/window.h +14 -8
- data/lib/reflex/application.rb +3 -3
- data/lib/reflex/autoinit.rb +1 -1
- data/lib/reflex/button.rb +7 -7
- data/lib/reflex/capture_event.rb +7 -7
- data/lib/reflex/contact_event.rb +10 -10
- data/lib/reflex/draw_event.rb +2 -2
- data/lib/reflex/ellipse_shape.rb +2 -2
- data/lib/reflex/focus_event.rb +11 -11
- data/lib/reflex/frame_event.rb +5 -5
- data/lib/reflex/helper.rb +20 -20
- data/lib/reflex/image_view.rb +2 -2
- data/lib/reflex/key_event.rb +12 -12
- data/lib/reflex/model.rb +22 -22
- data/lib/reflex/model_owner.rb +7 -7
- data/lib/reflex/model_view.rb +1 -1
- data/lib/reflex/module.rb +5 -5
- data/lib/reflex/pointer.rb +107 -0
- data/lib/reflex/pointer_event.rb +16 -54
- data/lib/reflex/polygon_shape.rb +2 -2
- data/lib/reflex/reflex.rb +3 -3
- data/lib/reflex/scroll_event.rb +1 -1
- data/lib/reflex/selector.rb +4 -4
- data/lib/reflex/shape.rb +13 -13
- data/lib/reflex/style.rb +11 -11
- data/lib/reflex/style_length.rb +1 -1
- data/lib/reflex/text_view.rb +2 -2
- data/lib/reflex/timer.rb +2 -2
- data/lib/reflex/timer_event.rb +3 -2
- data/lib/reflex/update_event.rb +1 -1
- data/lib/reflex/view.rb +32 -32
- data/lib/reflex/wheel_event.rb +2 -10
- data/lib/reflex/window.rb +8 -7
- data/lib/reflex.rb +1 -0
- data/lib/reflexion.rb +17 -17
- data/reflex.gemspec +5 -5
- data/samples/reflexion/noise.rb +1 -1
- data/samples/tree.rb +1 -1
- data/src/event.cpp +792 -86
- data/src/event.h +47 -0
- data/src/image_view.cpp +2 -2
- data/src/ios/event.h +15 -3
- data/src/ios/event.mm +126 -11
- data/src/ios/view_controller.mm +51 -23
- data/src/ios/window.mm +18 -0
- data/src/osx/event.h +15 -4
- data/src/osx/event.mm +214 -24
- data/src/osx/native_window.mm +85 -18
- data/src/osx/window.mm +22 -0
- data/src/pointer.cpp +203 -0
- data/src/pointer.h +26 -0
- data/src/selector.cpp +1 -1
- data/src/shape.cpp +11 -13
- data/src/shape.h +1 -1
- data/src/view.cpp +205 -118
- data/src/view.h +5 -10
- data/src/window.cpp +346 -104
- data/src/window.h +28 -3
- data/src/world.cpp +6 -4
- data/test/helper.rb +3 -3
- data/test/test_application.rb +1 -1
- data/test/test_capture_event.rb +22 -6
- data/test/test_contact_event.rb +40 -0
- data/test/test_draw_event.rb +35 -0
- data/test/test_event.rb +33 -5
- data/test/test_focus_event.rb +34 -0
- data/test/test_frame_event.rb +38 -0
- data/test/test_has_frame.rb +11 -11
- data/test/test_key_event.rb +33 -0
- data/test/test_pointer.rb +149 -0
- data/test/test_pointer_event.rb +70 -104
- data/test/test_reflex.rb +1 -1
- data/test/test_scroll_event.rb +39 -0
- data/test/test_selector.rb +15 -8
- data/test/test_shape.rb +8 -8
- data/test/test_style.rb +13 -13
- data/test/test_style_length.rb +5 -5
- data/test/test_timer_event.rb +38 -0
- data/test/test_update_event.rb +29 -0
- data/test/test_view.rb +57 -30
- data/test/test_wheel_event.rb +40 -0
- data/test/test_window.rb +45 -26
- metadata +64 -35
data/include/reflex/shape.h
CHANGED
data/include/reflex/view.h
CHANGED
@@ -364,13 +364,15 @@ namespace Reflex
|
|
364
364
|
|
365
365
|
virtual void on_key_up (KeyEvent* e);
|
366
366
|
|
367
|
-
virtual void on_pointer
|
367
|
+
virtual void on_pointer (PointerEvent* e);
|
368
368
|
|
369
|
-
virtual void on_pointer_down
|
369
|
+
virtual void on_pointer_down (PointerEvent* e);
|
370
370
|
|
371
|
-
virtual void on_pointer_up
|
371
|
+
virtual void on_pointer_up (PointerEvent* e);
|
372
372
|
|
373
|
-
virtual void on_pointer_move
|
373
|
+
virtual void on_pointer_move (PointerEvent* e);
|
374
|
+
|
375
|
+
virtual void on_pointer_cancel (PointerEvent* e);
|
374
376
|
|
375
377
|
virtual void on_wheel (WheelEvent* e);
|
376
378
|
|
data/include/reflex/window.h
CHANGED
@@ -39,6 +39,10 @@ namespace Reflex
|
|
39
39
|
|
40
40
|
virtual void redraw ();
|
41
41
|
|
42
|
+
virtual Point from_screen (const Point& point) const;
|
43
|
+
|
44
|
+
virtual Point to_screen (const Point& point) const;
|
45
|
+
|
42
46
|
virtual void set_title (const char* title);
|
43
47
|
|
44
48
|
virtual const char* title () const;
|
@@ -49,6 +53,10 @@ namespace Reflex
|
|
49
53
|
|
50
54
|
virtual Bounds frame () const;
|
51
55
|
|
56
|
+
virtual void set_resizable (bool state = true);
|
57
|
+
|
58
|
+
virtual bool is_resizable () const;
|
59
|
+
|
52
60
|
virtual bool hidden () const;
|
53
61
|
|
54
62
|
virtual View* root ();
|
@@ -63,10 +71,6 @@ namespace Reflex
|
|
63
71
|
|
64
72
|
virtual const Painter* painter () const;
|
65
73
|
|
66
|
-
virtual Point from_screen (const Point& point) const;
|
67
|
-
|
68
|
-
virtual Point to_screen (const Point& point) const;
|
69
|
-
|
70
74
|
virtual void on_show (Event* e);
|
71
75
|
|
72
76
|
virtual void on_hide (Event* e);
|
@@ -87,13 +91,15 @@ namespace Reflex
|
|
87
91
|
|
88
92
|
virtual void on_key_up (KeyEvent* e);
|
89
93
|
|
90
|
-
virtual void on_pointer
|
94
|
+
virtual void on_pointer (PointerEvent* e);
|
95
|
+
|
96
|
+
virtual void on_pointer_down (PointerEvent* e);
|
91
97
|
|
92
|
-
virtual void
|
98
|
+
virtual void on_pointer_up (PointerEvent* e);
|
93
99
|
|
94
|
-
virtual void
|
100
|
+
virtual void on_pointer_move (PointerEvent* e);
|
95
101
|
|
96
|
-
virtual void
|
102
|
+
virtual void on_pointer_cancel (PointerEvent* e);
|
97
103
|
|
98
104
|
virtual void on_wheel (WheelEvent* e);
|
99
105
|
|
data/lib/reflex/application.rb
CHANGED
@@ -18,19 +18,19 @@ module Reflex
|
|
18
18
|
|
19
19
|
universal_accessor :name
|
20
20
|
|
21
|
-
def initialize
|
21
|
+
def initialize(options = nil, &block)
|
22
22
|
super()
|
23
23
|
set options if options
|
24
24
|
@start_block = block if block
|
25
25
|
end
|
26
26
|
|
27
|
-
def self.start
|
27
|
+
def self.start(*args, &block)
|
28
28
|
new(*args, &block).start
|
29
29
|
end
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
-
def call_start_block
|
33
|
+
def call_start_block()
|
34
34
|
return unless @start_block
|
35
35
|
Xot::BlockUtil.instance_eval_or_block_call self, &@start_block
|
36
36
|
@start_block = nil
|
data/lib/reflex/autoinit.rb
CHANGED
data/lib/reflex/button.rb
CHANGED
@@ -13,21 +13,21 @@ module Reflex
|
|
13
13
|
|
14
14
|
attr_accessor :text
|
15
15
|
|
16
|
-
def initialize
|
16
|
+
def initialize(*args, &block)
|
17
17
|
self.data = false
|
18
18
|
super
|
19
19
|
self.text = self.name unless self.text
|
20
20
|
end
|
21
21
|
|
22
|
-
def content_bounds
|
22
|
+
def content_bounds()
|
23
23
|
f = window.painter.font
|
24
24
|
return f.width(@text) + 2, f.height + 2
|
25
25
|
end
|
26
26
|
|
27
|
-
def on_press
|
27
|
+
def on_press(e)
|
28
28
|
end
|
29
29
|
|
30
|
-
def on_draw
|
30
|
+
def on_draw(e)
|
31
31
|
e.painter.push fill: (pressing? ? :white : :none), stroke: :white do |p|
|
32
32
|
p.rect e.bounds
|
33
33
|
|
@@ -43,7 +43,7 @@ module Reflex
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
def on_pointer
|
46
|
+
def on_pointer(e)
|
47
47
|
case e.type
|
48
48
|
when :down
|
49
49
|
self.capture += [:pointer]
|
@@ -60,13 +60,13 @@ module Reflex
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
def on_data_update
|
63
|
+
def on_data_update(e)
|
64
64
|
on_press({}) if e.data
|
65
65
|
end
|
66
66
|
|
67
67
|
private
|
68
68
|
|
69
|
-
def pressing?
|
69
|
+
def pressing?()
|
70
70
|
capturing? :pointer
|
71
71
|
end
|
72
72
|
|
data/lib/reflex/capture_event.rb
CHANGED
@@ -10,25 +10,25 @@ module Reflex
|
|
10
10
|
|
11
11
|
class CaptureEvent < Event
|
12
12
|
|
13
|
-
def begin
|
13
|
+
def begin()
|
14
14
|
View.capture_flag.bits2symbols get_begin
|
15
15
|
end
|
16
16
|
|
17
|
-
def begin?
|
18
|
-
bits = View.capture_flag.symbols2bits
|
17
|
+
def begin?(*symbols)
|
18
|
+
bits = View.capture_flag.symbols2bits(*symbols)
|
19
19
|
(bits & get_begin) == bits
|
20
20
|
end
|
21
21
|
|
22
|
-
def end
|
22
|
+
def end()
|
23
23
|
View.capture_flag.bits2symbols get_end
|
24
24
|
end
|
25
25
|
|
26
|
-
def end?
|
27
|
-
bits = View.capture_flag.symbols2bits
|
26
|
+
def end?(*symbols)
|
27
|
+
bits = View.capture_flag.symbols2bits(*symbols)
|
28
28
|
(bits & get_end) == bits
|
29
29
|
end
|
30
30
|
|
31
|
-
def inspect
|
31
|
+
def inspect()
|
32
32
|
"#<Reflex::CaptureEvent begin:#{self.begin} end:#{self.end}}>"
|
33
33
|
end
|
34
34
|
|
data/lib/reflex/contact_event.rb
CHANGED
@@ -10,23 +10,23 @@ module Reflex
|
|
10
10
|
|
11
11
|
class ContactEvent < Event
|
12
12
|
|
13
|
-
alias
|
13
|
+
alias get_action action
|
14
14
|
|
15
|
-
const_symbol_reader :
|
16
|
-
none:
|
17
|
-
begin:
|
18
|
-
end:
|
15
|
+
const_symbol_reader :action, **{
|
16
|
+
none: ACTION_NONE,
|
17
|
+
begin: ContactEvent::BEGIN,
|
18
|
+
end: ContactEvent::END
|
19
19
|
}
|
20
20
|
|
21
|
-
def begin?
|
22
|
-
|
21
|
+
def begin?()
|
22
|
+
get_action == ContactEvent::BEGIN
|
23
23
|
end
|
24
24
|
|
25
|
-
def end?
|
26
|
-
|
25
|
+
def end?()
|
26
|
+
get_action == ContactEvent::END
|
27
27
|
end
|
28
28
|
|
29
|
-
def inspect
|
29
|
+
def inspect()
|
30
30
|
"#<Reflex::ContactEvent type:#{type} shape:#{shape} view:#{view}>"
|
31
31
|
end
|
32
32
|
|
data/lib/reflex/draw_event.rb
CHANGED
@@ -10,11 +10,11 @@ module Reflex
|
|
10
10
|
|
11
11
|
class DrawEvent < Event
|
12
12
|
|
13
|
-
def paint
|
13
|
+
def paint(&block)
|
14
14
|
Xot::BlockUtil.instance_eval_or_block_call painter, &block if block
|
15
15
|
end
|
16
16
|
|
17
|
-
def inspect
|
17
|
+
def inspect()
|
18
18
|
"#<Reflex::DrawEvent painter:#{painter} bounds:#{bounds} dt:#{dt} fps:#{fps}>"
|
19
19
|
end
|
20
20
|
|
data/lib/reflex/ellipse_shape.rb
CHANGED
data/lib/reflex/focus_event.rb
CHANGED
@@ -10,24 +10,24 @@ module Reflex
|
|
10
10
|
|
11
11
|
class FocusEvent < Event
|
12
12
|
|
13
|
-
alias
|
13
|
+
alias get_action action
|
14
14
|
|
15
|
-
const_symbol_reader :
|
16
|
-
none:
|
17
|
-
focus:
|
18
|
-
blur:
|
15
|
+
const_symbol_reader :action, **{
|
16
|
+
none: ACTION_NONE,
|
17
|
+
focus: FOCUS,
|
18
|
+
blur: BLUR
|
19
19
|
}
|
20
20
|
|
21
|
-
def focus?
|
22
|
-
|
21
|
+
def focus?()
|
22
|
+
get_action == FOCUS
|
23
23
|
end
|
24
24
|
|
25
|
-
def blur?
|
26
|
-
|
25
|
+
def blur?()
|
26
|
+
get_action == BLUR
|
27
27
|
end
|
28
28
|
|
29
|
-
def inspect
|
30
|
-
"#<Reflex::FocusEvent
|
29
|
+
def inspect()
|
30
|
+
"#<Reflex::FocusEvent action:#{action} current:#{current} last:#{last}>"
|
31
31
|
end
|
32
32
|
|
33
33
|
end# FocusEvent
|
data/lib/reflex/frame_event.rb
CHANGED
@@ -13,26 +13,26 @@ module Reflex
|
|
13
13
|
alias dh dheight
|
14
14
|
alias dpos dposition
|
15
15
|
|
16
|
-
def x
|
16
|
+
def x()
|
17
17
|
frame.x
|
18
18
|
end
|
19
19
|
|
20
|
-
def y
|
20
|
+
def y()
|
21
21
|
frame.y
|
22
22
|
end
|
23
23
|
|
24
|
-
def width
|
24
|
+
def width()
|
25
25
|
frame.width
|
26
26
|
end
|
27
27
|
|
28
|
-
def height
|
28
|
+
def height()
|
29
29
|
frame.height
|
30
30
|
end
|
31
31
|
|
32
32
|
alias w width
|
33
33
|
alias h height
|
34
34
|
|
35
|
-
def inspect
|
35
|
+
def inspect()
|
36
36
|
"#<Reflex::FrameEvent x:#{x} y:#{y} w:#{w} h:#{h} dx:#{dx} dy:#{dy} dw:#{dw} dh:#{dh}>"
|
37
37
|
end
|
38
38
|
|
data/lib/reflex/helper.rb
CHANGED
@@ -14,7 +14,7 @@ module Reflex
|
|
14
14
|
|
15
15
|
include Xot::Hookable
|
16
16
|
|
17
|
-
def hook
|
17
|
+
def hook(name, &block)
|
18
18
|
super "on_#{name}".intern, &block
|
19
19
|
end
|
20
20
|
|
@@ -23,28 +23,28 @@ module Reflex
|
|
23
23
|
|
24
24
|
module HasFrame
|
25
25
|
|
26
|
-
def move_to
|
27
|
-
self.frame = frame.move_to
|
26
|
+
def move_to(*args)
|
27
|
+
self.frame = frame.move_to(*args)
|
28
28
|
self
|
29
29
|
end
|
30
30
|
|
31
|
-
def move_by
|
32
|
-
self.frame = frame.move_by
|
31
|
+
def move_by(*args)
|
32
|
+
self.frame = frame.move_by(*args)
|
33
33
|
self
|
34
34
|
end
|
35
35
|
|
36
|
-
def resize_to
|
37
|
-
self.frame = frame.resize_to
|
36
|
+
def resize_to(*args)
|
37
|
+
self.frame = frame.resize_to(*args)
|
38
38
|
self
|
39
39
|
end
|
40
40
|
|
41
|
-
def resize_by
|
42
|
-
self.frame = frame.resize_by
|
41
|
+
def resize_by(*args)
|
42
|
+
self.frame = frame.resize_by(*args)
|
43
43
|
self
|
44
44
|
end
|
45
45
|
|
46
|
-
def inset_by
|
47
|
-
self.frame = frame.inset_by
|
46
|
+
def inset_by(*args)
|
47
|
+
self.frame = frame.inset_by(*args)
|
48
48
|
self
|
49
49
|
end
|
50
50
|
|
@@ -56,10 +56,10 @@ module Reflex
|
|
56
56
|
position pos size center
|
57
57
|
].each do |name|
|
58
58
|
class_eval <<-END
|
59
|
-
def #{name}
|
59
|
+
def #{name}()
|
60
60
|
frame.#{name}
|
61
61
|
end
|
62
|
-
def #{name}=
|
62
|
+
def #{name}=(*args)
|
63
63
|
self.frame = frame.tap {|b| b.send :#{name}=, *args}
|
64
64
|
#{name}
|
65
65
|
end
|
@@ -73,27 +73,27 @@ module Reflex
|
|
73
73
|
|
74
74
|
module HasTags
|
75
75
|
|
76
|
-
def tag=
|
76
|
+
def tag=(*tags)
|
77
77
|
clear_tags
|
78
|
-
tag
|
78
|
+
tag(*tags.flatten)
|
79
79
|
end
|
80
80
|
|
81
81
|
alias tags= tag=
|
82
82
|
|
83
|
-
def tag
|
83
|
+
def tag(*tags)
|
84
84
|
tags.each {|tag| add_tag tag}
|
85
85
|
end
|
86
86
|
|
87
|
-
def untag
|
87
|
+
def untag(*tags)
|
88
88
|
tags.each {|tag| remove_tag tag}
|
89
89
|
end
|
90
90
|
|
91
|
-
def tags
|
91
|
+
def tags()
|
92
92
|
to_enum :each_tag
|
93
93
|
end
|
94
94
|
|
95
|
-
def clear_tags
|
96
|
-
untag
|
95
|
+
def clear_tags()
|
96
|
+
untag(*tags.to_a)
|
97
97
|
end
|
98
98
|
|
99
99
|
end# HasTags
|
data/lib/reflex/image_view.rb
CHANGED
data/lib/reflex/key_event.rb
CHANGED
@@ -10,28 +10,28 @@ module Reflex
|
|
10
10
|
|
11
11
|
class KeyEvent < Event
|
12
12
|
|
13
|
-
alias
|
13
|
+
alias get_action action
|
14
14
|
|
15
|
-
const_symbol_reader :
|
16
|
-
none:
|
17
|
-
down:
|
18
|
-
up:
|
15
|
+
const_symbol_reader :action, **{
|
16
|
+
none: ACTION_NONE,
|
17
|
+
down: DOWN,
|
18
|
+
up: UP
|
19
19
|
}
|
20
20
|
|
21
|
-
def down?
|
22
|
-
|
21
|
+
def down?()
|
22
|
+
get_action == DOWN
|
23
23
|
end
|
24
24
|
|
25
|
-
def up?
|
26
|
-
|
25
|
+
def up?()
|
26
|
+
get_action == UP
|
27
27
|
end
|
28
28
|
|
29
|
-
def repeat?
|
29
|
+
def repeat?()
|
30
30
|
repeat >= 1
|
31
31
|
end
|
32
32
|
|
33
|
-
def inspect
|
34
|
-
"#<Reflex::KeyEvent
|
33
|
+
def inspect()
|
34
|
+
"#<Reflex::KeyEvent action:#{action} chars:'#{chars}' code:#{code} mod:#{modifiers} repeat:#{repeat} captured?:#{captured?}>"
|
35
35
|
end
|
36
36
|
|
37
37
|
end# KeyEvent
|
data/lib/reflex/model.rb
CHANGED
@@ -18,12 +18,12 @@ module Reflex
|
|
18
18
|
|
19
19
|
attr_reader :data
|
20
20
|
|
21
|
-
def initialize
|
21
|
+
def initialize(data = nil, &block)
|
22
22
|
self.data = data if data
|
23
23
|
Xot::BlockUtil.instance_eval_or_block_call self, &block if block
|
24
24
|
end
|
25
25
|
|
26
|
-
def data=
|
26
|
+
def data=(data)
|
27
27
|
skip, data = apply_filters(data).tap do |filtered|
|
28
28
|
skip = filtered.nil? && !data.nil?
|
29
29
|
break skip, filtered
|
@@ -35,79 +35,79 @@ module Reflex
|
|
35
35
|
@data
|
36
36
|
end
|
37
37
|
|
38
|
-
def add_handler
|
38
|
+
def add_handler(handler)
|
39
39
|
super
|
40
40
|
invoke :attach, {}, only: handler
|
41
41
|
end
|
42
42
|
|
43
|
-
def remove_handler
|
43
|
+
def remove_handler(handler)
|
44
44
|
invoke :detach, {}, only: handler
|
45
45
|
super
|
46
46
|
end
|
47
47
|
|
48
|
-
def invoke
|
48
|
+
def invoke(name, attributes = {}, options = {})
|
49
49
|
attributes[:data] ||= @data
|
50
50
|
super "on_data_#{name}".intern, attributes, options
|
51
51
|
end
|
52
52
|
|
53
|
-
def add_filter
|
53
|
+
def add_filter(&block)
|
54
54
|
(@filters ||= []).push block
|
55
55
|
end
|
56
56
|
|
57
|
-
def remove_filter
|
57
|
+
def remove_filter(&block)
|
58
58
|
@filters.delete block if @filters
|
59
59
|
end
|
60
60
|
|
61
61
|
alias filter add_filter
|
62
62
|
|
63
|
-
def validate
|
63
|
+
def validate(&block)
|
64
64
|
filter {|data| block.call(data) ? data : nil}
|
65
65
|
end
|
66
66
|
|
67
|
-
def min=
|
67
|
+
def min=(min)
|
68
68
|
filter {|data| data < min ? min : data}
|
69
69
|
end
|
70
70
|
|
71
|
-
def max=
|
71
|
+
def max=(max)
|
72
72
|
filter {|data| data > max ? max : data}
|
73
73
|
end
|
74
74
|
|
75
|
-
def minmax=
|
75
|
+
def minmax=(range)
|
76
76
|
min, max = range.min, range.max
|
77
77
|
filter {|data| data < min ? min : data > max ? max : data}
|
78
78
|
end
|
79
79
|
|
80
|
-
def int
|
80
|
+
def int(defvar = nil)
|
81
81
|
call_symbols INT_SYMS
|
82
82
|
end
|
83
83
|
|
84
|
-
def float
|
84
|
+
def float(defvar = nil)
|
85
85
|
call_symbols FLOAT_SYMS
|
86
86
|
end
|
87
87
|
|
88
|
-
def string
|
88
|
+
def string(defvar = nil)
|
89
89
|
call_symbols STRING_SYMS
|
90
90
|
end
|
91
91
|
|
92
|
-
def []
|
92
|
+
def [](*args)
|
93
93
|
call_symbols ARRAY_GET_SYMS, *args
|
94
94
|
end
|
95
95
|
|
96
|
-
def []=
|
96
|
+
def []=(*args)
|
97
97
|
ret = call_symbols ARRAY_SET_SYMS, *args
|
98
98
|
invoke :update
|
99
99
|
ret
|
100
100
|
end
|
101
101
|
|
102
|
-
def size
|
102
|
+
def size()
|
103
103
|
call_symbols(ARRAY_SIZE_SYMS) || 0
|
104
104
|
end
|
105
105
|
|
106
|
-
def each
|
107
|
-
data.each
|
106
|
+
def each(&block)
|
107
|
+
data.each(&block) if block && data.respond_to?(:each)
|
108
108
|
end
|
109
109
|
|
110
|
-
def inspect
|
110
|
+
def inspect()
|
111
111
|
"#<Model data:#{@data.inspect}>"
|
112
112
|
end
|
113
113
|
|
@@ -125,7 +125,7 @@ module Reflex
|
|
125
125
|
|
126
126
|
ARRAY_SIZE_SYMS = [:size, :length]
|
127
127
|
|
128
|
-
def apply_filters
|
128
|
+
def apply_filters(data)
|
129
129
|
return data unless @filters
|
130
130
|
@filters.each do |filter|
|
131
131
|
break if data.nil?
|
@@ -134,7 +134,7 @@ module Reflex
|
|
134
134
|
data
|
135
135
|
end
|
136
136
|
|
137
|
-
def call_symbols
|
137
|
+
def call_symbols(symbols, *args)
|
138
138
|
if dat = data
|
139
139
|
symbols.each do |symbol|
|
140
140
|
return dat.send symbol, *args if dat.respond_to? symbol
|
data/lib/reflex/model_owner.rb
CHANGED
@@ -11,7 +11,7 @@ module Reflex
|
|
11
11
|
|
12
12
|
attr_reader :model
|
13
13
|
|
14
|
-
def model=
|
14
|
+
def model=(model)
|
15
15
|
return if model == @model
|
16
16
|
@model.remove_handler self if @model
|
17
17
|
@model = model
|
@@ -19,7 +19,7 @@ module Reflex
|
|
19
19
|
model
|
20
20
|
end
|
21
21
|
|
22
|
-
def data=
|
22
|
+
def data=(data)
|
23
23
|
unless data.nil?
|
24
24
|
self.model = Model.new unless @model
|
25
25
|
@model.data = data
|
@@ -29,19 +29,19 @@ module Reflex
|
|
29
29
|
data
|
30
30
|
end
|
31
31
|
|
32
|
-
def data
|
32
|
+
def data()
|
33
33
|
@model ? @model.data : nil
|
34
34
|
end
|
35
35
|
|
36
|
-
def invoke
|
37
|
-
@model.invoke
|
36
|
+
def invoke(*args)
|
37
|
+
@model.invoke(*args) if @model
|
38
38
|
end
|
39
39
|
|
40
|
-
def on_data_attach
|
40
|
+
def on_data_attach(e)
|
41
41
|
invoke :update, {}, only: self
|
42
42
|
end
|
43
43
|
|
44
|
-
def on_data_detach
|
44
|
+
def on_data_detach(e)
|
45
45
|
invoke :update, {}, only: self
|
46
46
|
end
|
47
47
|
|