Removed RCS-style IDs.
[ruby-esmart.git] / src / esmart_draggies / rb_esmart_draggies.c
1 /*
2  * Copyright (C) 2004 Tilman Sauerbeck (tilman at code-monkey de)
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #include <ruby.h>
20
21 #include <Esmart/Esmart_Draggies.h>
22 #include <evas/rb_evas.h>
23 #include <evas/rb_evas_object.h>
24 #include <ecore/rb_ecore_evas.h>
25
26 #include "../rb_esmart.h"
27
28 static void on_mouse_up (void *data, Evas *e, Evas_Object *o, void *ev)
29 {
30         ecore_evas_raise (data);
31 }
32
33 static VALUE c_init (VALUE self, VALUE ecore_evas)
34 {
35         static ID evas;
36         VALUE tmp;
37
38         CHECK_CLASS (ecore_evas, cEcoreEvas);
39         GET_OBJ (ecore_evas, RbEcoreEvas, ee);
40         GET_OBJ (self, RbEvasObject, draggies);
41
42         draggies->real = esmart_draggies_new (ee->real);
43
44         if (!evas)
45                 evas = rb_intern ("evas");
46
47         tmp = rb_funcall (ecore_evas, evas, 0);
48         rb_call_super (1, &tmp);
49
50         esmart_draggies_event_callback_add (draggies->real,
51                                             EVAS_CALLBACK_MOUSE_UP,
52                                             on_mouse_up, ee->real);
53
54         return self;
55 }
56
57 static VALUE c_button_set (VALUE self, VALUE val)
58 {
59         GET_OBJ (self, RbEvasObject, e);
60
61         Check_Type (val, T_FIXNUM);
62
63         esmart_draggies_button_set (e->real, FIX2INT (val));
64
65         return Qnil;
66 }
67
68 void Init_esmart_draggies (void)
69 {
70         VALUE c;
71
72         rb_require ("esmart");
73         rb_require ("ecore_evas");
74
75         c = rb_define_class_under (mEsmart, "Draggies", cEvasObject);
76
77         rb_define_method (c, "initialize", c_init, 1);
78         rb_define_method (c, "button=", c_button_set, 1);
79 }