X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Frb_edje.c;h=c46b3157731f0478b8db335fb485c94ce5d0bd95;hb=f18fb5c3ebbf4f24182d8302426ef08e41daac14;hp=f91fab5e4dc7763c6d67936c8685c5090a774167;hpb=e5b1a441f0f546a9ddc966910af2f534d4e21654;p=ruby-edje.git diff --git a/src/rb_edje.c b/src/rb_edje.c index f91fab5..c46b315 100644 --- a/src/rb_edje.c +++ b/src/rb_edje.c @@ -1,5 +1,5 @@ /* - * $Id: rb_edje.c 333 2005-04-28 18:47:16Z tilman $ + * $Id: rb_edje.c 335 2005-05-02 17:28:37Z tilman $ * * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de) * @@ -84,6 +84,26 @@ static VALUE c_new (VALUE klass, VALUE evas) return self; } +static VALUE c_new_from_pointer (VALUE klass, VALUE evas, VALUE ptr) +{ + VALUE self, argv[1]; + RbEdje *edje = NULL; + + edje_init (); + + self = Data_Make_Struct (klass, RbEdje, c_mark, c_free, edje); + + edje->real.real = (Evas_Object *) ptr; + edje->parts = Qnil; + edje->callbacks = Qnil; + edje->on_text_changed_cb = Qnil; + + argv[0] = evas; + rb_obj_call_init (self, 1, argv); + + return self; +} + /* * call-seq: * edje.freeze => nil @@ -519,7 +539,8 @@ static VALUE c_send_message (VALUE self, VALUE msg) v = rb_iv_get (msg, "@value"); type = get_msg_type (v); - ary = rb_check_array_type (v); + if (!NIL_P (ary = rb_check_array_type (v))) + len = RARRAY (ary)->len; switch (type) { case EDJE_MESSAGE_NONE: @@ -660,6 +681,8 @@ void Init_Edje (void) cEdje = rb_define_class_under (mEdje, "Edje", cEvasObject); rb_define_singleton_method (cEdje, "new", c_new, 1); + rb_define_singleton_method (cEdje, "new_from_pointer", + c_new_from_pointer, 2); rb_define_method (cEdje, "freeze", c_freeze, 0); rb_define_method (cEdje, "thaw", c_thaw, 0); rb_define_method (cEdje, "load", c_load, 2);