summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/tests/test_buttons.rb114
1 files changed, 114 insertions, 0 deletions
diff --git a/test/tests/test_buttons.rb b/test/tests/test_buttons.rb
new file mode 100644
index 0000000..9007506
--- /dev/null
+++ b/test/tests/test_buttons.rb
@@ -0,0 +1,114 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+#
+module Tests
+ #
+ class TestBg < Efl::Elm::ElmWin
+ def initialize name, title, fct
+ super nil, name
+ self.title = title
+ self.autodel = true
+ @bg = Elm::ElmBg.new self do |bg|
+ bg.size_hint_weight_expand
+ self.resize_object_add bg
+ bg.show
+ end
+ self.send fct
+ self.resize 320, 480
+ self.show
+ end
+ #
+ def __create_butt_ico txt=nil, do_icon=true
+ if do_icon
+ ico = Elm::ElmIcon.new self
+ ico.file = "#{PACKAGE_DATA_DIR}/images/logo_small.png", nil
+ else
+ ico = nil
+ end
+ bt = Efl::Elm::ElmButton.new self
+ bt.text = txt unless txt.nil?
+ bt.icon = ico if ico
+ bt.smart_callback_add "clicked", method(:bt_clicked_cb)
+ bt.smart_callback_add "unpressed", method(:bt_unpressed_cb)
+ @bx.pack_end bt
+ @buttons << bt
+ ico.show if ico
+ bt.show
+ [bt,ico]
+ end
+ #
+ def buttons
+ @scr = Efl::Elm::ElmScroller.new self do |scr|
+ scr.bounce = false, true
+ scr.policy = :elm_scroller_policy_off, :elm_scroller_policy_auto
+ self.resize_object_add scr
+ scr.size_hint_weight_expand
+ scr.show
+ end
+ @bx = Efl::Elm::ElmBox.new self do |bx|
+ bx.size_hint_weight_expand
+ @scr.content = bx
+ bx.show
+ end
+ #
+ @buttons = []
+ #
+ bt,ico = __create_butt_ico "Icon sized to button"
+ ico.size_hint_aspect = :evas_aspect_control_vertical, 1, 1
+ #
+ bt,ico = __create_butt_ico "Icon no scale"
+ ico.scale = false, false
+ #
+ bt,ico = __create_butt_ico "Disabled Button"
+ bt.disabled = true
+ ico.size_hint_aspect = :evas_aspect_control_vertical, 1, 1
+ #
+ bt,ico = __create_butt_ico
+ bt.disabled = true
+ ico.size_hint_aspect = :evas_aspect_control_vertical, 1, 1
+ #
+ bt,ico = __create_butt_ico "Label Only", false
+ bt.smart_callback_add "repeated", method(:bt_repeated_cb)
+ bt.autorepeat = true
+ bt.autorepeat_gap_timeout = 0.5
+ bt.autorepeat_initial_timeout = 2.0
+ #
+ bt,ico = __create_butt_ico
+ ico.scale = false, false
+ #
+ bt,ico = __create_butt_ico "Anchor style", false
+ bt.style = "anchor"
+ #
+ bt,ico = __create_butt_ico
+ ico.size_hint_aspect = :evas_aspect_control_vertical, 1, 1
+ bt.style = "anchor"
+ #
+ bt,ico = __create_butt_ico
+ ico.size_hint_aspect = :evas_aspect_control_vertical, 1, 1
+ bt.style = "anchor"
+ bt.disabled = true
+ bt.access_info_set "This is some custom text describing this widget"
+ end
+ #
+ def bt_clicked_cb data, evas_obj, event_info
+ idx = @buttons.index @buttons.find { |b| b.to_ptr==evas_obj }
+ puts "clicked event on Button: #{idx+1}"
+ end
+ #
+ def bt_unpressed_cb data, evas_obj, event_info
+ idx = @buttons.index @buttons.find { |b| b.to_ptr==evas_obj }
+ puts "unpressed event on Button: #{idx+1}"
+ end
+ #
+ def bt_repeated_cb data, evas_obj, event_info
+ @count = ((@count||=0)+1)%1000
+ Efl::Elm::ElmButton.new(evas_obj).text = "count = #{@count}"
+ end
+ end
+ #
+ def self.test_button
+ TestBg.new 'buttons', 'Buttons', :buttons
+ end
+end
+#
+# EOF