From 14030eb7e06e6b4acd8ada00291dbf196b31234c Mon Sep 17 00:00:00 2001
From: Marius Hanne <marius.hanne@sourceagency.org>
Date: Mon, 18 Feb 2013 15:43:24 +0100
Subject: examples for ElmButton

---
 test/test_button-native.rb | 39 +++++++++++++++++++++++++++++++++++++++
 test/test_button.rb        | 40 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+)
 create mode 100644 test/test_button-native.rb
 create mode 100644 test/test_button.rb

diff --git a/test/test_button-native.rb b/test/test_button-native.rb
new file mode 100644
index 0000000..5a805b2
--- /dev/null
+++ b/test/test_button-native.rb
@@ -0,0 +1,39 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+#
+require 'efl/native/elm/elm_win'
+require 'efl/native/elm/elm_bg'
+require 'efl/native/elm/elm_button'
+require 'efl/native/elm/elm_object'
+#
+include Efl::Native
+#
+elm_init 0, FFI::MemoryPointer::NULL
+#
+def on_click data, object, event
+  elm_exit
+end
+#
+win = elm_win_add(nil, "Greetings", 0)
+elm_win_title_set(win, "Hello, World!")
+elm_win_autodel_set(win, true)
+elm_policy_set(0, 1)
+evas_object_resize(win, 240, 60)
+evas_object_show(win)
+#
+bg = elm_bg_add(win)
+evas_object_size_hint_weight_set(bg, 1.0, 1.0)
+elm_win_resize_object_add(win, bg)
+evas_object_show(bg)
+#
+btn = elm_button_add(win)
+elm_object_part_text_set(btn, nil, "Good-Bye, World!")
+evas_object_smart_callback_add(btn, "clicked", method(:on_click), nil)
+evas_object_resize(btn, 120, 30)
+evas_object_move(btn, 60, 15)
+evas_object_show(btn)
+#
+elm_run
+elm_shutdown
+#
+# EOF
diff --git a/test/test_button.rb b/test/test_button.rb
new file mode 100644
index 0000000..93168d3
--- /dev/null
+++ b/test/test_button.rb
@@ -0,0 +1,40 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+#
+require 'efl/elm/elm_win'
+require 'efl/elm/elm_bg'
+require 'efl/elm/elm_button'
+#
+include Efl
+#
+class MyWin < Elm::ElmWin
+  #
+  def initialize
+    super(nil, "Greetings") do
+      title_set "Hello, World!"
+      resize 240, 60
+      show
+    end
+    @bg = Elm::ElmBg.new(self) do
+      size_hint_weight_expand
+      show
+    end
+    resize_object_add @bg
+    @btn = Elm::ElmButton.new(self) do
+      part_text_set(nil, "Good-Bye, World!")
+      smart_callback_add("clicked", ->(*_) { Elm.exit }, nil)
+      resize 120, 30
+      move 60, 15
+      show
+    end
+  end
+end
+#
+Elm.init
+#
+MyWin.new
+#
+Elm.run
+Elm.shutdown
+#
+# EOF
-- 
cgit v1.1-2-g2b99


From 41cd2aeb0aed29452f2487e8801e7f25405e79b9 Mon Sep 17 00:00:00 2001
From: Marius Hanne <marius.hanne@sourceagency.org>
Date: Mon, 18 Feb 2013 15:48:36 +0100
Subject: example for ElmList

---
 test/test_list.rb | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 test/test_list.rb

diff --git a/test/test_list.rb b/test/test_list.rb
new file mode 100644
index 0000000..583a5bd
--- /dev/null
+++ b/test/test_list.rb
@@ -0,0 +1,60 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+#
+require 'efl/elm/elm_win'
+require 'efl/elm/elm_bg'
+require 'efl/elm/elm_list'
+#
+include Efl
+#
+class MyWin < Elm::ElmWin
+  #
+  def initialize name, title, &block
+    super FFI::MemoryPointer::NULL, name, &block
+    title_set title
+    feed
+    smart_callback_add "delete,request", method(:on_delete), FFI::MemoryPointer.from_string("my data")
+  end
+  #
+  def feed
+    _self = self
+    @bg = Elm::ElmBg.new(self) do
+      size_hint_weight_expand
+      evas_object_color_set 150,180,100,180
+
+      show
+    end
+    resize_object_add @bg
+    @list = Elm::ElmList.new(self) do
+      Dir.entries(ENV["HOME"]).each do |entry|
+        next  if entry[0] == '.'
+        item_append entry, nil, nil, _self.method(:on_select),
+        FFI::MemoryPointer.from_string(entry)
+      end
+      size_hint_weight_expand
+      show
+    end
+    resize_object_add @list
+  end
+  #
+  def on_select data, evas_object, event_info
+    p [:selected, data.read_string]
+  end
+  #
+  def on_delete data, evas_object, event_info
+    puts "EXIT #{data.read_string}"
+    Elm.exit
+  end
+end
+#
+Elm.init
+#
+win = MyWin.new "MyList", "List Example" do
+  alpha_set true
+  resize 300, 200
+  center_set 600, 300
+  show
+end
+#
+Elm.run
+Elm.shutdown
-- 
cgit v1.1-2-g2b99


From 554927f7bad42cd1e5c25c4877646b284c736edd Mon Sep 17 00:00:00 2001
From: Marius Hanne <marius.hanne@sourceagency.org>
Date: Mon, 18 Feb 2013 15:54:29 +0100
Subject: examples for ElmGenList

---
 test/test_genlist-native.rb | 75 +++++++++++++++++++++++++++++++++++++++++++++
 test/test_genlist.rb        | 68 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 143 insertions(+)
 create mode 100644 test/test_genlist-native.rb
 create mode 100644 test/test_genlist.rb

diff --git a/test/test_genlist-native.rb b/test/test_genlist-native.rb
new file mode 100644
index 0000000..19f8712
--- /dev/null
+++ b/test/test_genlist-native.rb
@@ -0,0 +1,75 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+#
+require 'efl/native/elm/elm_win'
+require 'efl/native/elm/elm_bg'
+require 'efl/native/elm/elm_label'
+require 'efl/native/elm/elm_genlist'
+#
+class ElmGenItemClass < FFI::Struct
+  layout  :version, :int,
+  :refcount, :uint,
+  :delete_me, :pointer,
+  :item_style, :pointer,
+  :decorate_item_style, :pointer,
+  :decorate_all_item_style, :pointer,
+  :text_get, :pointer,
+  :content_get, :pointer,
+  :state_get, :pointer,
+  :del, :pointer
+end
+#
+include Efl::Native
+#
+elm_init 0, FFI::MemoryPointer::NULL
+#
+win = elm_win_add(nil, "genlist", 0)
+elm_win_title_set(win, "Genlist")
+elm_policy_set(0, 1)
+elm_win_autodel_set(win, true)
+#
+bg = elm_bg_add(win)
+elm_bg_color_set(bg, 255, 255, 255)
+evas_object_size_hint_weight_set(bg, 1.0, 1.0)
+elm_win_resize_object_add(win, bg)
+evas_object_show(bg)
+#
+if !@itc
+  itc_ptr = elm_genlist_item_class_new
+  @itc = ElmGenItemClass.new(itc_ptr)
+  @itc[:item_style] = FFI::MemoryPointer.from_string("default")
+  @itc[:text_get] = FFI::Function.new(:pointer, [:pointer, :pointer, :string]) {|data, *_|
+    ptr = FFI::MemoryPointer.from_string("Item # #{data.read_string}")
+    ptr.autorelease = false
+    ptr
+  }
+  @itc[:content_get] = FFI::Function.new(:pointer, [:pointer, :pointer, :string]) do
+    |data, obj, part|
+    ic = elm_icon_add(obj)
+    elm_icon_standard_set(ic, "clock")  if part == "elm.swallow.icon"
+    evas_object_size_hint_aspect_set(ic, 0, 1, 1)
+    ic
+  end
+  @itc[:state_get] = nil
+  @itc[:del] = nil
+end
+#
+list = elm_genlist_add(win)
+#
+30.times do |i|
+  elm_genlist_item_append(list, @itc, i.to_s, nil, :elm_genlist_item_none,
+    FFI::Function.new(:pointer, [:pointer, :pointer, :pointer]) {|data, obj, evt|
+      p [:selected, data.read_string] }, i.to_s)
+end
+#
+evas_object_size_hint_weight_set(list, 1.0, 1.0)
+elm_win_resize_object_add(win, list)
+evas_object_show(list)
+#
+evas_object_resize(win, 200, 300)
+evas_object_show(win)
+#
+elm_run
+elm_shutdown
+#
+# EOF
diff --git a/test/test_genlist.rb b/test/test_genlist.rb
new file mode 100644
index 0000000..76303c5
--- /dev/null
+++ b/test/test_genlist.rb
@@ -0,0 +1,68 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+#
+require 'efl/elementary_all'
+#
+class ElmGenItemClass < FFI::Struct
+  layout  :version, :int,
+  :refcount, :uint,
+  :delete_me, :pointer,
+  :item_style, :pointer,
+  :decorate_item_style, :pointer,
+  :decorate_all_item_style, :pointer,
+  :text_get, :pointer,
+  :content_get, :pointer,
+  :state_get, :pointer,
+  :del, :pointer
+end
+#
+include Efl
+#
+Elm.init
+#
+class Window < Elm::ElmWin
+  #
+  def initialize
+    super nil, "genlist"
+    title_set("Genlist")
+    @bg = Elm::ElmBg.new(self) do
+      color_set 255, 255, 255
+      size_hint_weight_expand
+      show
+    end
+    resize_object_add(@bg)
+    @itc = ElmGenItemClass.new(Native.elm_genlist_item_class_new)
+    @itc[:item_style] = FFI::MemoryPointer.from_string("default")
+    @itc[:text_get] = FFI::Function.new(:pointer, [:pointer, :pointer, :string]) do |data, *_|
+      ptr = FFI::MemoryPointer.from_string("Item # #{data.read_string}")
+      ptr.autorelease = false
+      ptr
+    end
+    @itc[:content_get] =  FFI::Function.new(:pointer, [:pointer, :pointer, :string]) do |data, obj, part|
+      Elm::ElmIcon.new(self) do
+        standard_set(part == "elm.swallow.icon" ? "home" : "clock")
+        size_hint_aspect_set 0, 1, 1
+      end.to_ptr
+    end
+    @list = Elm::ElmGenList.new(self) do
+      size_hint_weight_expand
+      show
+    end
+    30.times do |i|
+      @list.item_append(@itc, i.to_s, nil, :elm_genlist_item_none,
+        FFI::Function.new(:pointer, [:pointer, :pointer, :pointer]) {|data, obj, evt|
+          p [:selected, data.read_string] }, i.to_s)
+    end
+    resize_object_add(@list)
+    smart_callback_add "delete,request", ->(*_) { Elm.exit }, nil
+    resize 200, 300
+    show
+  end
+end
+#
+Window.new
+#
+Elm.run
+Elm.shutdown
+#
+# EOF
-- 
cgit v1.1-2-g2b99