こんにちは。

他の MLなのですが、「Ruby/Gtkで新しく sub classを作ってその classに新し
いsignalを付ける場合はどうするのか」と言う話で、signalまわりを見てみたの
ですが良い方法がわからず、signal_emit()を付けたしただけで挫折してしまい
ました。(汗

と言うことで、signal_emit*()の patchです。signalの名前だけでなく idでも
signal_emit[_stop]()できる様にしたつもりです。

# 余談なのですが、cvsで sourceの管理をしていて、一枚の source file上で関
# 係のない部分二箇所のどちらかだけの diffを取りたい場合って、どうすると
# 良いんでしょうか? 他の部分をいぢる前に commitかしらん?
--
        yashi

--- rbgtk.c 1999/11/18 02:34:06 1.1.1.1.2.2 +++ rbgtk.c 1999/11/25 15:06:13 @@ -809,11 +809,40 @@ } static VALUE +gobj_emit(self, sig) + VALUE self, sig; +{ + switch (TYPE(sig)) { + case T_STRING: + gtk_signal_emit_by_name(get_gobject(self), STR2CSTR(sig)); + break; + case T_FIXNUM: + gtk_signal_emit(GTK_OBJECT(get_gobject(self)), FIX2INT(sig)); + break; + default: + TypeError("signal_emit: not signal id nor name of signal"); + break; + } + return self; +} + +static VALUE gobj_emit_stop(self, sig) VALUE self, sig; { - gtk_signal_emit_stop_by_name(GTK_OBJECT(get_gobject(self)), - STR2CSTR(sig)); + switch (TYPE(sig)) { + case T_STRING: + gtk_signal_emit_stop_by_name(GTK_OBJECT(get_gobject(self)), + STR2CSTR(sig)); + break; + case T_FIXNUM: + gtk_signal_emit_stop(GTK_OBJECT(get_gobject(self)), FIX2INT(sig)); + break; + default: + TypeError("signal_emit_stop: not signal id nor name of signal"); + break; + } + return self; }