ffi-efl 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +7 -0
  2. data/Changelog +6 -0
  3. data/README.md +9 -6
  4. data/TODO +7 -0
  5. data/ffi-efl.gemspec +1 -1
  6. data/lib/efl.rb +1 -31
  7. data/lib/efl/elm/elm_panes.rb +1 -1
  8. data/lib/efl/native.rb +30 -0
  9. data/lib/efl/native/ecore.rb +1 -1
  10. data/lib/efl/native/ecore_evas.rb +8 -62
  11. data/lib/efl/native/ecore_getopt.rb +1 -1
  12. data/lib/efl/native/ecore_input.rb +1 -1
  13. data/lib/efl/native/edje.rb +1 -1
  14. data/lib/efl/native/eet.rb +1 -1
  15. data/lib/efl/native/eeze.rb +1 -1
  16. data/lib/efl/native/eeze_disk.rb +1 -1
  17. data/lib/efl/native/eeze_net.rb +1 -1
  18. data/lib/efl/native/efreet.rb +1 -1
  19. data/lib/efl/native/efreet_base.rb +1 -1
  20. data/lib/efl/native/efreet_desktop.rb +1 -1
  21. data/lib/efl/native/efreet_icon.rb +1 -1
  22. data/lib/efl/native/efreet_ini.rb +1 -1
  23. data/lib/efl/native/efreet_menu.rb +1 -1
  24. data/lib/efl/native/efreet_mime.rb +1 -1
  25. data/lib/efl/native/efreet_trash.rb +1 -1
  26. data/lib/efl/native/efreet_uri.rb +1 -1
  27. data/lib/efl/native/efreet_utils.rb +1 -1
  28. data/lib/efl/native/eina.rb +1 -1
  29. data/lib/efl/native/eina_file.rb +1 -1
  30. data/lib/efl/native/eina_hash.rb +1 -1
  31. data/lib/efl/native/eina_list.rb +1 -1
  32. data/lib/efl/native/eina_log.rb +1 -1
  33. data/lib/efl/native/eina_types.rb +1 -1
  34. data/lib/efl/native/eina_xattr.rb +1 -1
  35. data/lib/efl/native/eio.rb +1 -1
  36. data/lib/efl/native/elementary.rb +1 -1
  37. data/lib/efl/native/elm/elm_actionslider.rb +1 -1
  38. data/lib/efl/native/elm/elm_app.rb +1 -1
  39. data/lib/efl/native/elm/elm_bg.rb +1 -1
  40. data/lib/efl/native/elm/elm_box.rb +1 -1
  41. data/lib/efl/native/elm/elm_bubble.rb +1 -1
  42. data/lib/efl/native/elm/elm_button.rb +1 -1
  43. data/lib/efl/native/elm/elm_cache.rb +1 -1
  44. data/lib/efl/native/elm/elm_calendar.rb +1 -1
  45. data/lib/efl/native/elm/elm_check.rb +1 -1
  46. data/lib/efl/native/elm/elm_clock.rb +1 -1
  47. data/lib/efl/native/elm/elm_cnp.rb +1 -1
  48. data/lib/efl/native/elm/elm_colorselector.rb +1 -1
  49. data/lib/efl/native/elm/elm_config.rb +1 -1
  50. data/lib/efl/native/elm/elm_conform.rb +1 -1
  51. data/lib/efl/native/elm/elm_ctxpopup.rb +1 -1
  52. data/lib/efl/native/elm/elm_cursor.rb +1 -1
  53. data/lib/efl/native/elm/elm_datetime.rb +1 -1
  54. data/lib/efl/native/elm/elm_dayselector.rb +1 -1
  55. data/lib/efl/native/elm/elm_debug.rb +1 -1
  56. data/lib/efl/native/elm/elm_diskselector.rb +1 -1
  57. data/lib/efl/native/elm/elm_entry.rb +1 -1
  58. data/lib/efl/native/elm/elm_fileselector.rb +1 -1
  59. data/lib/efl/native/elm/elm_fileselector_button.rb +1 -1
  60. data/lib/efl/native/elm/elm_fileselector_entry.rb +1 -1
  61. data/lib/efl/native/elm/elm_finger.rb +1 -1
  62. data/lib/efl/native/elm/elm_flip.rb +1 -1
  63. data/lib/efl/native/elm/elm_flipselector.rb +1 -1
  64. data/lib/efl/native/elm/elm_focus.rb +1 -1
  65. data/lib/efl/native/elm/elm_frame.rb +1 -1
  66. data/lib/efl/native/elm/elm_gen.rb +1 -1
  67. data/lib/efl/native/elm/elm_general.rb +1 -1
  68. data/lib/efl/native/elm/elm_gengrid.rb +1 -1
  69. data/lib/efl/native/elm/elm_genlist.rb +1 -1
  70. data/lib/efl/native/elm/elm_gesture_layer.rb +1 -1
  71. data/lib/efl/native/elm/elm_glview.rb +1 -1
  72. data/lib/efl/native/elm/elm_grid.rb +1 -1
  73. data/lib/efl/native/elm/elm_hover.rb +1 -1
  74. data/lib/efl/native/elm/elm_hoversel.rb +1 -1
  75. data/lib/efl/native/elm/elm_icon.rb +1 -1
  76. data/lib/efl/native/elm/elm_image.rb +1 -1
  77. data/lib/efl/native/elm/elm_index.rb +1 -1
  78. data/lib/efl/native/elm/elm_inwin.rb +1 -1
  79. data/lib/efl/native/elm/elm_label.rb +1 -1
  80. data/lib/efl/native/elm/elm_layout.rb +1 -1
  81. data/lib/efl/native/elm/elm_list.rb +1 -1
  82. data/lib/efl/native/elm/elm_mapbuf.rb +1 -1
  83. data/lib/efl/native/elm/elm_menu.rb +1 -1
  84. data/lib/efl/native/elm/elm_mirroring.rb +1 -1
  85. data/lib/efl/native/elm/elm_multibuttonentry.rb +1 -1
  86. data/lib/efl/native/elm/elm_naviframe.rb +1 -1
  87. data/lib/efl/native/elm/elm_need.rb +1 -1
  88. data/lib/efl/native/elm/elm_notify.rb +1 -1
  89. data/lib/efl/native/elm/elm_object.rb +1 -1
  90. data/lib/efl/native/elm/elm_object_item.rb +1 -1
  91. data/lib/efl/native/elm/elm_panel.rb +1 -1
  92. data/lib/efl/native/elm/elm_panes.rb +1 -1
  93. data/lib/efl/native/elm/elm_photo.rb +1 -1
  94. data/lib/efl/native/elm/elm_photocam.rb +1 -1
  95. data/lib/efl/native/elm/elm_plug.rb +1 -1
  96. data/lib/efl/native/elm/elm_popup.rb +1 -1
  97. data/lib/efl/native/elm/elm_progressbar.rb +1 -1
  98. data/lib/efl/native/elm/elm_radio.rb +1 -1
  99. data/lib/efl/native/elm/elm_scale.rb +1 -1
  100. data/lib/efl/native/elm/elm_scroll.rb +1 -1
  101. data/lib/efl/native/elm/elm_scroller.rb +1 -1
  102. data/lib/efl/native/elm/elm_segment_control.rb +1 -1
  103. data/lib/efl/native/elm/elm_separator.rb +1 -1
  104. data/lib/efl/native/elm/elm_slider.rb +1 -1
  105. data/lib/efl/native/elm/elm_slideshow.rb +1 -1
  106. data/lib/efl/native/elm/elm_spinner.rb +1 -1
  107. data/lib/efl/native/elm/elm_store.rb +1 -1
  108. data/lib/efl/native/elm/elm_table.rb +1 -1
  109. data/lib/efl/native/elm/elm_theme.rb +1 -1
  110. data/lib/efl/native/elm/elm_thumb.rb +1 -1
  111. data/lib/efl/native/elm/elm_toolbar.rb +1 -1
  112. data/lib/efl/native/elm/elm_tooltip.rb +1 -1
  113. data/lib/efl/native/elm/elm_transit.rb +1 -1
  114. data/lib/efl/native/elm/elm_video.rb +1 -1
  115. data/lib/efl/native/elm/elm_web.rb +1 -1
  116. data/lib/efl/native/elm/elm_win.rb +1 -1
  117. data/lib/efl/native/embryo.rb +1 -1
  118. data/lib/efl/native/emotion.rb +1 -1
  119. data/lib/efl/native/ethumb.rb +1 -1
  120. data/lib/efl/native/ethumb_client.rb +1 -1
  121. data/lib/efl/native/ethumb_plugin.rb +1 -1
  122. data/lib/efl/native/evas.rb +1 -1
  123. data/test/test_button-native.rb +39 -0
  124. data/test/test_button.rb +40 -0
  125. data/test/test_checkbox.rb +58 -0
  126. data/test/test_ecore_pipe-native.rb +52 -0
  127. data/test/test_ecore_pipe.rb +57 -0
  128. data/test/test_elm_win-native2.rb +41 -0
  129. data/test/test_genlist-native.rb +75 -0
  130. data/test/test_genlist.rb +68 -0
  131. data/test/test_layout.rb +65 -0
  132. data/test/test_list.rb +60 -0
  133. data/test/test_naviframe.rb +59 -0
  134. data/test/test_panel.rb +88 -0
  135. data/test/test_panes.rb +74 -0
  136. metadata +44 -43
  137. data/lib/efl/native/ebluez.rb +0 -140
  138. data/lib/efl/native/econnman.rb +0 -253
  139. data/lib/efl/native/edbus.rb +0 -162
  140. data/lib/efl/native/ehal.rb +0 -104
  141. data/lib/efl/native/enotification_daemon.rb +0 -66
  142. data/lib/efl/native/enotify.rb +0 -170
  143. data/lib/efl/native/eofono.rb +0 -112
  144. data/lib/efl/native/eukit.rb +0 -115
  145. data/tools/check_loading +0 -36
  146. data/tools/check_specs +0 -24
  147. data/tools/extract-api.sh +0 -185
  148. data/tools/genruby.rb +0 -491
  149. data/tools/install-efl.sh +0 -16
  150. data/tools/sed-callbacks +0 -28
  151. data/tools/sed-enums +0 -51
  152. data/tools/sed-functions +0 -21
  153. data/tools/sed-types +0 -30
  154. data/tools/sed-variables +0 -9
@@ -18,7 +18,7 @@ module Efl
18
18
  #
19
19
  module Native
20
20
  #
21
- ffi_lib 'embryo'
21
+ ffi_lib 'embryo.so.1'
22
22
  #
23
23
  # ENUMS
24
24
  # typedef enum _Embryo_Error {...} Embryo_Error;
@@ -19,7 +19,7 @@ module Efl
19
19
  #
20
20
  module Native
21
21
  #
22
- ffi_lib 'emotion'
22
+ ffi_lib 'emotion.so.1'
23
23
  #
24
24
  # ENUMS
25
25
  # typedef enum _Emotion_Module {...} Emotion_Module;
@@ -18,7 +18,7 @@ module Efl
18
18
  #
19
19
  module Native
20
20
  #
21
- ffi_lib 'ethumb'
21
+ ffi_lib 'ethumb.so.1'
22
22
  #
23
23
  # ENUMS
24
24
  # typedef enum _Ethumb_Thumb_FDO_Size {...} Ethumb_Thumb_FDO_Size;
@@ -19,7 +19,7 @@ module Efl
19
19
  #
20
20
  module Native
21
21
  #
22
- ffi_lib 'ethumb_client'
22
+ ffi_lib 'ethumb_client.so.1'
23
23
  #
24
24
  # TYPEDEFS
25
25
  # typedef struct _Ethumb_Client Ethumb_Client;
@@ -21,7 +21,7 @@ module Efl
21
21
  #
22
22
  module Native
23
23
  #
24
- ffi_lib 'ethumb'
24
+ ffi_lib 'ethumb.so.1'
25
25
  #
26
26
  # TYPEDEFS
27
27
  # typedef struct _Ethumb_Plugin Ethumb_Plugin;
@@ -19,7 +19,7 @@ module Efl
19
19
  #
20
20
  module Native
21
21
  #
22
- ffi_lib 'evas'
22
+ ffi_lib 'evas.so.1'
23
23
  #
24
24
  # CONSTANTS
25
25
  EVAS_LAYER_MIN=-32768
@@ -0,0 +1,39 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/native/elm/elm_win'
5
+ require 'efl/native/elm/elm_bg'
6
+ require 'efl/native/elm/elm_button'
7
+ require 'efl/native/elm/elm_object'
8
+ #
9
+ include Efl::Native
10
+ #
11
+ elm_init 0, FFI::MemoryPointer::NULL
12
+ #
13
+ def on_click data, object, event
14
+ elm_exit
15
+ end
16
+ #
17
+ win = elm_win_add(nil, "Greetings", 0)
18
+ elm_win_title_set(win, "Hello, World!")
19
+ elm_win_autodel_set(win, true)
20
+ elm_policy_set(0, 1)
21
+ evas_object_resize(win, 240, 60)
22
+ evas_object_show(win)
23
+ #
24
+ bg = elm_bg_add(win)
25
+ evas_object_size_hint_weight_set(bg, 1.0, 1.0)
26
+ elm_win_resize_object_add(win, bg)
27
+ evas_object_show(bg)
28
+ #
29
+ btn = elm_button_add(win)
30
+ elm_object_part_text_set(btn, nil, "Good-Bye, World!")
31
+ evas_object_smart_callback_add(btn, "clicked", method(:on_click), nil)
32
+ evas_object_resize(btn, 120, 30)
33
+ evas_object_move(btn, 60, 15)
34
+ evas_object_show(btn)
35
+ #
36
+ elm_run
37
+ elm_shutdown
38
+ #
39
+ # EOF
@@ -0,0 +1,40 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/elm/elm_win'
5
+ require 'efl/elm/elm_bg'
6
+ require 'efl/elm/elm_button'
7
+ #
8
+ include Efl
9
+ #
10
+ class MyWin < Elm::ElmWin
11
+ #
12
+ def initialize
13
+ super(nil, "Greetings") do
14
+ title_set "Hello, World!"
15
+ resize 240, 60
16
+ show
17
+ end
18
+ @bg = Elm::ElmBg.new(self) do
19
+ size_hint_weight_expand
20
+ show
21
+ end
22
+ resize_object_add @bg
23
+ @btn = Elm::ElmButton.new(self) do
24
+ part_text_set(nil, "Good-Bye, World!")
25
+ smart_callback_add("clicked", ->(*_) { Elm.exit }, nil)
26
+ resize 120, 30
27
+ move 60, 15
28
+ show
29
+ end
30
+ end
31
+ end
32
+ #
33
+ Elm.init
34
+ #
35
+ MyWin.new
36
+ #
37
+ Elm.run
38
+ Elm.shutdown
39
+ #
40
+ # EOF
@@ -0,0 +1,58 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+
4
+ require 'efl/native/elm/elm_win'
5
+ require 'efl/native/elm/elm_bg'
6
+ require 'efl/native/elm/elm_check'
7
+ require 'efl/native/elm/elm_object'
8
+ require 'efl/native/elm/elm_focus'
9
+
10
+ require 'efl/native/ecore'
11
+
12
+ include Efl::Native
13
+
14
+ elm_init 0, nil
15
+
16
+ def cb_change_text (obj)
17
+ elm_object_part_text_set(obj, nil, "done")
18
+ # elm_check_state_set(obj, false)
19
+ end
20
+
21
+ def print_cb (data, obj, event)
22
+ if elm_check_state_get(obj)
23
+ puts "marked"
24
+ elm_object_part_text_set(obj, nil, "I feel touched, and I like it")
25
+ ecore_timer_add(1.0, method(:cb_change_text), obj)
26
+ else
27
+ puts "unmarked"
28
+ end
29
+ end
30
+
31
+ # Main Window
32
+ win = elm_win_add(nil, "Checkbox Test", 0)
33
+ elm_win_title_set(win, "Test of Checkbox functions")
34
+ elm_win_autodel_set(win, true)
35
+ elm_policy_set( Efl::Native.enum_type(:elm_policy)[:elm_policy_quit],
36
+ Efl::Native.enum_type(:elm_policy_quit)[:elm_policy_quit_last_window_closed])
37
+ elm_object_focus_set(win, true)
38
+ evas_object_resize(win, 200, 100)
39
+ evas_object_show(win)
40
+
41
+ # Background
42
+ bg = elm_bg_add(win)
43
+ evas_object_size_hint_weight_set(bg, 1.0, 1.0)
44
+ elm_win_resize_object_add(win, bg)
45
+ evas_object_show(bg)
46
+
47
+ # Checkbox
48
+ cb = elm_check_add(win)
49
+ elm_object_part_text_set(cb, nil, "click me!")
50
+ elm_object_focus_set(cb, true)
51
+ evas_object_smart_callback_add(cb, "changed", method(:print_cb), nil)
52
+ evas_object_move(cb, 10, 10)
53
+ evas_object_resize(cb, 200, 30)
54
+ evas_object_show(cb)
55
+
56
+ elm_run
57
+ elm_shutdown
58
+
@@ -0,0 +1,52 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/native/ecore'
5
+ require 'efl/native/elm/elm_win'
6
+ require 'efl/native/elm/elm_bg'
7
+ require 'efl/native/elm/elm_label'
8
+ require 'efl/native/elm/elm_object'
9
+ #
10
+ include Efl::Native
11
+ #
12
+ elm_init 0, FFI::MemoryPointer::NULL
13
+ #
14
+ win_del = Proc.new { |data,evas_object,event_info| elm_exit() }
15
+ #
16
+ win = elm_win_add nil, "App name", :elm_win_basic
17
+ elm_win_title_set win, "Window title"
18
+ evas_object_smart_callback_add win, "delete,request", win_del, nil
19
+ #
20
+ bg = elm_bg_add win
21
+ evas_object_size_hint_weight_set bg, 1.0, 1.0
22
+ elm_win_resize_object_add win, bg
23
+ evas_object_show bg
24
+ #
25
+ lb = elm_label_add win
26
+ elm_object_part_text_set lb, nil, "Hello World"
27
+ evas_object_size_hint_weight_set lb, 1.0, 1.0
28
+ elm_win_resize_object_add win, lb
29
+ evas_object_show lb
30
+ #
31
+ evas_object_move win, 300, 300
32
+ evas_object_resize win, 200, 100
33
+ #
34
+ evas_object_show win
35
+ #
36
+ pipe_cb = Proc.new { |date,buffer,n|
37
+ elm_object_part_text_set lb, nil, buffer.read_string[0..n-1]
38
+ }
39
+ #
40
+ pipe = ecore_pipe_add pipe_cb, nil
41
+ #
42
+ pid = fork {
43
+ ecore_pipe_read_close(pipe);
44
+ [ "hello", "dying", "old", "planet", "earth"].each do |w|
45
+ sleep 1
46
+ ecore_pipe_write pipe, w, w.length
47
+ end
48
+ }
49
+ #
50
+ elm_run
51
+ ecore_pipe_del pipe
52
+ elm_shutdown
@@ -0,0 +1,57 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/ecore'
5
+ require 'efl/elm/elm_win'
6
+ require 'efl/elm/elm_bg'
7
+ require 'efl/elm/elm_label'
8
+ #
9
+ include Efl
10
+ #
11
+ class MyWin < Elm::ElmWin
12
+ #
13
+ attr_reader :pipe
14
+ def initialize
15
+ super(nil, "Pipe test") do
16
+ title_set "Hello, World!"
17
+ smart_callback_add("delete,request", ->(*_) { Elm.exit }, nil)
18
+ resize 200, 100
19
+ show
20
+ end
21
+ @bg = Elm::ElmBg.new(self) do
22
+ size_hint_weight_expand
23
+ show
24
+ end
25
+ resize_object_add @bg
26
+ #
27
+ @label = Elm::ElmLabel.new(self) do
28
+ text_set "Hello World"
29
+ size_hint_weight_expand
30
+ show
31
+ end
32
+ resize_object_add @label
33
+ #
34
+ @pipe = Ecore.ecore_pipe_add(method(:pipe_cb), nil)
35
+ end
36
+ #
37
+ def pipe_cb date, buffer, n
38
+ @label.text_set buffer.read_string[0..n-1]
39
+ end
40
+ end
41
+ #
42
+ Elm.init
43
+ #
44
+ @win = MyWin.new
45
+ #
46
+ pid = fork do
47
+ Ecore.ecore_pipe_read_close(@win.pipe)
48
+ [ "hello", "dying", "old", "planet", "earth"].each do |w|
49
+ sleep 1
50
+ Ecore.ecore_pipe_write @win.pipe, w, w.length
51
+ end
52
+ end
53
+ Elm.run
54
+ Ecore.ecore_pipe_del @win.pipe
55
+ Elm.shutdown
56
+ #
57
+ # EOF
@@ -0,0 +1,41 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/native/elm/elm_win'
5
+ require 'efl/native/elm/elm_bg'
6
+ require 'efl/native/elm/elm_label'
7
+ require 'efl/native/elm/elm_object'
8
+ #
9
+ include Efl
10
+ #
11
+ Elm.init 0, FFI::MemoryPointer::NULL
12
+ #
13
+ win_del = Proc.new { |data,evas_object,event_info|
14
+ Elm.exit();
15
+ }
16
+ #
17
+ win = ElmWin.add nil, "App name", :elm_win_basic
18
+ ElmWin.title_set win, "Window title"
19
+ Evas.object_smart_callback_add win, "delete,request", win_del, nil
20
+ #
21
+ bg = ElmBg.add win
22
+ Evas.object_size_hint_weight_set bg, 1.0, 1.0
23
+ ElmWin.resize_object_add win, bg
24
+ Evas.object_show bg
25
+ #
26
+ lb = ElmLabel.add win
27
+ ElmObject.part_text_set lb, nil, "Hello World"
28
+ Evas.object_size_hint_weight_set lb, 1.0, 1.0
29
+ ElmWin.resize_object_add win, lb
30
+ Evas.object_show lb
31
+ #
32
+ Evas.object_move win, 300, 300
33
+ Evas.object_resize win, 200, 100
34
+ #
35
+ Evas.object_show win
36
+ #
37
+
38
+ Elm.run
39
+ Elm.shutdown
40
+ #
41
+ # EOF
@@ -0,0 +1,75 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/native/elm/elm_win'
5
+ require 'efl/native/elm/elm_bg'
6
+ require 'efl/native/elm/elm_label'
7
+ require 'efl/native/elm/elm_genlist'
8
+ #
9
+ class ElmGenItemClass < FFI::Struct
10
+ layout :version, :int,
11
+ :refcount, :uint,
12
+ :delete_me, :pointer,
13
+ :item_style, :pointer,
14
+ :decorate_item_style, :pointer,
15
+ :decorate_all_item_style, :pointer,
16
+ :text_get, :pointer,
17
+ :content_get, :pointer,
18
+ :state_get, :pointer,
19
+ :del, :pointer
20
+ end
21
+ #
22
+ include Efl::Native
23
+ #
24
+ elm_init 0, FFI::MemoryPointer::NULL
25
+ #
26
+ win = elm_win_add(nil, "genlist", 0)
27
+ elm_win_title_set(win, "Genlist")
28
+ elm_policy_set(0, 1)
29
+ elm_win_autodel_set(win, true)
30
+ #
31
+ bg = elm_bg_add(win)
32
+ elm_bg_color_set(bg, 255, 255, 255)
33
+ evas_object_size_hint_weight_set(bg, 1.0, 1.0)
34
+ elm_win_resize_object_add(win, bg)
35
+ evas_object_show(bg)
36
+ #
37
+ if !@itc
38
+ itc_ptr = elm_genlist_item_class_new
39
+ @itc = ElmGenItemClass.new(itc_ptr)
40
+ @itc[:item_style] = FFI::MemoryPointer.from_string("default")
41
+ @itc[:text_get] = FFI::Function.new(:pointer, [:pointer, :pointer, :string]) {|data, *_|
42
+ ptr = FFI::MemoryPointer.from_string("Item # #{data.read_string}")
43
+ ptr.autorelease = false
44
+ ptr
45
+ }
46
+ @itc[:content_get] = FFI::Function.new(:pointer, [:pointer, :pointer, :string]) do
47
+ |data, obj, part|
48
+ ic = elm_icon_add(obj)
49
+ elm_icon_standard_set(ic, "clock") if part == "elm.swallow.icon"
50
+ evas_object_size_hint_aspect_set(ic, 0, 1, 1)
51
+ ic
52
+ end
53
+ @itc[:state_get] = nil
54
+ @itc[:del] = nil
55
+ end
56
+ #
57
+ list = elm_genlist_add(win)
58
+ #
59
+ 30.times do |i|
60
+ elm_genlist_item_append(list, @itc, i.to_s, nil, :elm_genlist_item_none,
61
+ FFI::Function.new(:pointer, [:pointer, :pointer, :pointer]) {|data, obj, evt|
62
+ p [:selected, data.read_string] }, i.to_s)
63
+ end
64
+ #
65
+ evas_object_size_hint_weight_set(list, 1.0, 1.0)
66
+ elm_win_resize_object_add(win, list)
67
+ evas_object_show(list)
68
+ #
69
+ evas_object_resize(win, 200, 300)
70
+ evas_object_show(win)
71
+ #
72
+ elm_run
73
+ elm_shutdown
74
+ #
75
+ # EOF
@@ -0,0 +1,68 @@
1
+ #! /usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+ #
4
+ require 'efl/elementary_all'
5
+ #
6
+ class ElmGenItemClass < FFI::Struct
7
+ layout :version, :int,
8
+ :refcount, :uint,
9
+ :delete_me, :pointer,
10
+ :item_style, :pointer,
11
+ :decorate_item_style, :pointer,
12
+ :decorate_all_item_style, :pointer,
13
+ :text_get, :pointer,
14
+ :content_get, :pointer,
15
+ :state_get, :pointer,
16
+ :del, :pointer
17
+ end
18
+ #
19
+ include Efl
20
+ #
21
+ Elm.init
22
+ #
23
+ class Window < Elm::ElmWin
24
+ #
25
+ def initialize
26
+ super nil, "genlist"
27
+ title_set("Genlist")
28
+ @bg = Elm::ElmBg.new(self) do
29
+ color_set 255, 255, 255
30
+ size_hint_weight_expand
31
+ show
32
+ end
33
+ resize_object_add(@bg)
34
+ @itc = ElmGenItemClass.new(Native.elm_genlist_item_class_new)
35
+ @itc[:item_style] = FFI::MemoryPointer.from_string("default")
36
+ @itc[:text_get] = FFI::Function.new(:pointer, [:pointer, :pointer, :string]) do |data, *_|
37
+ ptr = FFI::MemoryPointer.from_string("Item # #{data.read_string}")
38
+ ptr.autorelease = false
39
+ ptr
40
+ end
41
+ @itc[:content_get] = FFI::Function.new(:pointer, [:pointer, :pointer, :string]) do |data, obj, part|
42
+ Elm::ElmIcon.new(self) do
43
+ standard_set(part == "elm.swallow.icon" ? "home" : "clock")
44
+ size_hint_aspect_set 0, 1, 1
45
+ end.to_ptr
46
+ end
47
+ @list = Elm::ElmGenList.new(self) do
48
+ size_hint_weight_expand
49
+ show
50
+ end
51
+ 30.times do |i|
52
+ @list.item_append(@itc, i.to_s, nil, :elm_genlist_item_none,
53
+ FFI::Function.new(:pointer, [:pointer, :pointer, :pointer]) {|data, obj, evt|
54
+ p [:selected, data.read_string] }, i.to_s)
55
+ end
56
+ resize_object_add(@list)
57
+ smart_callback_add "delete,request", ->(*_) { Elm.exit }, nil
58
+ resize 200, 300
59
+ show
60
+ end
61
+ end
62
+ #
63
+ Window.new
64
+ #
65
+ Elm.run
66
+ Elm.shutdown
67
+ #
68
+ # EOF