ffi-efl 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -187,15 +187,12 @@ describe "Efl::Elm #{Efl::Elm.version.full}" do
187
187
  @iwin.activate
188
188
  @iwin.content_set o1
189
189
  @iwin.content.should == o1.to_ptr
190
- @iwin.content?.should == o1.to_ptr
191
190
  @iwin.content_get.should === o1.to_ptr
192
191
  @iwin.content= o2
193
192
  @iwin.content.should === o2.to_ptr
194
- @iwin.content?.should === o2.to_ptr
195
193
  @iwin.content_get.should === o2.to_ptr
196
194
  @iwin.content_unset
197
195
  @iwin.content.should == FFI::Pointer::NULL
198
- @iwin.content?.should == FFI::Pointer::NULL
199
196
  @iwin.content_get.should == FFI::Pointer::NULL
200
197
  o1.free
201
198
  o2.free
@@ -1,8 +1,20 @@
1
1
  #! /usr/bin/env ruby
2
2
  # -*- coding: UTF-8 -*-
3
3
  #
4
+ require 'efl/elementary'
5
+ require 'efl/edje'
4
6
  require 'efl'
5
7
  #
8
+ PREFIX=`pkg-config --variable=prefix ecore`.strip
9
+ if PREFIX.empty?
10
+ puts "unable to determine Efl::PREFIX using pkg-config, images will not be available"
11
+ end
12
+ PACKAGE_DATA_DIR = File.join PREFIX, 'share', 'elementary'
13
+
14
+ Dir.glob( File.join File.dirname(__FILE__), 'tests', '*.rb').each do |f|
15
+ load f
16
+ end
17
+ #
6
18
  include Efl;
7
19
  #
8
20
  TESTS = [
@@ -150,7 +162,7 @@ class TestWin < Elm::ElmWin
150
162
  #
151
163
  def initialize name, title
152
164
  super FFI::MemoryPointer::NULL, name
153
- title = title
165
+ self.title = title
154
166
  feed
155
167
  smart_callback_add 'delete,request', method(:on_delete)
156
168
  end
@@ -188,7 +200,6 @@ class TestWin < Elm::ElmWin
188
200
  li.size_hint_weight_expand
189
201
  li.size_hint_align_set_fill
190
202
  @bx0.pack_end li
191
- li.show
192
203
  end
193
204
  @idx = Elm::ElmIndex.new self do |idx|
194
205
  idx.smart_callback_add 'delay,changed', method(:index_changed)
@@ -197,19 +208,32 @@ class TestWin < Elm::ElmWin
197
208
  idx.show
198
209
  end
199
210
  ch = nil
200
- TESTS.each do |l,m|
201
- it = @li.item_append l, nil, nil, method(:fake)
211
+ TESTS.sort.each do |l,m|
212
+ icon = nil
213
+ if Tests.respond_to? m
214
+ icon = Elm::ElmIcon.new self
215
+ icon.file = "#{PACKAGE_DATA_DIR}/images/icon_00.png", nil
216
+ icon.size_hint_min = 20,20
217
+ end
218
+ it = @li.item_append l, nil, icon, method(:try_test), FFI::MemoryPointer.from_string(m.to_s)
219
+ it.del_cb_set method(:free_list_item)
202
220
  if l[0]!=ch
203
221
  ch = l[0]
204
- @idx.item_append ch, it
222
+ @idx.item_append ch.to_s, it
205
223
  end
206
224
  end
207
225
  @idx.item_go 0
208
226
  @li.go
227
+ @li.show
209
228
  end
210
229
  #
211
- def fake data, evas_obj, event_info
212
- puts 'FAKE'
230
+ def try_test data, evas_obj, event_info
231
+ fct = data.read_string
232
+ begin
233
+ Tests.send fct
234
+ rescue NoMethodError
235
+ puts "#{fct} not implemeneted yet"
236
+ end
213
237
  end
214
238
  #
215
239
  def tg_changed data, evas_obj, event_info
@@ -220,13 +244,18 @@ class TestWin < Elm::ElmWin
220
244
  Native.elm_list_item_show event_info
221
245
  end
222
246
  #
247
+ def free_list_item data, evas_obj, event_info
248
+ # free FFI::MemoryPointer.from_string m.to_s
249
+ data.free
250
+ end
251
+ #
223
252
  def on_delete data, evas_object, event_info
224
253
  Elm.exit
225
254
  end
226
255
  end
227
256
  #
228
257
  def elm_main
229
- win = TestWin.new 'test_elementare', 'Elementary Tests'
258
+ win = TestWin.new 'test_elementary', 'Elementary Tests'
230
259
  win.evas_object_resize 320, 480
231
260
  win.show
232
261
  end
@@ -234,8 +263,6 @@ end
234
263
  Elm.init
235
264
  #
236
265
  Native.elm_app_info_set elm_main, 'elementary', 'images/logo.png'
237
- Native.elm_app_compile_bin_dir_set PACKAGE_BIN_DIR
238
- Native.elm_app_compile_data_dir_set PACKAGE_DATA_DIR
239
266
  #
240
267
  Elm.run
241
268
  Elm.shutdown
@@ -0,0 +1,132 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ module Tests
5
+ #
6
+ class TestActionSlider < Efl::Elm::ElmWin
7
+ def initialize name, title, fct
8
+ super nil, name
9
+ self.title = title
10
+ self.autodel = true
11
+ self.send fct
12
+ self.resize 320, 400
13
+ self.show
14
+ end
15
+ def simple
16
+ @bg = Elm::ElmBg.new self do |bg|
17
+ bg.size_hint_weight_set Evas::EVAS_HINT_EXPAND, 0
18
+ self.resize_object_add bg
19
+ bg.show
20
+ end
21
+ @bx = Elm::ElmBox.new self do |bx|
22
+ bx.size_hint_weight_set Evas::EVAS_HINT_EXPAND, 0
23
+ self.resize_object_add bx
24
+ bx.show
25
+ end
26
+ as_pos = Native.enum_type :elm_actionslider_pos
27
+ # standards calls
28
+ as = Elm::ElmActionSlider.new self do |as|
29
+ as.size_hint_weight_set Evas::EVAS_HINT_EXPAND, 0
30
+ as.size_hint_align_set Evas::EVAS_HINT_FILL, 0
31
+ as.text_part = "left", "Snooze"
32
+ as.text_part = "center", nil
33
+ as.text_part = "right", "Stop"
34
+ as.indicator_pos = :elm_actionslider_right
35
+ as.magnet_pos = :elm_actionslider_right
36
+ as.enabled_pos = as_pos[:elm_actionslider_left]|as_pos[:elm_actionslider_right]
37
+ as.smart_callback_add "selected", method(:cb_pos_selected)
38
+ as.smart_callback_add "pos_changed", method(:cb_position_change_magnetic)
39
+ as.show
40
+ end
41
+ @bx.pack_end as
42
+ # use xxx_set helpers
43
+ as = Elm::ElmActionSlider.new self do |as|
44
+ as.size_hint_weight_set Evas::EVAS_HINT_EXPAND, 0
45
+ as.size_hint_align_set Evas::EVAS_HINT_FILL, 0
46
+ as.texts_set "Snooze", nil, "Stop"
47
+ as.indicator_set 'c'
48
+ as.magnet_set 'c'
49
+ as.enabled_set 'lr'
50
+ as.smart_callback_add "selected", method(:cb_pos_selected)
51
+ as.show
52
+ end
53
+ @bx.pack_end as
54
+ # use xxx = helpers
55
+ as = Elm::ElmActionSlider.new self do |as|
56
+ as.size_hint_weight_set Evas::EVAS_HINT_EXPAND, 0
57
+ as.size_hint_align_set Evas::EVAS_HINT_FILL, 0
58
+ as.style = "bar"
59
+ as.texts = nil, "Accept", "Reject"
60
+ as.indicator = 'l'
61
+ as.magnet = 'cr'
62
+ as.enabled = 'cr'
63
+ as.smart_callback_add "selected", method(:cb_pos_selected)
64
+ as.show
65
+ end
66
+ @bx.pack_end as
67
+ # use setup
68
+ as = Elm::ElmActionSlider.new self do |as|
69
+ as.size_hint_weight_set Evas::EVAS_HINT_EXPAND, 0
70
+ as.size_hint_align_set Evas::EVAS_HINT_FILL, 0
71
+ as.style = "bar"
72
+ as.text = "Go"
73
+ as.setup [nil, "Accept", "Reject"], 'l', 'l', 'a'
74
+ as.smart_callback_add "selected", method(:cb_pos_selected)
75
+ as.smart_callback_add "pos_changed", method(:cb_position_change_magnetic)
76
+ as.show
77
+ end
78
+ @bx.pack_end as
79
+ as = Elm::ElmActionSlider.new self do |as|
80
+ as.size_hint_weight_set Evas::EVAS_HINT_EXPAND, 0
81
+ as.size_hint_align_set Evas::EVAS_HINT_FILL, 0
82
+ as.text = "Go"
83
+ as.setup ["Left", "Center", "right"], 'l', 'a'
84
+ as.smart_callback_add "selected", method(:cb_pos_selected)
85
+ as.show
86
+ end
87
+ @bx.pack_end as
88
+ as = Elm::ElmActionSlider.new self do |as|
89
+ as.size_hint_weight_set Evas::EVAS_HINT_EXPAND, 0
90
+ as.size_hint_align_set Evas::EVAS_HINT_FILL, 0
91
+ as.text = "Go"
92
+ as.setup ["Enable", "Magnet", "Disable"], 'c', 'c'
93
+ as.smart_callback_add "selected", method(:cb_pos_selected)
94
+ as.smart_callback_add "pos_changed", method(:cb_magnet_enable_disable)
95
+ as.show
96
+ end
97
+ @bx.pack_end as
98
+ end
99
+ def cb_pos_selected data, evas_obj, event_info
100
+ as = Elm::ElmActionSlider.new evas_obj
101
+ puts "Selection #{event_info.null? ? 'NULL' : event_info.read_string}"
102
+ puts " label: #{Elm::ElmActionSlider.new(evas_obj).selected_label}"
103
+ end
104
+ def cb_position_change_magnetic data, evas_obj, event_info
105
+ as = Elm::ElmActionSlider.new evas_obj
106
+ return if event_info.null?
107
+ case event_info.read_string
108
+ when "left"
109
+ as.magnet_pos = :elm_actionslider_left
110
+ when "right"
111
+ as.magnet_pos = :elm_actionslider_right
112
+ end
113
+ end
114
+ def cb_magnet_enable_disable data, evas_obj, event_info
115
+ as = Elm::ElmActionSlider.new evas_obj
116
+ return if event_info.null?
117
+ case event_info.read_string
118
+ when "left"
119
+ as.magnet_pos = :elm_actionslider_center
120
+ when "right"
121
+ as.magnet_pos = :elm_actionslider_none
122
+ end
123
+ end
124
+ end
125
+ #
126
+ def self.test_actionslider
127
+ TestActionSlider.new 'actionslider', 'Actionslider', :simple
128
+ end
129
+ #
130
+ end
131
+ #
132
+ # EOF
@@ -0,0 +1,151 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ module Tests
5
+ #
6
+ class TestBg < Efl::Elm::ElmWin
7
+ def initialize name, title, fct
8
+ super nil, name
9
+ self.title = title
10
+ self.autodel = true
11
+ self.send fct
12
+ @bg.size_hint_min = 160, 160
13
+ @bg.size_hint_max = 640, 640
14
+ self.resize 320, 230
15
+ self.show
16
+ end
17
+ def plain_bg
18
+ @bg = Elm::ElmBg.new self do |bg|
19
+ bg.size_hint_weight_expand
20
+ self.resize_object_add bg
21
+ bg.show
22
+ end
23
+ end
24
+ def image_bg
25
+ @bg = Elm::ElmBg.new self do |bg|
26
+ bg.file = "#{PACKAGE_DATA_DIR}/images/plant_01.jpg", nil
27
+ bg.size_hint_weight_expand
28
+ self.resize_object_add bg
29
+ bg.show
30
+ end
31
+ end
32
+ def options_bg
33
+ plain_bg
34
+ @bx = Elm::ElmBox.new self do |bx|
35
+ bx.size_hint_weight_expand
36
+ self.resize_object_add bx
37
+ bx.show
38
+ end
39
+ @o_bg = Elm::ElmBg.new self do |bg|
40
+ bg.file = "#{PACKAGE_DATA_DIR}/images/plant_01.jpg", nil
41
+ bg.size_hint_weight_expand
42
+ bg.size_hint_align_fill
43
+ @bx.pack_end bg
44
+ bg.show
45
+ end
46
+ @hbx = Elm::ElmBox.new self do |bx|
47
+ bx.horizontal = true
48
+ bx.size_hint_weight_expand_fill
49
+ bx.size_hint_align_fill
50
+ end
51
+ @rdg = Elm::ElmRadio.new self do |r|
52
+ r.state_value = :elm_bg_option_center
53
+ r.text = "Center"
54
+ r.size_hint_weight_expand_fill
55
+ r.smart_callback_add "changed", method(:cb_radio_changed)
56
+ @hbx.pack_end r
57
+ r.show
58
+ end
59
+ Elm::ElmRadio.new self do |r|
60
+ r.state_value = :elm_bg_option_scale
61
+ r.group_add @rdg
62
+ r.text = "Scale"
63
+ r.size_hint_weight_expand_fill
64
+ r.smart_callback_add "changed", method(:cb_radio_changed)
65
+ @hbx.pack_end r
66
+ r.show
67
+ end
68
+ Elm::ElmRadio.new self do |r|
69
+ r.state_value = :elm_bg_option_stretch
70
+ r.group_add @rdg
71
+ r.text = "Stretch"
72
+ r.size_hint_weight_expand_fill
73
+ r.smart_callback_add "changed", method(:cb_radio_changed)
74
+ @hbx.pack_end r
75
+ r.show
76
+ end
77
+ Elm::ElmRadio.new self do |r|
78
+ r.state_value = :elm_bg_option_tile
79
+ r.group_add @rdg
80
+ r.text = "Tile"
81
+ r.size_hint_weight_expand_fill
82
+ r.smart_callback_add "changed", method(:cb_radio_changed)
83
+ @hbx.pack_end r
84
+ r.show
85
+ end
86
+ @rdg.value_set :elm_bg_option_scale
87
+ Elm::ElmCheck.new self do |ck|
88
+ ck.text = "Show Overlay"
89
+ ck.size_hint_weight_expand_fill
90
+ ck.smart_callback_add "changed", method(:cb_overlay_changed)
91
+ @hbx.pack_end ck
92
+ ck.show
93
+ end
94
+ Elm::ElmSpinner.new self do |sp|
95
+ sp.style = "vertical"
96
+ sp.min_max = 1, 4
97
+ sp.label_format = "%.0f"
98
+ sp.editable = false
99
+ sp.special_value_add 1, "White"
100
+ sp.special_value_add 2, "Red"
101
+ sp.special_value_add 3, "Blue"
102
+ sp.special_value_add 4, "Green"
103
+ sp.size_hint_weight_expand
104
+ sp.size_hint_align_fill
105
+ sp.smart_callback_add "changed", method(:cb_color_changed)
106
+ @hbx.pack_end sp
107
+ sp.show
108
+ end
109
+ @bx.pack_end @hbx
110
+ @hbx.show
111
+ end
112
+ def cb_radio_changed data, evas_obj, event_info
113
+ @o_bg.option = Elm::ElmRadio.new(evas_obj).value
114
+ end
115
+ def cb_overlay_changed data, evas_obj, event_info
116
+ if Elm::ElmCheck.new(evas_obj).state
117
+ over = @o_bg.parent_widget.evas.edje_object_add
118
+ over.file = "#{PACKAGE_DATA_DIR}/objects/test.edj", "bg_overlay"
119
+ @o_bg.overlay = over
120
+ else
121
+ @o_bg.overlay = FFI::Pointer::NULL
122
+ end
123
+ end
124
+ def cb_color_changed data, evas_obj, event_info
125
+ case Elm::ElmSpinner.new(evas_obj).value
126
+ when 1.0
127
+ @o_bg.color = 255, 255, 255
128
+ when 2.0
129
+ @o_bg.color = 255, 0, 0
130
+ when 3.0
131
+ @o_bg.color = 0, 0, 255
132
+ when 4.0
133
+ @o_bg.color = 0, 255, 0
134
+ end
135
+ end
136
+ end
137
+ #
138
+ def self.test_bg_plain
139
+ TestBg.new 'bg-plain', 'Bg Plain', :plain_bg
140
+ end
141
+ #
142
+ def self.test_bg_image
143
+ TestBg.new 'bg-image', 'Bg Image', :image_bg
144
+ end
145
+ def self.test_bg_options
146
+ TestBg.new 'bg-options', 'Bg Options', :options_bg
147
+ end
148
+ #
149
+ end
150
+ #
151
+ # EOF
@@ -0,0 +1,147 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ module Tests
5
+ #
6
+ class TestBox < Efl::Elm::ElmWin
7
+ def initialize name, title, fct
8
+ super nil, name
9
+ self.title = title
10
+ self.autodel = true
11
+ @bg = Elm::ElmBg.new self do |bg|
12
+ bg.size_hint_weight_expand
13
+ self.resize_object_add bg
14
+ bg.show
15
+ end
16
+ self.send fct
17
+ self.show
18
+ end
19
+ #
20
+ def box_vert
21
+ @bx = Elm::ElmBox.new self do |bx|
22
+ bx.size_hint_weight_expand
23
+ self.resize_object_add bx
24
+ bx.show
25
+ end
26
+ icons = []
27
+ (0..2).each do
28
+ icons << Elm::ElmIcon.new(self) do |ico|
29
+ ico.file = "#{PACKAGE_DATA_DIR}/images/logo_small.png", nil
30
+ ico.scale = false, false
31
+ @bx.pack_end ico
32
+ ico.show
33
+ end
34
+ end
35
+ icons[0].size_hint_align = 0.5, 0.5
36
+ icons[1].size_hint_align = 0.0, 0.5
37
+ icons[2].size_hint_align = Efl::Evas::EVAS_HINT_EXPAND, 0.5
38
+ end
39
+ #
40
+ def box_vert2
41
+ @bx = Elm::ElmBox.new self do |bx|
42
+ bx.padding = 10, 10
43
+ self.resize_object_add bx
44
+ bx.size_hint_weight_expand
45
+ bx.show
46
+ end
47
+ (1..5).each do |n|
48
+ bt = Efl::Elm::ElmButton.new self
49
+ bt.text = "Button #{n}"
50
+ bt.size_hint_align_fill
51
+ bt.size_hint_weight = 0.0, 0.0
52
+ bt.smart_callback_add "clicked", method(:del_cb)
53
+ @bx.pack_end bt
54
+ bt.show
55
+ end
56
+ end
57
+ #
58
+ def del_cb data, evas_obj, event_info
59
+ o = Efl::Elm::ElmObject.new(evas_obj)
60
+ @bx.unpack o
61
+ o.move 0, 0
62
+ o.color = 128, 64, 0, 128
63
+ end
64
+ #
65
+ def box_horiz
66
+ @bx = Elm::ElmBox.new self do |bx|
67
+ bx.horizontal = true
68
+ self.resize_object_add bx
69
+ bx.size_hint_weight_expand
70
+ bx.show
71
+ end
72
+ icons = []
73
+ (0..2).each do
74
+ icons << Elm::ElmIcon.new(self) do |ico|
75
+ ico.file = "#{PACKAGE_DATA_DIR}/images/logo_small.png", nil
76
+ ico.scale = false, false
77
+ @bx.pack_end ico
78
+ ico.show
79
+ end
80
+ end
81
+ icons[0].size_hint_align = 0.5, 0.5
82
+ icons[1].size_hint_align = 0.5, 0.0
83
+ icons[2].size_hint_align = 0.0, Efl::Evas::EVAS_HINT_EXPAND
84
+ end
85
+ #
86
+ def box_transition
87
+ @bx = Elm::ElmBox.new self do |bx|
88
+ self.resize_object_add bx
89
+ bx.size_hint_weight_expand
90
+ bx.show
91
+ end
92
+ (1..3).each do |n|
93
+ bt = Efl::Elm::ElmButton.new self
94
+ bt.text = "Button #{n}"
95
+ bt.size_hint_weight_expand
96
+ # bt.size_hint_align_fill
97
+ bt.smart_callback_add "clicked", method(:del_cb)
98
+ @bx.pack_end bt
99
+ bt.resize 100, 100
100
+ bt.show
101
+ end
102
+ @idx = 0
103
+ @transitions = [
104
+ Efl::Native.find_variable('evas_object_box_layout_vertical'),
105
+ Efl::Native.find_variable('evas_object_box_layout_horizontal'),
106
+ Efl::Native.find_variable('evas_object_box_layout_stack'),
107
+ Efl::Native.find_variable('evas_object_box_layout_homogeneous_vertical'),
108
+ Efl::Native.find_variable('evas_object_box_layout_homogeneous_horizontal'),
109
+ Efl::Native.find_variable('evas_object_box_layout_flow_vertical'),
110
+ Efl::Native.find_variable('evas_object_box_layout_flow_horizontal'),
111
+ Efl::Native.find_variable('evas_object_box_layout_stack'),
112
+ ]
113
+ self.resize 300, 300
114
+ @bx.resize 300, 300
115
+ @bx.layout = @transitions[@idx], nil, nil
116
+ self.show
117
+ transition_change
118
+ end
119
+ #
120
+ def transition_change data=nil
121
+ last_layout = @transitions[@idx]
122
+ @idx = (@idx+1) % @transitions.length
123
+ next_layout = @transitions[@idx]
124
+ transition = Efl::Native.elm_box_transition_new 1.0, last_layout, nil, nil, next_layout, nil, nil, method(:transition_change), nil
125
+ transition_fct = Efl::Native.find_variable('elm_box_layout_transition')
126
+ transition_free = Efl::Native.find_variable('elm_box_transition_free')
127
+ @bx.layout = transition_fct, transition, transition_free
128
+ end
129
+ #
130
+ end
131
+ #
132
+ def self.test_box_vert
133
+ TestBox.new 'box-vert', 'Box Vert', :box_vert
134
+ end
135
+ def self.test_box_vert2
136
+ TestBox.new 'box-vert', 'Box Vert', :box_vert2
137
+ end
138
+ def self.test_box_horiz
139
+ TestBox.new 'box-horiz', 'Box Horiz', :box_horiz
140
+ end
141
+ def self.test_box_transition
142
+ TestBox.new 'box-transition', 'Box Transition', :box_transition
143
+ end
144
+ #
145
+ end
146
+ #
147
+ # EOF