2 * Copyright (C) 2004 ruby-ecore team (see AUTHORS)
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.
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.
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
26 #include "rb_animator.h"
28 #include "rb_idle_enterer.h"
29 #include "rb_event_handler.h"
30 #include "rb_fd_handler.h"
36 * Ecore.main_loop_begin
38 * Starts the Ecore main loop.
40 static VALUE m_main_loop_begin (VALUE self)
42 ecore_main_loop_begin ();
49 * Ecore.main_loop_iterate
51 * Run one iteration of the Ecore main loop.
53 static VALUE m_main_loop_iterate (VALUE self)
55 ecore_main_loop_iterate ();
62 * Ecore.main_loop_quit
64 * Stops the Ecore main loop.
66 static VALUE m_main_loop_quit (VALUE self)
68 ecore_main_loop_quit ();
73 static VALUE m_time_get (VALUE self)
75 return rb_float_new (ecore_time_get ());
79 static VALUE c_ev_exe_exit_init (VALUE self, VALUE event)
81 VALUE c = CLASS_OF (self);
82 Ecore_Event_Exe_Exit *e = (void *) event;
84 rb_define_attr (c, "pid", 1, 0);
85 rb_define_attr (c, "exit_code", 1, 0);
86 rb_define_attr (c, "exit_signal", 1, 0);
87 rb_define_attr (c, "exited", 1, 0);
88 rb_define_attr (c, "signalled", 1, 0);
90 rb_iv_set (self, "@pid", INT2FIX (e->pid));
91 rb_iv_set (self, "@exit_code", INT2FIX (e->exit_code));
92 rb_iv_set (self, "@exit_signal", INT2FIX (e->exit_signal));
93 rb_iv_set (self, "@exited", e->exited ? Qtrue : Qfalse);
94 rb_iv_set (self, "@signalled", e->signalled ? Qtrue : Qfalse);
100 static VALUE c_ev_sig_user_init (VALUE self, VALUE event)
102 Ecore_Event_Signal_User *e = (void *) event;
104 rb_define_attr (CLASS_OF (self), "number", 1, 0);
106 rb_iv_set (self, "@number", INT2FIX (e->number));
111 static VALUE c_ev_sig_exit_init (VALUE self, VALUE event)
113 VALUE c = CLASS_OF (self);
114 Ecore_Event_Signal_Exit *e = (void *) event;
116 rb_define_attr (c, "interrupt", 1, 0);
117 rb_define_attr (c, "quit", 1, 0);
118 rb_define_attr (c, "terminate", 1, 0);
120 rb_iv_set (self, "@interrupt", e->interrupt ? Qtrue : Qfalse);
121 rb_iv_set (self, "@quit", e->quit ? Qtrue : Qfalse);
122 rb_iv_set (self, "@terminate", e->terminate ? Qtrue : Qfalse);
127 static VALUE c_ev_sig_rt_init (VALUE self, VALUE event)
129 Ecore_Event_Signal_Realtime *e = (void *) event;
131 rb_define_attr (CLASS_OF (self), "number", 1, 0);
133 rb_iv_set (self, "@number", INT2FIX (e->num));
138 static void at_exit ()
143 void Init_ecore (void)
151 mEcore = rb_define_module ("Ecore");
153 rb_define_module_function (mEcore, "main_loop_begin",
154 m_main_loop_begin, 0);
155 rb_define_module_function (mEcore, "main_loop_iterate",
156 m_main_loop_iterate, 0);
157 rb_define_module_function (mEcore, "main_loop_quit",
158 m_main_loop_quit, 0);
159 rb_define_module_function (mEcore, "time", m_time_get, 0);
165 Init_EventHandler ();
169 ADD_EVENT (mEcore, ECORE_EVENT_SIGNAL_HUP,
170 "SignalHupEvent", c);
173 ADD_EVENT (mEcore, ECORE_EVENT_SIGNAL_POWER,
174 "SignalPowerEvent", c);
178 ADD_EVENT (mEcore, ECORE_EVENT_EXE_EXIT, "ExeExitEvent", c);
179 rb_define_private_method (c, "initialize", c_ev_exe_exit_init, 1);
183 ADD_EVENT (mEcore, ECORE_EVENT_SIGNAL_USER,
184 "SignalUserEvent", c);
185 rb_define_private_method (c, "initialize", c_ev_sig_user_init, 1);
188 ADD_EVENT (mEcore, ECORE_EVENT_SIGNAL_EXIT,
189 "SignalExitEvent", c);
190 rb_define_private_method (c, "initialize", c_ev_sig_exit_init, 1);
192 /* SIGNAL_REALTIME */
193 ADD_EVENT (mEcore, ECORE_EVENT_SIGNAL_REALTIME,
194 "SignalRealtimeEvent", c);
195 rb_define_private_method (c, "initialize", c_ev_sig_rt_init, 1);