X-Git-Url: http://git.code-monkey.de/?p=ruby-ecore.git;a=blobdiff_plain;f=src%2Fecore_evas%2Frb_ecore_evas.c;h=e51a4f42b79f5a7cce78ce4847aec0ba8249b369;hp=3ded59d92230d678f149cb601179cbf53755c00b;hb=45f545180849ddf721711df2469ea12f2ff9990a;hpb=04602ae0d3b6898a47caf7f46600a6058b697a81 diff --git a/src/ecore_evas/rb_ecore_evas.c b/src/ecore_evas/rb_ecore_evas.c index 3ded59d..e51a4f4 100644 --- a/src/ecore_evas/rb_ecore_evas.c +++ b/src/ecore_evas/rb_ecore_evas.c @@ -1,5 +1,5 @@ /* - * $Id: rb_ecore_evas.c 303 2005-03-22 17:42:04Z tilman $ + * $Id: rb_ecore_evas.c 385 2006-08-20 15:21:14Z tilman $ * * Copyright (C) 2004 ruby-ecore team (see AUTHORS) * @@ -35,14 +35,14 @@ #define CALLBACK_DEFINE_HANDLER(name) \ static void on_##name (Ecore_Evas *real) \ { \ - VALUE self; \ - VALUE cb; \ + VALUE self, cb; \ \ self = (VALUE) ecore_evas_data_get (real, \ RUBY_ECORE_EVAS_KEY); \ GET_OBJ (self, RbEcoreEvas, ee); \ \ - cb = rb_hash_aref (ee->callbacks, rb_str_new2 (#name)); \ + cb = rb_hash_aref (ee->callbacks, \ + LONG2NUM ((long) ecore_evas_callback_##name##_set)); \ rb_funcall (cb, rb_intern ("call"), 0); \ } \ @@ -55,7 +55,8 @@ if (NIL_P (ee->callbacks)) \ ee->callbacks = rb_hash_new (); \ \ - rb_hash_aset (ee->callbacks, rb_str_new2 (#name), \ + rb_hash_aset (ee->callbacks, \ + LONG2NUM ((long) ecore_evas_callback_##name##_set), \ rb_block_proc ()); \ \ ecore_evas_callback_##name##_set (ee->real, on_##name); \ @@ -522,6 +523,69 @@ static VALUE c_rotation_set (VALUE self, VALUE val) return Qnil; } +static VALUE c_name_class_get (VALUE self) +{ + const char *name = NULL, *klass = NULL; + + GET_OBJ (self, RbEcoreEvas, ee); + + ecore_evas_name_class_get (ee->real, &name, &klass); + + return rb_ary_new3 (2, name ? rb_str_new2 (name) : Qnil, + klass ? rb_str_new2 (klass) : Qnil); +} + +static VALUE c_name_class_set (VALUE self, VALUE ary) +{ + VALUE s1, s2; + + GET_OBJ (self, RbEcoreEvas, ee); + + Check_Type (ary, T_ARRAY); + + s1 = rb_ary_shift (ary); + s2 = rb_ary_shift (ary); + + StringValue (s1); + StringValue (s2); + + ecore_evas_name_class_set (ee->real, StringValuePtr (s1), + StringValuePtr (s2)); + + return Qnil; +} + +/* + * call-seq: + * ee.iconified? => true or false + * + * Returns true if ee is iconified, else returns false. + */ +static VALUE c_iconified_get (VALUE self) +{ + GET_OBJ (self, RbEcoreEvas, ee); + + return ecore_evas_iconified_get (ee->real) ? Qtrue : Qfalse; +} + +/* + * call-seq: + * ee.iconified(true or false) + * + * Sets whether ee is iconified or not. + */ +static VALUE c_iconified_set (VALUE self, VALUE val) +{ + GET_OBJ (self, RbEcoreEvas, ee); + + CHECK_BOOL (val); + + ecore_evas_iconified_set (ee->real, val == Qtrue); + + return Qnil; +} + + /* FIXME: this is unsafe! * :nodoc: */ @@ -687,8 +751,6 @@ void Init_EcoreEvas (void) { cEcoreEvas = rb_define_class_under (mEvas, "EcoreEvas", rb_cObject); - rb_define_private_method (rb_singleton_class (cEcoreEvas), - "new", NULL, 0); rb_define_method (cEcoreEvas, "initialize", c_init, -1); rb_define_method (cEcoreEvas, "inspect", c_inspect, 0); rb_define_method (cEcoreEvas, "delete", c_delete, 0); @@ -717,6 +779,10 @@ void Init_EcoreEvas (void) rb_define_method (cEcoreEvas, "sticky=", c_sticky_set, 1); rb_define_method (cEcoreEvas, "rotation", c_rotation_get, 0); rb_define_method (cEcoreEvas, "rotation=", c_rotation_set, 1); + rb_define_method (cEcoreEvas, "name_class", c_name_class_get, 0); + rb_define_method (cEcoreEvas, "name_class=", c_name_class_set, 1); + rb_define_method (cEcoreEvas, "iconified?", c_iconified_get, 0); + rb_define_method (cEcoreEvas, "iconified=", c_iconified_set, 1); rb_define_method (cEcoreEvas, "on_resize", c_on_resize, 0); rb_define_method (cEcoreEvas, "on_move", c_on_move, 0);