diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2011-04-20 17:43:48 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2011-04-20 17:43:48 +0200 |
commit | 6865df2bd776a80afc485e23b223ac1dac289b86 (patch) | |
tree | 7ec0c5a714eb0ed184cf96fe4521d05cea2d3fa6 /lib/efl/elementary.rb | |
parent | 1e52dc26575a472fd108e187bda2cd2447a387cc (diff) | |
download | ffi-efl-6865df2bd776a80afc485e23b223ac1dac289b86.zip ffi-efl-6865df2bd776a80afc485e23b223ac1dac289b86.tar.gz |
add elementary ffi + quick and dirty test window
Diffstat (limited to 'lib/efl/elementary.rb')
-rw-r--r-- | lib/efl/elementary.rb | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/lib/efl/elementary.rb b/lib/efl/elementary.rb index efe444a..4d82d54 100644 --- a/lib/efl/elementary.rb +++ b/lib/efl/elementary.rb @@ -1,10 +1,41 @@ #! /usr/bin/env ruby # -*- coding: UTF-8 -*- # +require 'efl/evas' require 'efl/elementary/elementary-ffi' # module Efl - module Elementary + module Elm + # + class << self + def init *args + a = args.select { |e| e.is_a? String } + return Efl::API.elm_init 0, FFI::MemoryPointer::NULL if a.length==0 + ptr = FFI::MemoryPointer.new :pointer, a.length + a.each_with_index do |s,i| + ptr[i].write_pointer FFI::MemoryPointer.from_string(s) + end + Efl::API.elm_init a.length, ptr + end + end + # + class ElmWin < Efl::Evas::EvasObject + attr_reader :ptr + def initialize parent, title, type=:elm_win_basic + @ptr = Efl::API.elm_win_add parent, title, type + yield self if block_given? + end + def add e + Efl::API.send "elm_#{e}_add", @ptr + end + def method_missing m, *args, &block + [ 'elm_win_', 'elm_' ].each do |s| + sym = s+m.to_s + puts sym + return Efl::API.send( sym, @ptr, *args, &block ) if Efl::API.respond_to? sym + end + end + end # end end |