diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-19 16:14:43 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-19 16:14:43 +0000 |
commit | 068bc7e43a7e88d9d48aa627a846ef5f22660694 (patch) | |
tree | bd3f9c1e0fa20f4c864b4f7ae911d26c96c858d1 /ext/tcltklib/tcltklib.c | |
parent | 13e15cecf3f3bec0514ce9b2b4576135fe3f944c (diff) |
tcltklib.c :
* lib_do_one_event() : change default value of the argument
* lib_do_one_event() : returns true/false
* add TclTkLib::EventFlag::NONE ( == 0 )
* add set_no_event_wait() and get_no_event_wait()
* modify MANUAL.euc and README.euc
tk.rb :
* change default value of TkCore.do_one_event argument
* add TkCore.set_no_event_wait(wait) and TkCore.get_no_event_wait
* add Tk.exit ( == destroy root widget )
tkafter.rb :
* rename TkAfter => TkTimer ( TkAfter is an alias name now. )
* set_callback returns self
* continue() raises an exception, if already running or no procedure.
* skip() raises an exception, if not running.
sample/tktimer2.rb
* new sample for TkTimer class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tcltklib/tcltklib.c')
-rw-r--r-- | ext/tcltklib/tcltklib.c | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/ext/tcltklib/tcltklib.c b/ext/tcltklib/tcltklib.c index 9fa992e488..06322b54f1 100644 --- a/ext/tcltklib/tcltklib.c +++ b/ext/tcltklib/tcltklib.c @@ -153,6 +153,30 @@ get_eventloop_tick(self) } static VALUE +set_no_event_wait(self, wait) + VALUE self; + VALUE wait; +{ + int t_wait = NUM2INT(wait); + + if (t_wait <= 0) { + rb_raise(rb_eArgError, + "no_event_wait parameter must be positive number"); + } + + no_event_wait = t_wait; + + return wait; +} + +static VALUE +get_no_event_wait(self) + VALUE self; +{ + return INT2NUM(no_event_wait); +} + +static VALUE set_eventloop_weight(self, loop_max, no_event) VALUE self; VALUE loop_max; @@ -389,14 +413,20 @@ lib_do_one_event(argc, argv, self) { VALUE obj, vflags; int flags; + int ret; if (rb_scan_args(argc, argv, "01", &vflags) == 0) { - flags = 0; + flags = TCL_ALL_EVENTS; } else { Check_Type(vflags, T_FIXNUM); flags = FIX2INT(vflags); } - return INT2NUM(Tcl_DoOneEvent(flags)); + ret = Tcl_DoOneEvent(flags); + if (ret) { + return Qtrue; + } else { + return Qfalse; + } } /*---- class TclTkIp ----*/ @@ -911,6 +941,7 @@ Init_tcltklib() rb_raise(rb_eLoadError, "tcltklib: tcltk_stubs init error(%d)", ret); #endif + rb_define_const(ev_flag, "NONE", INT2FIX(0)); rb_define_const(ev_flag, "WINDOW", INT2FIX(TCL_WINDOW_EVENTS)); rb_define_const(ev_flag, "FILE", INT2FIX(TCL_FILE_EVENTS)); rb_define_const(ev_flag, "TIMER", INT2FIX(TCL_TIMER_EVENTS)); @@ -919,7 +950,8 @@ Init_tcltklib() rb_define_const(ev_flag, "DONT_WAIT", INT2FIX(TCL_DONT_WAIT)); eTkCallbackBreak = rb_define_class("TkCallbackBreak", rb_eStandardError); - eTkCallbackContinue = rb_define_class("TkCallbackContinue",rb_eStandardError); + eTkCallbackContinue = rb_define_class("TkCallbackContinue", + rb_eStandardError); rb_define_module_function(lib, "mainloop", lib_mainloop, -1); rb_define_module_function(lib, "mainloop_watchdog", @@ -927,6 +959,8 @@ Init_tcltklib() rb_define_module_function(lib, "do_one_event", lib_do_one_event, -1); rb_define_module_function(lib, "set_eventloop_tick",set_eventloop_tick,1); rb_define_module_function(lib, "get_eventloop_tick",get_eventloop_tick,0); + rb_define_module_function(lib, "set_no_event_wait", set_no_event_wait, 1); + rb_define_module_function(lib, "get_no_event_wait", get_no_event_wait, 0); rb_define_module_function(lib, "set_eventloop_weight", set_eventloop_weight, 2); rb_define_module_function(lib, "get_eventloop_weight", @@ -944,6 +978,8 @@ Init_tcltklib() rb_define_method(ip, "do_one_event", lib_do_one_event, -1); rb_define_method(ip, "set_eventloop_tick", set_eventloop_tick, 1); rb_define_method(ip, "get_eventloop_tick", get_eventloop_tick, 0); + rb_define_method(ip, "set_no_event_wait", set_no_event_wait, 1); + rb_define_method(ip, "get_no_event_wait", get_no_event_wait, 0); rb_define_method(ip, "set_eventloop_weight", set_eventloop_weight, 2); rb_define_method(ip, "get_eventloop_weight", get_eventloop_weight, 0); rb_define_method(ip, "restart", lib_restart, 0); |