[#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?"

[#11250] Ruby 用語集 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1998/12/08

[#11269] 京都 (Re: [ruby-dev:3789] Re: List()) — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

21 messages 1998/12/11
[#11299] Re: 京都 — MAEDA Shugo <shugo@...> 1998/12/12

前田です。

[#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

前田です。

[#11464] ruby and IDE — Noritsugu Nakamura <nnakamur@...>

18 messages 1998/12/27
[#11465] goto (Re: ruby and IDE) — ttate@... 1998/12/27

立石です。

[ruby-list:11392] Re: gtk

From: "D.Kanda" <MAP2303@...>
Date: 1998-12-21 03:05:02 UTC
List: ruby-list #11392
  かんだです。

Takehama Hirohisa <thiro@kt.rim.or.jp>さんの書かれた、
	「[ruby-list:11391] gtk」
からの引用です。

> Ruby/Gtk に関して質問があります。
> 
> Gtk::Text で、押されたキーのイベントを拾いたくて、

> 質問:
> ・signal_connect の最後で、真偽値か整数値を返さないといけないようなのですが、
>   これは何の値でしょうか?

  その signal の処理を続けるかやめるかを指定します。trueだとそこで止めます。
  ある signal に複数の handler が登録されている場合はその登録順に渡されます
が、さらに子signal方向、親widget 方向へと辿るようです。

  Gtk+ のチュートリアルの `20.2 Signal Emission and Propagation' を訳して
みると、

  GTK_BUTTON_PRESS イベントの扱われ方:
  ・以下はイベントの起きた widget から始まる。
  ・汎用 "event" シグナルを発する。ハンドラが TRUE を返したら処理を止める。
  ・特定的な "button_press_event" を発する。TRUE で返ったら処理を止める。
  ・親widget へ行き、上の処理を繰り返す。ハンドラが TRUE を返すか、トップ
    レベルの widget へ到達するまで続ける。

  と書かれています。


> ・event 引数は Gdk::gdkEvent であることはわかったのですが、押されたキー
>   の種類などを取り出すにはどうすればよいでしょうか。

  event周りはまだほとんどできていません。ここはホントは GdkEventKey インス
タンスを返すべきところで、GdkEventKey は keyval とかいうメソッドが定義され
るようです。
# これくらいならすぐにできますが、今ちょっと忙しいので今夜にでも


> ・キー入力処理を変えたい場合はどうすればよいでしょうか。
>   デフォルトでは Emacs 風のキーバインドになっていますが、それ
>   を変えたいのです。また、文字の挿入も自分でコントロールしたいです。

  これはちょっと手がかかりそう。
  処理は key_press_event で行われているようですので、サブクラスでフックし
て、処理を記述し、ハンドラからは true で返ればよさそうです。

  vi風のモード切り換えは↑のようにやることになるでしょうけれど、例えば WZ
風などといった Ctrl+なんとか を取り換えたいならもうちょっと楽ができそう
です。
  gtktext には control_key['z'-'a'+1] とかいった配列が用意されていて、これ
に関数ポインタを埋め込んでいます。で、実際に ctrl-a とかが押されると、
control_key[0] の関数が呼び出される。だから、この配列に別の関数ポインタを代
入すればそれでキーバインドが変更できることになりますね。ただ、gtkの関数とし
て用意はされていないようですので、仕様から考えることになります。

> ・この辺りについて、参考になるドキュメントやサンプルプログラムがあった
>   ら教えて下さい。

  とりあえず、http://www.globe.to/~moka/gtk/ 辺りからたどれる情報が参考に
なると思います。
# あとはソース:-P

> Text に限らないですがついでに:
> 
> ・ウィジェットの外観を RC を使わずに変えることはできないのでしょうか。
>   フォントや色について、です。
>   Tk だと confiugre 'bg'=>'blue' のようにできますが、Gtk では????

  僕は RC の方を知らなかったりします(^^;
  ではどうやっているかというと、Style を直接指定しています。

-------------------------------------------------------------------------
style = Gtk::Widget.get_default_style().copy()
[Gtk::STETE_NORMAL, Gtk::STATE_ACTIVE, Gtk::STATE_PRELIGHT,
 Gtk::STATE_SELECTED, Gtk::STATE_INSENSITIVE].each { |i|
  style.set_fg(i, 0xFFFF, 0xFFFF, 0)
}
Gtk::Widget.push_style(style)

w = Gtk::Window::new()
...

Gtk::Widget.pop_style()
-------------------------------------------------------------------------

  というような感じ。

In This Thread