atome 0.5.1.9 → 0.5.2.5
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/Rakefile +22 -5
- data/lib/atome/atome.rb +37 -16
- data/lib/atome/extensions/atome.rb +5 -26
- data/lib/atome/extensions/geolocation.rb +0 -1
- data/lib/atome/extensions/matrix.rb +171 -0
- data/lib/atome/extensions/ping.rb +9 -11
- data/lib/atome/genesis/generators/atome.rb +14 -2
- data/lib/atome/genesis/generators/communication.rb +1 -1
- data/lib/atome/genesis/generators/event.rb +25 -0
- data/lib/atome/genesis/generators/identity.rb +28 -0
- data/lib/atome/genesis/generators/material.rb +21 -0
- data/lib/atome/genesis/generators/spatial.rb +1 -0
- data/lib/atome/genesis/generators/utility.rb +20 -2
- data/lib/atome/genesis/genesis.rb +2 -2
- data/lib/atome/genesis/sparkle.rb +1 -1
- data/lib/atome/helpers/callbacks.rb +33 -25
- data/lib/atome/helpers/essentials.rb +5 -2
- data/lib/atome/helpers/utilities.rb +52 -8
- data/lib/atome/kernel/universe.rb +0 -4
- data/lib/atome/presets/atome.rb +11 -7
- data/lib/atome/renderers/browser/atome.rb +7 -7
- data/lib/atome/renderers/browser/browser.rb +5 -2
- data/lib/atome/renderers/browser/effect.rb +2 -2
- data/lib/atome/renderers/browser/event.rb +27 -16
- data/lib/atome/renderers/browser/geometry.rb +2 -2
- data/lib/atome/renderers/browser/helpers/animation_helper.rb +69 -0
- data/lib/atome/renderers/browser/helpers/browser_helper.rb +0 -1
- data/lib/atome/renderers/browser/helpers/color_helper.rb +0 -2
- data/lib/atome/renderers/browser/helpers/drag_helper.rb +6 -6
- data/lib/atome/renderers/browser/helpers/effect_helper.rb +4 -0
- data/lib/atome/renderers/browser/helpers/event_helper.rb +59 -0
- data/lib/atome/renderers/browser/helpers/video_helper.rb +1 -1
- data/lib/atome/renderers/browser/identity.rb +10 -3
- data/lib/atome/renderers/browser/material.rb +28 -5
- data/lib/atome/renderers/browser/spatial.rb +36 -5
- data/lib/atome/renderers/browser/utility.rb +20 -11
- data/lib/atome/renderers/headless/utility.rb +2 -2
- data/lib/atome/renderers/html/atome.rb +5 -5
- data/lib/atome/renderers/html/effect.rb +1 -1
- data/lib/atome/renderers/html/event.rb +1 -1
- data/lib/atome/renderers/html/geometry.rb +2 -2
- data/lib/atome/renderers/html/identity.rb +2 -2
- data/lib/atome/renderers/html/spatial.rb +5 -5
- data/lib/atome/renderers/html/utility.rb +7 -7
- data/lib/atome/renderers/server/utility.rb +2 -2
- data/lib/atome/version.rb +1 -1
- data/lib/atome.rb +6 -3
- data/sig/atome_js.rbs +1 -0
- data/vendor/assets/build/css/style.css +23 -16
- data/vendor/assets/build/index.html +4 -2
- data/vendor/assets/build/js/third_parties/wad.min.js +9 -0
- data/vendor/assets/build/medias/audios/Binrpilot.mp3 +0 -0
- data/vendor/assets/build/medias/rubies/examples/_2_solve.rb +24 -2
- data/vendor/assets/build/medias/rubies/examples/_audio.rb +178 -0
- data/vendor/assets/build/medias/rubies/examples/_dataset.rb +82 -0
- data/vendor/assets/build/medias/rubies/examples/_markers.rb +57 -0
- data/vendor/assets/build/medias/rubies/examples/_os.rb +29 -0
- data/vendor/assets/build/medias/rubies/examples/_vie.rb +211 -0
- data/vendor/assets/build/medias/rubies/examples/animation.rb +81 -0
- data/vendor/assets/build/medias/rubies/examples/at.rb +5 -1
- data/vendor/assets/build/medias/rubies/examples/{atome.new.rb → atome_new.rb} +5 -5
- data/vendor/assets/build/medias/rubies/examples/bottom.rb +1 -1
- data/vendor/assets/build/medias/rubies/examples/center.rb +21 -0
- data/vendor/assets/build/medias/rubies/examples/clone.rb +20 -0
- data/vendor/assets/build/medias/rubies/examples/color.rb +20 -15
- data/vendor/assets/build/medias/rubies/examples/cursor.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/delete.rb +25 -3
- data/vendor/assets/build/medias/rubies/examples/drag.rb +3 -2
- data/vendor/assets/build/medias/rubies/examples/edit.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/empty_atome.rb +12 -0
- data/vendor/assets/build/medias/rubies/examples/hide.rb +7 -0
- data/vendor/assets/build/medias/rubies/examples/matrix.rb +58 -0
- data/vendor/assets/build/medias/rubies/examples/monitoring.rb +22 -11
- data/vendor/assets/build/medias/rubies/examples/play.rb +1 -1
- data/vendor/assets/build/medias/rubies/examples/read.rb +7 -4
- data/vendor/assets/build/medias/rubies/examples/remove.rb +16 -0
- data/vendor/assets/build/medias/rubies/examples/right.rb +1 -1
- data/vendor/assets/build/medias/rubies/examples/shadow.rb +8 -1
- data/vendor/assets/build/medias/rubies/examples/sort.rb +7 -4
- data/vendor/assets/build/medias/rubies/examples/style.rb +4 -0
- data/vendor/assets/build/medias/rubies/examples/touch.rb +50 -7
- data/vendor/assets/build/medias/texts/lorem.txt +1 -0
- metadata +24 -4
- data/vendor/assets/build/medias/rubies/examples/_animation.rb +0 -46
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9b7030ffafd358342bdc993dcee7f6a7f35c0c7c2504a85149bea5c2751b5d89
|
|
4
|
+
data.tar.gz: bab45507e748e52cf793b19f2bb7457bb0d05fce580286854b49c32515dabd66
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1d72ba4a1af3d68412a3a64f0e3907f523cb03188f0c5becc355e8afc2e4e0d3b59ef06863171c6d8808ceedbace062099535823be732a058282acac7943a320
|
|
7
|
+
data.tar.gz: 1146eea7819fca1b160453cdd7187d11bf2e6a9471afeb4489246ba9297ecc708563d63a1ce679caf594fe1218b524c24c6dec3349c6a04c546ae36da9cffb72
|
data/Rakefile
CHANGED
|
@@ -14,21 +14,38 @@ task default: :test
|
|
|
14
14
|
task :test_browser do
|
|
15
15
|
FileUtils.copy_entry('vendor/assets/build/js/', 'test/test_app/build/js/')
|
|
16
16
|
FileUtils.copy_entry('vendor/assets/build/css/', 'test/test_app/build/css/')
|
|
17
|
-
FileUtils.copy_entry('vendor/assets/build/
|
|
17
|
+
FileUtils.copy_entry('vendor/assets/build/medias/', 'test/test_app/build/medias/')
|
|
18
18
|
`gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;gem install atome`
|
|
19
19
|
`cd test/test_app;atome update;atome run guard`
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
`cd test/test_app;atome run guard`
|
|
24
|
-
end
|
|
22
|
+
|
|
25
23
|
|
|
26
24
|
task :test_server do
|
|
27
25
|
FileUtils.copy_entry('vendor/assets/build/js/', 'test/test_app/build/js/')
|
|
28
26
|
FileUtils.copy_entry('vendor/assets/build/css/', 'test/test_app/build/css/')
|
|
29
|
-
FileUtils.copy_entry('vendor/assets/build/
|
|
27
|
+
FileUtils.copy_entry('vendor/assets/build/medias/', 'test/test_app/build/medias/')
|
|
30
28
|
`gem cleanup atome;yes | gem uninstall atome ;gem build atome.gemspec;gem install atome`
|
|
31
29
|
`cd test/test_app;atome update;atome run server`
|
|
32
30
|
end
|
|
33
31
|
|
|
32
|
+
task :run_browser do
|
|
33
|
+
`cd test/test_app;atome run guard`
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
task :run_server do
|
|
37
|
+
`cd test/test_app;atome run server guard`
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
task :run_example do
|
|
41
|
+
FileUtils.copy_entry('vendor/assets/build/medias/rubies/examples/', 'test/test_app/build/medias/rubies/examples/')
|
|
42
|
+
`cd test/test_app;atome run `
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
task :run_example_server do
|
|
46
|
+
FileUtils.copy_entry('vendor/assets/build/medias/rubies/examples/', 'test/test_app/build/medias/rubies/examples/')
|
|
47
|
+
`cd test/test_app;atome run server `
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
34
51
|
task default: :test
|
data/lib/atome/atome.rb
CHANGED
|
@@ -16,22 +16,26 @@ class Atome
|
|
|
16
16
|
# the instance variable below contain the id all any atomes that need to be informed when changes occurs
|
|
17
17
|
@broadcast = {}
|
|
18
18
|
@at_time = {}
|
|
19
|
+
@markers = {}
|
|
19
20
|
# now we store the proc in a an atome's property called :bloc
|
|
20
21
|
elements[:code] = atomes_proc if atomes_proc
|
|
21
22
|
@atome = elements
|
|
22
23
|
# we initiate the rendering, eg for for browser we will call :browser_type generate method in identity.rb file
|
|
23
|
-
create_particle(:type, @atome[:type])
|
|
24
|
+
# create_particle(:type, @atome[:type])
|
|
25
|
+
create_particle(:type)
|
|
26
|
+
set_type(@atome[:type])
|
|
24
27
|
collapse
|
|
25
28
|
end
|
|
26
29
|
end
|
|
27
30
|
|
|
28
31
|
def new_particle(element, &method_proc)
|
|
29
32
|
Atome.define_method element do |params = nil, &user_proc|
|
|
30
|
-
if params
|
|
33
|
+
if params || params == false
|
|
31
34
|
# the line below execute the proc created when using the build_particle method
|
|
32
35
|
instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
|
|
33
36
|
params = sanitize(element, params)
|
|
34
|
-
create_particle(element
|
|
37
|
+
create_particle(element)
|
|
38
|
+
send("set_#{element}", params, &user_proc)
|
|
35
39
|
else
|
|
36
40
|
get_particle(element, &user_proc)
|
|
37
41
|
end
|
|
@@ -42,20 +46,27 @@ class Atome
|
|
|
42
46
|
Atome.define_method "#{element}=" do |params = nil, &user_proc|
|
|
43
47
|
instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
|
|
44
48
|
params = sanitize(element, params)
|
|
45
|
-
|
|
49
|
+
particle_creation(element, params, &user_proc)
|
|
46
50
|
end
|
|
47
51
|
end
|
|
48
52
|
|
|
53
|
+
def atome_creation_pre_treatment(element, params, &user_proc)
|
|
54
|
+
params = sanitize(element, params)
|
|
55
|
+
create_atome(element)
|
|
56
|
+
send("set_#{element}", params, &user_proc)
|
|
57
|
+
end
|
|
58
|
+
|
|
49
59
|
def new_atome(element, &method_proc)
|
|
50
60
|
Atome.define_method element do |params = nil, &user_proc|
|
|
51
61
|
if params
|
|
52
62
|
instance_exec(params, user_proc, &method_proc) if method_proc.is_a?(Proc)
|
|
53
|
-
|
|
54
|
-
Atome.new({ element => params })
|
|
63
|
+
atome_creation_pre_treatment(element, params, &user_proc)
|
|
55
64
|
else
|
|
56
65
|
get_atome(element, &user_proc)
|
|
57
66
|
end
|
|
58
67
|
end
|
|
68
|
+
# the method below generate Atome method creation at Object level
|
|
69
|
+
create_method_at_object_level(element)
|
|
59
70
|
end
|
|
60
71
|
|
|
61
72
|
def new_render_engine(renderer_name, &method_proc)
|
|
@@ -66,7 +77,7 @@ class Atome
|
|
|
66
77
|
|
|
67
78
|
def run_optional_proc(proc_name, atome = self, value = '', &user_proc)
|
|
68
79
|
option_found = Universe.get_optional_method(proc_name)
|
|
69
|
-
atome.instance_exec(value,user_proc, &option_found) if option_found.is_a?(Proc)
|
|
80
|
+
atome.instance_exec(value, user_proc,atome, &option_found) if option_found.is_a?(Proc)
|
|
70
81
|
end
|
|
71
82
|
|
|
72
83
|
def inject_value(element, value)
|
|
@@ -82,23 +93,31 @@ class Atome
|
|
|
82
93
|
public
|
|
83
94
|
|
|
84
95
|
# the line below is used for ephemera atomes
|
|
85
|
-
attr_accessor :property, :value, :real_atome, :user_proc
|
|
96
|
+
attr_accessor :property, :value, :real_atome, :user_proc, :markers
|
|
86
97
|
attr_reader :atome, :structure, :at_time
|
|
87
98
|
|
|
88
99
|
def set(value)
|
|
89
100
|
@real_atome[@property] = value
|
|
90
101
|
end
|
|
91
102
|
|
|
92
|
-
def
|
|
93
|
-
return false unless security_pass(element,
|
|
103
|
+
def particle_creation(element, params, &user_proc)
|
|
104
|
+
return false unless security_pass(element, params)
|
|
94
105
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
run_optional_proc("
|
|
98
|
-
|
|
106
|
+
# we create a proc holder of any new particle if user pass a bloc
|
|
107
|
+
store_code_bloc(element, &user_proc) if user_proc
|
|
108
|
+
run_optional_proc("pre_render_#{element}".to_sym, self, params, &user_proc)
|
|
109
|
+
rendering(element, params, &user_proc)
|
|
110
|
+
run_optional_proc("post_render_#{element}".to_sym, self, params, &user_proc)
|
|
111
|
+
store_value(element, params)
|
|
99
112
|
self
|
|
100
113
|
end
|
|
101
114
|
|
|
115
|
+
def create_particle(element)
|
|
116
|
+
Atome.define_method "set_#{element}" do |params, &user_proc|
|
|
117
|
+
particle_creation(element, params, &user_proc)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
102
121
|
def get(element)
|
|
103
122
|
@atome[element]
|
|
104
123
|
end
|
|
@@ -109,7 +128,7 @@ class Atome
|
|
|
109
128
|
virtual_atome.real_atome = @atome
|
|
110
129
|
virtual_atome.property = element
|
|
111
130
|
virtual_atome.user_proc = user_proc
|
|
112
|
-
run_optional_proc("pre_get_#{element}".to_sym, virtual_atome, &user_proc)
|
|
131
|
+
run_optional_proc("pre_get_#{element}".to_sym,self, "virtual_atome", &user_proc)
|
|
113
132
|
virtual_atome
|
|
114
133
|
end
|
|
115
134
|
|
|
@@ -123,7 +142,9 @@ class Atome
|
|
|
123
142
|
end
|
|
124
143
|
|
|
125
144
|
def create_atome(new_atome)
|
|
126
|
-
Atome.
|
|
145
|
+
Atome.define_method "set_#{new_atome}" do |params, &user_proc|
|
|
146
|
+
Atome.new({ new_atome => params }, &user_proc)
|
|
147
|
+
end
|
|
127
148
|
end
|
|
128
149
|
|
|
129
150
|
Universe.connected
|
|
@@ -12,30 +12,9 @@ def circle(params = {}, &proc)
|
|
|
12
12
|
grab(:view).circle(params, &proc)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
grab(:view).image(params, &bloc)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def video(params = {}, &bloc)
|
|
24
|
-
grab(:view).video(params, &bloc)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def color(params = {}, &bloc)
|
|
28
|
-
grab(:view).color(params, &bloc)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def element(params = {}, &bloc)
|
|
32
|
-
grab(:view).element(params, &bloc)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def shadow(params = {}, &bloc)
|
|
36
|
-
grab(:view).shadow(params, &bloc)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def web(params = {}, &bloc)
|
|
40
|
-
grab(:view).web(params, bloc)
|
|
15
|
+
# the method below generate Atome method creation at Object level
|
|
16
|
+
def create_method_at_object_level(element)
|
|
17
|
+
Object.define_method element do |params = nil, &user_proc|
|
|
18
|
+
grab(:view).send(element, params, &user_proc)
|
|
19
|
+
end
|
|
41
20
|
end
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# powerful and simple to use table and list generator
|
|
4
|
+
class Matrix
|
|
5
|
+
attr_accessor :matrix
|
|
6
|
+
|
|
7
|
+
def create_matrix_back( id, style)
|
|
8
|
+
@matrix = Atome.new(
|
|
9
|
+
shape: { type: :shape, renderers: [:browser], id: id, parents: [:view], children: [:matrix_color],
|
|
10
|
+
overflow: :auto }
|
|
11
|
+
)
|
|
12
|
+
@matrix.style(style)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def create_matrix_colors
|
|
16
|
+
Atome.new({ color: { renderers: [:browser], id: :matrix_color, type: :color, parents: [], children: [],
|
|
17
|
+
red: 0, green: 1, blue: 1, alpha: 1 } })
|
|
18
|
+
|
|
19
|
+
Atome.new({ color: { renderers: [:browser], id: :cell_color, type: :color, parents: [], children: [],
|
|
20
|
+
red: 1, green: 0.15, blue: 0.7, alpha: 1 } })
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def create_cells(id, cell_number, number_of_cells, style)
|
|
24
|
+
while cell_number < number_of_cells
|
|
25
|
+
@matrix_dataset[cell_number] = []
|
|
26
|
+
@cells << a = Atome.new(
|
|
27
|
+
shape: { type: :shape, renderers: [:browser], id: id + "_#{cell_number}", parents: [id],
|
|
28
|
+
children: [:cell_color] }
|
|
29
|
+
)
|
|
30
|
+
a.style(style)
|
|
31
|
+
cell_number += 1
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def initialize(params)
|
|
36
|
+
default = { col: 4, row: 4, size: 333, margin: 12, name: :matrix, parent: :view }
|
|
37
|
+
params = default.merge(params)
|
|
38
|
+
nb_of_rows = params[:row]
|
|
39
|
+
nb_of_cols = params[:col]
|
|
40
|
+
matrix_width = params[:width]
|
|
41
|
+
matrix_height = params[:height]
|
|
42
|
+
|
|
43
|
+
@matrix_dataset = []
|
|
44
|
+
@matrix_margin = params[:margin]
|
|
45
|
+
params[:id] = :matrix unless params[:id]
|
|
46
|
+
@matrix_id = params[:id]
|
|
47
|
+
# styles
|
|
48
|
+
@matrix_style = params[:matrix_style]
|
|
49
|
+
@cell_style = params[:cell_style]
|
|
50
|
+
# Colors
|
|
51
|
+
create_matrix_colors
|
|
52
|
+
# now we create the background
|
|
53
|
+
create_matrix_back( @matrix_id, @matrix_style)
|
|
54
|
+
|
|
55
|
+
@nb_of_rows = nb_of_rows.to_i
|
|
56
|
+
@nb_of_cols = nb_of_cols.to_i
|
|
57
|
+
number_of_cells = @nb_of_rows * @nb_of_cols
|
|
58
|
+
@cells = []
|
|
59
|
+
cell_number = 0
|
|
60
|
+
create_cells(@matrix_id, cell_number, number_of_cells, @cell_style)
|
|
61
|
+
|
|
62
|
+
resize_matrix({ width: matrix_width, height: matrix_height })
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def width(val = nil)
|
|
66
|
+
if val
|
|
67
|
+
resize_matrix({ height: height, width: val })
|
|
68
|
+
else
|
|
69
|
+
@matrix.width.value
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def height(val = nil)
|
|
75
|
+
if val
|
|
76
|
+
resize_matrix({ width: width, height: val })
|
|
77
|
+
else
|
|
78
|
+
@matrix.height.value
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def left(val)
|
|
83
|
+
@matrix.left(val)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def right(val)
|
|
87
|
+
@matrix.right(val)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def resize_matrix(params)
|
|
91
|
+
matrix_width = params[:width]
|
|
92
|
+
matrix_height = params[:height]
|
|
93
|
+
cell_width = (matrix_width / @nb_of_cols) - @matrix_margin
|
|
94
|
+
cell_height = (matrix_height / @nb_of_rows) - @matrix_margin
|
|
95
|
+
row = -1
|
|
96
|
+
@cells.each_with_index do |cell, index|
|
|
97
|
+
cell.height = cell_height
|
|
98
|
+
cell.width = cell_width
|
|
99
|
+
row += 1 if index.modulo(@nb_of_cols).zero?
|
|
100
|
+
cell.left(index % @nb_of_cols * (cell_width + @matrix_margin) + @matrix_margin)
|
|
101
|
+
cell.top(row * (cell_height + @matrix_margin) + @matrix_margin)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
@matrix.width = matrix_width + @matrix_margin
|
|
105
|
+
@matrix.height = matrix_height + @matrix_margin
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def get_cell(id)
|
|
109
|
+
grab("#{@matrix_id}_#{id}")
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def delete(val = true)
|
|
113
|
+
@matrix.delete(true) if val
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
attr_reader :cells
|
|
117
|
+
|
|
118
|
+
def name
|
|
119
|
+
@matrix.name
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def get_cell_data(codes, cell_nb)
|
|
123
|
+
codes.each do |proc|
|
|
124
|
+
if proc.is_a? Proc
|
|
125
|
+
assign(cell_nb, &proc)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def add(params)
|
|
131
|
+
nb_of_cols = @nb_of_cols + params[:columns].to_i
|
|
132
|
+
nb_of_rows = @nb_of_rows + params[:rows].to_i
|
|
133
|
+
current_id = @matrix.atome[:id]
|
|
134
|
+
# we delete all children to unbind any event
|
|
135
|
+
@cells.each do |cell|
|
|
136
|
+
cell.delete(true)
|
|
137
|
+
cell.unbind(:all)
|
|
138
|
+
end
|
|
139
|
+
temp_id = "#{current_id}_temporary"
|
|
140
|
+
@matrix.id = temp_id
|
|
141
|
+
old_matrix=grab(temp_id)
|
|
142
|
+
|
|
143
|
+
old_matrix.delete(true)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
Matrix.new({ col: nb_of_cols, row: nb_of_rows, width: 300, height: 300, id: current_id, margin: @matrix_margin,
|
|
147
|
+
matrix_style: @matrix_style,
|
|
148
|
+
cell_style: @cell_style
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
@matrix_dataset.each_with_index do |cell_data, index|
|
|
152
|
+
get_cell_data(cell_data, index)
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def assign(cell_nb = nil, &proc)
|
|
157
|
+
current_cell = grab("#{@matrix_id}_#{cell_nb}")
|
|
158
|
+
if proc
|
|
159
|
+
@matrix_dataset[cell_nb] << proc
|
|
160
|
+
current_cell.instance_exec(&proc) if proc.is_a? Proc
|
|
161
|
+
else
|
|
162
|
+
@matrix_dataset[cell_nb]
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def reformat(params)
|
|
167
|
+
@nb_of_rows = params[:rows]
|
|
168
|
+
@nb_of_cols = params[:cols]
|
|
169
|
+
resize_matrix({ height: height, width: width })
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# ping method
|
|
3
4
|
class Atome
|
|
4
|
-
def
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
end
|
|
11
|
-
end
|
|
5
|
+
def up?(host, _my_proc)
|
|
6
|
+
check = Net::Ping::External.new(host)
|
|
7
|
+
return unless check.ping?
|
|
8
|
+
|
|
9
|
+
puts 'ping respond!!'
|
|
10
|
+
end
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
puts up
|
|
15
|
-
# end
|
|
12
|
+
def ping(address, my_proc: false)
|
|
13
|
+
puts up(address, my_proc) # prints "true" if ping replies
|
|
16
14
|
end
|
|
17
15
|
end
|
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
generator = Genesis.generator
|
|
4
4
|
|
|
5
|
+
generator.build_atome(:animation)
|
|
5
6
|
generator.build_atome(:color)
|
|
6
7
|
generator.build_sanitizer(:color) do |params|
|
|
7
8
|
parent_found = found_parents_and_renderers[:parent]
|
|
8
9
|
render_found = found_parents_and_renderers[:renderers]
|
|
9
10
|
default_params = { renderers: render_found, id: "color_#{Universe.atomes.length}", type: :color,
|
|
10
|
-
|
|
11
|
+
attach: parent_found,
|
|
11
12
|
red: 0, green: 0, blue: 0, alpha: 1 }
|
|
12
13
|
params = create_color_hash(params) unless params.instance_of? Hash
|
|
13
|
-
default_params.merge!(params)
|
|
14
|
+
new_params = default_params.merge!(params)
|
|
15
|
+
atome[:color] = new_params
|
|
16
|
+
new_params
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
generator.build_sanitizer(:video) do |params|
|
|
@@ -21,6 +24,15 @@ generator.build_sanitizer(:video) do |params|
|
|
|
21
24
|
default_params.merge!(params)
|
|
22
25
|
end
|
|
23
26
|
generator.build_atome(:shadow)
|
|
27
|
+
|
|
28
|
+
generator.build_sanitizer(:shadow) do |params|
|
|
29
|
+
parent_found = found_parents_and_renderers[:parent]
|
|
30
|
+
render_found = found_parents_and_renderers[:renderers]
|
|
31
|
+
default_params = { renderers: render_found, id: "shadow_#{Universe.atomes.length}", type: :shadow,
|
|
32
|
+
attach: parent_found,
|
|
33
|
+
red: 0, green: 0, blue: 0, alpha: 1 , blur: 3, left: 3, top: 3}
|
|
34
|
+
default_params.merge!(params)
|
|
35
|
+
end
|
|
24
36
|
generator.build_atome(:shape)
|
|
25
37
|
generator.build_atome(:text)
|
|
26
38
|
generator.build_atome(:image)
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
generator = Genesis.generator
|
|
4
4
|
|
|
5
|
+
# touch
|
|
5
6
|
generator.build_particle(:touch)
|
|
7
|
+
# video
|
|
6
8
|
generator.build_particle(:play)
|
|
7
9
|
generator.build_particle(:time)
|
|
8
10
|
generator.build_particle(:pause)
|
|
@@ -11,11 +13,34 @@ generator.build_particle(:fullscreen)
|
|
|
11
13
|
generator.build_particle(:mute)
|
|
12
14
|
# TODO : add the at event to ny particle : (width, left, ...) maybe use monitor particle
|
|
13
15
|
generator.build_particle(:at)
|
|
16
|
+
# drag
|
|
14
17
|
generator.build_particle(:drag)
|
|
15
18
|
generator.build_sanitizer(:drag) do |params|
|
|
16
19
|
params = { move: true } if params == true
|
|
17
20
|
params
|
|
18
21
|
end
|
|
22
|
+
# sort
|
|
19
23
|
generator.build_particle(:sort) do |_value, sort_proc|
|
|
20
24
|
@sort_proc = sort_proc
|
|
21
25
|
end
|
|
26
|
+
|
|
27
|
+
# animation
|
|
28
|
+
generator.build_particle(:targets)
|
|
29
|
+
generator.build_particle(:start)
|
|
30
|
+
generator.build_option(:pre_render_start) do |_value, user_proc|
|
|
31
|
+
@animation_start_proc = user_proc
|
|
32
|
+
end
|
|
33
|
+
generator.build_particle(:stop)
|
|
34
|
+
generator.build_option(:pre_render_stop) do |_value, user_proc|
|
|
35
|
+
@animation_stop_proc = user_proc
|
|
36
|
+
end
|
|
37
|
+
generator.build_particle(:begin)
|
|
38
|
+
generator.build_particle(:end)
|
|
39
|
+
generator.build_particle(:duration)
|
|
40
|
+
generator.build_particle(:mass)
|
|
41
|
+
generator.build_particle(:damping)
|
|
42
|
+
generator.build_particle(:stiffness)
|
|
43
|
+
generator.build_particle(:velocity)
|
|
44
|
+
generator.build_particle(:repeat)
|
|
45
|
+
generator.build_particle(:ease)
|
|
46
|
+
generator.build_particle(:unbind)
|
|
@@ -25,3 +25,31 @@ generator.build_option(:pre_render_parents) do |parents_id_found|
|
|
|
25
25
|
parents_found.children << id if parents_found
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
|
+
generator.build_particle(:name)
|
|
29
|
+
|
|
30
|
+
generator.build_particle(:active)
|
|
31
|
+
|
|
32
|
+
generator.build_particle(:attach) do |parents|
|
|
33
|
+
parents.each do |parent|
|
|
34
|
+
grab(parent).atome[:attached] = [atome[:id]]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
generator.build_particle(:attached) do |targets|
|
|
39
|
+
targets.each do |target|
|
|
40
|
+
grab(target).attach([atome[:id]])
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
generator.build_particle(:clones) do |clones_found|
|
|
45
|
+
clones_found.each_with_index do |clone_found, index|
|
|
46
|
+
clone_id="#{particles[:id]}_clone_#{index}"
|
|
47
|
+
original_id=atome[:id]
|
|
48
|
+
clone_found[:id] = clone_id
|
|
49
|
+
clone_found = particles.merge(clone_found)
|
|
50
|
+
cloned_atome=Atome.new({ shape: clone_found })
|
|
51
|
+
cloned_atome.monitor({ atomes: [original_id], particles: [:width, :attached,:height ]}) do |_atome, particle, value|
|
|
52
|
+
cloned_atome.send(particle,value)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -6,5 +6,26 @@ generator.build_particle(:red)
|
|
|
6
6
|
generator.build_particle(:green)
|
|
7
7
|
generator.build_particle(:blue)
|
|
8
8
|
generator.build_particle(:alpha)
|
|
9
|
+
generator.build_particle(:diffusion)
|
|
9
10
|
generator.build_particle(:visual)
|
|
10
11
|
generator.build_particle(:overflow)
|
|
12
|
+
generator.build_particle(:edit)
|
|
13
|
+
generator.build_particle(:style)
|
|
14
|
+
generator.build_option(:pre_render_style) do |styles_send, _user_proc|
|
|
15
|
+
styles_send.each do |particle_send, value|
|
|
16
|
+
send(particle_send, value)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
generator.build_particle(:hide)
|
|
20
|
+
|
|
21
|
+
generator.build_particle(:remove) do |particle_to_remove|
|
|
22
|
+
case particle_to_remove
|
|
23
|
+
when :color
|
|
24
|
+
send(particle_to_remove, :black)
|
|
25
|
+
when :shadow
|
|
26
|
+
# TODO : code to write
|
|
27
|
+
puts 'code to write'
|
|
28
|
+
else
|
|
29
|
+
send(particle_to_remove, 0)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -11,8 +11,23 @@ end
|
|
|
11
11
|
generator.build_particle(:broadcast)
|
|
12
12
|
generator.build_particle(:additional)
|
|
13
13
|
generator.build_particle(:data)
|
|
14
|
-
generator.build_particle(:delete) do
|
|
15
|
-
|
|
14
|
+
generator.build_particle(:delete) do |params|
|
|
15
|
+
if params == true
|
|
16
|
+
# the machine delete the current atome
|
|
17
|
+
Universe.delete(@atome[:id])
|
|
18
|
+
elsif params[:id]
|
|
19
|
+
# the machine try to an atome by it's ID and delete it
|
|
20
|
+
grab(params[:id]).delete(true)
|
|
21
|
+
elsif instance_of? Hash
|
|
22
|
+
# the machine try to find the sub particle id and remove it eg a.delete(monitor: :my_monitor) remove the monitor
|
|
23
|
+
# with id my_monitor
|
|
24
|
+
params.each do |param, value|
|
|
25
|
+
atome[param][value] = nil
|
|
26
|
+
end
|
|
27
|
+
else
|
|
28
|
+
# the machine try to reset the current particle(params), eg a.delete(:left) => left: 0
|
|
29
|
+
send(params,0)
|
|
30
|
+
end
|
|
16
31
|
end
|
|
17
32
|
generator.build_particle(:clear)
|
|
18
33
|
generator.build_particle(:path)
|
|
@@ -29,3 +44,6 @@ generator.build_particle(:read) do |file, proc|
|
|
|
29
44
|
send("#{renderer}_reader", file, &proc)
|
|
30
45
|
end
|
|
31
46
|
end
|
|
47
|
+
|
|
48
|
+
generator.build_particle(:cursor)
|
|
49
|
+
|
|
@@ -28,11 +28,11 @@ class Atome
|
|
|
28
28
|
|
|
29
29
|
def auto_render_generator(element)
|
|
30
30
|
Universe.renderer_list.each do |render_engine|
|
|
31
|
-
|
|
31
|
+
build_render("#{render_engine}_#{element}")
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def
|
|
35
|
+
def build_render(renderer_name, &method_proc)
|
|
36
36
|
new_render_engine(renderer_name, &method_proc)
|
|
37
37
|
end
|
|
38
38
|
|
|
@@ -37,7 +37,7 @@ Atome.new(
|
|
|
37
37
|
Atome.new(
|
|
38
38
|
{ shape: { renderers: default_render, id: :view, type: :shape, parents: [:user_view], children: [],
|
|
39
39
|
left: 0, right: 0, top: 0, bottom: 0, overflow: :auto,
|
|
40
|
-
color: { renderers: default_render, id: :view_color, type: :color,
|
|
40
|
+
color: { renderers: default_render, id: :view_color, type: :color, attach: [:view],
|
|
41
41
|
red: 0.15, green: 0.15, blue: 0.15, alpha: 1 } } }
|
|
42
42
|
)
|
|
43
43
|
|