[#11156] How to delete methods from superclass? — Clemens Hintze <c.hintze@...>
Hello,
25 messages
1998/12/01
[#11157] Re: How to delete methods from superclass?
— matz@... (Yukihiro Matsumoto)
1998/12/01
Hi, Clemens.
[#11176] English List [Re: How to delete methods from superclass?]
— gotoken@... (GOTO Kentaro)
1998/12/01
In message "[ruby-list:11157] Re: How to delete methods from superclass?"
[#11177] Re: English List [Re: How to delete methods from superclass?]
— Clemens Hintze <c.hintze@...>
1998/12/01
Hello Gotoken,
[#11178] Re: English List [Re: How to delete methods from superclass?]
— "Kikutani, Makoto" <kikutani@...>
1998/12/01
Hi, Clemens.
[#11180] Re: English List [Re: How to delete methods from superclass?]
— matz@... (Yukihiro Matsumoto)
1998/12/02
Hi, All.
[#11183] Re: English List [Re: How to delete methods from superclass?]
— Kikutani Makoto <kikutani@...>
1998/12/02
On Wed, Dec 02, 1998 at 01:09:40PM +0900,
[#11165] usage of Time class — Noritsugu Nakamura <nnakamur@...>
6 messages
1998/12/01
[#11206] variable $0 — ISII takesi <isii@...>
石井です
8 messages
1998/12/03
[#11207] $LOAD_PATH — ISII takesi <isii@...>
石井です
14 messages
1998/12/03
[#11211] Re: $LOAD_PATH
— matz@... (Yukihiro Matsumoto)
1998/12/03
まつもと ゆきひろです
[#11227] Re: $LOAD_PATH
— ISII takesi <isii@...>
1998/12/06
石井です。
[#11219] クラス定数の継承 — Yoshiki WADA <wada@...>
和田といいます。
6 messages
1998/12/03
[#11225] ruby and ISP — Noritsugu Nakamura <nnakamur@...>
9 messages
1998/12/06
[#11245] undefined local variable or method `__END__' (Cygwin 版 1.1c9) — たむら けんいち <t9655832@...>
8 messages
1998/12/08
[#11246] Re: undefined local variable or method `__END__' (Cygwin 版 1.1c9)
— WATANABE Hirofumi <watanabe@...>
1998/12/08
わたなべです.
[#11250] Ruby 用語集 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
25 messages
1998/12/08
[#11318] Re: Ruby 用語集
— Noritsugu Nakamura <nnakamur@...>
1998/12/14
[#11324] Re: Ruby 用語集
— KIMURA Koichi <kimura@...>
1998/12/14
[#11325] ruby on Win32 (Re: Ruby 用語集 )
— Koji Oda <oda@...1.qnes.nec.co.jp>
1998/12/15
小田@QNES です。
[#11257] comp.lang.* — Noritsugu Nakamura <nnakamur@...>
12 messages
1998/12/10
[#11265] Re: comp.lang.*
— "Kikutani, Makoto" <kikutani@...>
1998/12/10
「いしや株式会社」にはやられましたな〜。
[#11274] Re: comp.lang.*
— matz@... (Yukihiro Matsumoto)
1998/12/11
まつもと ゆきひろです
[#11258] require error? — OHARA Shigeki <os@...>
大原といいます。
12 messages
1998/12/10
[#11266] Re: require error?
— Yamada Kenji <kyamada@...>
1998/12/10
[#11269] 京都 (Re: [ruby-dev:3789] Re: List()) — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
21 messages
1998/12/11
[#11299] Re: 京都
— MAEDA Shugo <shugo@...>
1998/12/12
前田です。
[#11308] Re: 京都
— matz@... (Yukihiro Matsumoto)
1998/12/14
まつもと ゆきひろです
[#11312] Re: 京都
— Kazuhiro HIWADA <hiwada@...>
1998/12/14
ひわだです
[#11334] Re: 京都
— Motoyuki Kasahara <m-kasahr@...>
1998/12/15
笠原です。こんにちは。
[#11336] Re: 京都
— matz@... (Yukihiro Matsumoto)
1998/12/15
まつもと ゆきひろです
[#11276] pstore.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
5 messages
1998/12/11
[#11309] ext/ICQ 0.1 released — jkuro@...
黒田@大変な会社です。
6 messages
1998/12/14
[#11323] How to use GTK::timeout? — Takao KAWAMURA <kawamura@...>
gtkモジュールのtimeoutメソッドはどうやって使うのか教えて頂け
6 messages
1998/12/14
[#11337] Re: ruby on Win32 (Re: Ruby 用語集 ) — 助田 雅紀 <masaki.suketa@...>
助田です.
6 messages
1998/12/15
[#11348] sub or gsub の第2引数について — 石田 宏香 <h-ishida@...>
いしだです.
7 messages
1998/12/15
[#11349] Re: sub or gsub の第2引数について
— matz@... (Yukihiro Matsumoto)
1998/12/15
まつもと ゆきひろです
[#11364] Re: sub or gsub の第2引数について
— kjana@... (YANAGAWA Kazuhisa)
1998/12/15
In message <199812150559.OAA32348@picachu.netlab.co.jp>
[#11350] Re: ruby on Win32 (Re: Ruby 用語集 ) — 助田 雅紀 <masaki.suketa@...>
助田です.
9 messages
1998/12/15
[#11382] Hi. — kuma@... (Koji Kumagai)
5 messages
1998/12/17
[#11390] fep.rb — ttate@...
立石です。
6 messages
1998/12/18
[#11391] gtk — Takehama Hirohisa <thiro@...>
Ruby/Gtk に関して質問があります。
10 messages
1998/12/20
[#11392] Re: gtk
— "D.Kanda" <MAP2303@...>
1998/12/21
[#11395] Re: gtk
— Takehama Hirohisa <thiro@...>
1998/12/21
かんださん、ありがとうございます。
[#11393] mod_ruby — shugo@... (Shugo Maeda)
前田です。
28 messages
1998/12/21
[#11394] Re: mod_ruby
— matz@... (Yukihiro Matsumoto)
1998/12/21
まつもと ゆきひろです
[#11398] Re: mod_ruby
— shugo@... (Shugo Maeda)
1998/12/21
前田です。
[#11399] RE: mod_ruby
— OZAWA Sakuro <crouton@...>
1998/12/21
さくです。
[#11408] Re: Be port
— shugo@... (Shugo Maeda)
1998/12/22
前田です。
[#11409] Re: Be port
— matz@... (Yukihiro Matsumoto)
1998/12/22
まつもと ゆきひろです
[#11410] SMP (Re: Re: Be port)
— IWAMURO Motonori <iwa@...>
1998/12/22
岩室@富士通です。
[#11412] Re: SMP (Re: Re: Be port)
— ARIMA Yasuhiro <fit0298@...>
1998/12/22
Regard to "[ruby-list:11410] SMP (Re: Re: Be port)"
[#11404] djgpp 版と cygnusWin32 版の違いについて — 石田 宏香 <h-ishida@...>
いしだです.
6 messages
1998/12/22
[#11447] "\\1".upcase — gotoken@... (GOTO Kentaro)
ごとけんです
5 messages
1998/12/25
[#11454] Dir クラスの delete メソッド — URA Takefumi <tura@...>
はじめまして,浦と申します。よろしくお願いします。
5 messages
1998/12/25
[#11464] ruby and IDE — Noritsugu Nakamura <nnakamur@...>
18 messages
1998/12/27
[#11465] goto (Re: ruby and IDE)
— ttate@...
1998/12/27
立石です。
[#11466] Re: goto (Re: ruby and IDE)
— matz@... (Yukihiro Matsumoto)
1998/12/27
まつもと ゆきひろです
[#11472] call/cc (Re: goto)
— shugo@... (Shugo Maeda)
1998/12/28
前田です。
[#11473] call/cc (Re: goto)
— gotoken@... (GOTO Kentaro)
1998/12/28
ごとけんです
[#11478] Re: call/cc (Re: goto)
— matz@... (Yukihiro Matsumoto)
1998/12/28
まつもと ゆきひろです
[#11468] Ruby 1.2 FreeBSD port — Yasuhiro Fukuma <yasuf@...>
福間@福岡 です。
7 messages
1998/12/28
[ruby-list:11432] Re: (gtk) signal (Re: gtk)
From:
"D.Kanda" <MAP2303@...>
Date:
1998-12-23 22:27:09 UTC
List:
ruby-list #11432
かんだ@楓街です。 Takehama Hirohisa <thiro@kt.rim.or.jp>さんの書かれた、 「[ruby-list:11402] Re: (gtk) signal (Re: gtk) 」 からの引用です。 > > ちょっと見てみましたが、ruby/gtk の signal_connect が gtk の > > signal_connect_interp を使っているのが悪いのかなぁ…。もう少し見てみます。 Gtk+のソースを読んでみたところ、どうも親signal を辿るかどうかに使われて いるようです。同じ signal の次の handler を辿らないようにしたい場合は、処 理をやめたい handler 内で gtk_signal_emit_stop() を実行すればよいようです。 # これでいいんでしょうか? > Gtkな方々 とりあえず GC の周りは考えずに Gtk::Object::signal_emit_stop() メソッドを 定義しておきました。 KeyEvent だけ実装しました。週末にでももう少し整理して新しい版を出してお きます。gdk/gdkkeysyms.h に定義されている無数の:) キー番号もそのときに付け ますので、必要でしたらしばらくは直接整数を記述して下さいませ。 GtkText のキー入力を横取りするサンプルを付けておきます。小文字で入力して も大文字にします。 しかし、Gtk+ って signal 周りが難しい… 全てのコードは signal に通ず、signal を制する者は Gtk+ を制す :-P > > 話は違いますが、Gdk::Event って type というメソッドが定義されていますが、 > > Object::type とぶつかるのでマズいですね。event_type とかいう名前に変更した > > いですけれど、困る方はいますか? > > そんな話は send でもありましたね。今のうちに gtk 側の名前変更に賛成します。 これも変えました。 > > > Tk ではイベントを <Control-a> のように指定できますね。さらに > > > <Control-Button1> とか <Control-Meta-a> とかできます。GTK でもここまでで > > > きるとうれしいなと思います。 > > > > Tk は知らないんですけれど、<Control-a> というイベントがあるのでしょうか? > > Keyイベントを受け取ってそのキーコードを判別する、というのが普通:-Pかなと思 > > うのですが…。 > > Tk では <Control-a> というイベントを指定できます。また、gtk と同じよう > に <KeyPress> と指定して Keyイベント受けとって、キーコードを判別するこ > ともできます。両方指定してあって Control-a を押した場合は、より限定的 > なイベントの方にマッチするようです。 基本は Gtk+ 互換にしたいので、余分な機能は組み込むとしても別になると思い ます。問題は Gtk+ でも直接関数ポインタを代入すれば上の機能は果たせるのだけ れど、それは認められている方法なのかどうかかな…。とりあえずは代用できます ので、提供しないでおきます。
Attachments (2)
texthook.rb
(594 Bytes, text/x-ruby)
require 'gtk'
w = Gtk::Window::new(Gtk::WINDOW_TOPLEVEL)
w.signal_connect("delete_event") { exit }
w.signal_connect("destroy") { exit }
text = Gtk::Text.new
text.set_editable(true)
text.signal_connect("key_press_event") do |widget, event|
p event
ret = false
if widget.editable?
if event.length == 1 and ?a <= event.keyval and event.keyval <= ?z
widget.delete_selection()
widget.insert_text(event.string.capitalize, widget.get_length)
widget.signal_emit_stop("key_press_event")
ret = true
end
end
ret
end
w.add(text)
text.show
w.show
Gtk::main()
gtk.c.diff
(4.51 KB, text/x-diff)
*** gtk.c.orig Mon Dec 21 20:15:52 1998
--- gtk.c Thu Dec 24 06:57:56 1998
***************
*** 1002,1007 ****
--- 1002,1010 ----
case GDK_3BUTTON_PRESS:
return Data_Wrap_Struct(gdkEventButton, 0, gdk_event_free, event);
break;
+ case GDK_KEY_PRESS:
+ return Data_Wrap_Struct(gdkEventKey, 0, gdk_event_free, event);
+ break;
default:
return Data_Wrap_Struct(gdkEvent, 0, gdk_event_free, event);
}
***************
*** 1597,1602 ****
--- 1600,1615 ----
}
static VALUE
+ gobj_emit_stop(self, sig)
+ VALUE self, sig;
+ {
+ GtkObject *obj = get_gobject(self);
+
+ gtk_signal_emit_stop_by_name(obj, STR2CSTR(sig));
+ return self;
+ }
+
+ static VALUE
gobj_destroy(self)
VALUE self;
{
***************
*** 4426,4431 ****
--- 4439,4451 ----
}
static VALUE
+ txt_has_cursor(self)
+ VALUE self;
+ {
+ return GTK_TEXT(get_widget(self))->has_cursor? TRUE: FALSE;
+ }
+
+ static VALUE
tbar_initialize(argc, argv, self)
int argc;
VALUE *argv;
***************
*** 5253,5258 ****
--- 5273,5285 ----
}
static VALUE
+ edit_is_editable(self)
+ VALUE self;
+ {
+ return GTK_EDITABLE(get_widget(self))->editable? TRUE: FALSE;
+ }
+
+ static VALUE
entry_initialize(self)
VALUE self;
{
***************
*** 6755,6760 ****
--- 6782,6817 ----
}
static VALUE
+ gdkeventkey_time(self)
+ {
+ return INT2NUM(((GdkEventKey*)get_gdkevent(self))->time);
+ }
+
+ static VALUE
+ gdkeventkey_state(self)
+ {
+ return INT2NUM(((GdkEventKey*)get_gdkevent(self))->state);
+ }
+
+ static VALUE
+ gdkeventkey_keyval(self)
+ {
+ return INT2NUM(((GdkEventKey*)get_gdkevent(self))->keyval);
+ }
+
+ static VALUE
+ gdkeventkey_length(self)
+ {
+ return INT2NUM(((GdkEventKey*)get_gdkevent(self))->length);
+ }
+
+ static VALUE
+ gdkeventkey_string(self)
+ {
+ return str_new2(((GdkEventKey*)get_gdkevent(self))->string);
+ }
+
+ static VALUE
gdkeventmotion_window(self)
{
return make_gdkwindow(((GdkEventMotion*)get_gdkevent(self))->window);
***************
*** 7074,7079 ****
--- 7131,7138 ----
rb_define_method(gObject, "==", gobj_equal, 1);
rb_define_method(gObject, "inspect", gobj_inspect, 0);
+ rb_define_method(gObject, "signal_emit_stop", gobj_emit_stop, 1);
+
/* Widget */
rb_define_method(gWidget, "show", widget_show, 0);
rb_define_method(gWidget, "show_all", widget_show_all, 0);
***************
*** 7379,7384 ****
--- 7438,7444 ----
rb_define_method(gEditable, "claim_selection", edit_claim_selection, 2);
rb_define_method(gEditable, "delete_selection", edit_delete_selection, 0);
rb_define_method(gEditable, "changed", edit_changed, 0);
+ rb_define_method(gEditable, "editable?", edit_is_editable, 0);
/* Entry */
rb_define_method(gEntry, "initialize", entry_initialize, 0);
***************
*** 7680,7685 ****
--- 7740,7746 ----
rb_define_method(gText, "insert", txt_insert, 4);
rb_define_method(gText, "backward_delete", txt_backward_delete, 1);
rb_define_method(gText, "forward_delete", txt_forward_delete, 1);
+ rb_define_method(gText, "has_cursor?", txt_has_cursor, 0);
/* Toolbar */
rb_define_method(gToolbar, "initialize", tbar_initialize, -1);
***************
*** 7905,7911 ****
rb_define_method(gdkRectangle, "height", gdkrect_h, 0);
/* GdkEvent */
! rb_define_method(gdkEvent, "type", gdkevent_type, 0);
/* GdkEventExpose */
rb_define_method(gdkEventExpose, "area", gdkeventexpose_area, 0);
--- 7966,7972 ----
rb_define_method(gdkRectangle, "height", gdkrect_h, 0);
/* GdkEvent */
! rb_define_method(gdkEvent, "event_type", gdkevent_type, 0);
/* GdkEventExpose */
rb_define_method(gdkEventExpose, "area", gdkeventexpose_area, 0);
***************
*** 7914,7919 ****
--- 7975,7987 ----
rb_define_method(gdkEventButton, "x", gdkeventbutton_x, 0);
rb_define_method(gdkEventButton, "y", gdkeventbutton_y, 0);
rb_define_method(gdkEventButton, "button", gdkeventbutton_button, 0);
+
+ /* GdkEventKey */
+ rb_define_method(gdkEventKey, "time", gdkeventkey_time, 0);
+ rb_define_method(gdkEventKey, "state", gdkeventkey_state, 0);
+ rb_define_method(gdkEventKey, "keyval", gdkeventkey_keyval, 0);
+ rb_define_method(gdkEventKey, "length", gdkeventkey_length, 0);
+ rb_define_method(gdkEventKey, "string", gdkeventkey_string, 0);
/* GdkEventMotion */
rb_define_method(gdkEventMotion, "window", gdkeventmotion_window, 0);