Ruby/Gtk2とは、Gtk+2をRubyから使えるようにするためのラッパーライブラリ(+α)です。
http://ruby-gnome2.sourceforge.net/
から入手することができます。
このページは、私がRuby/Gtk2が使っていて気付いたことが書いてあります。
まだ作成中です。書いたら順次追加していきます。
Ruby/Gtk2を使うには、スクリプトの最初でライブラリをrequireし、 実際にGtkを使う前に初期化する必要がある。
require "gtk2" … Gtk.init … オブジェクト作成など … Gtk.main
Gtk.initした後で、ウインドウや様々なウィジェットを配置したり、 イベントハンドラの登録を行う。 それらが終了したら、Gtk.mainを実行して処理をGtkのメインループに移す。 Ruby/Gtk2を使ったスクリプトのおおまかな流れは以上のようになる。
Ruby/Gtk2のさまざまなウィジェットの使い方は、かなりの部分Ruby/Gtkと 同じだが、いくつか注意すべき点がある。
テキスト表示ウィジェット。 とはいってもかなり高機能なウィジェットで、テキストは文字単位に Gtk::TextTagを使って属性をつけることができるし、画像なども表示できる。
このウィジェットは、表示するデータを保持するクラス(Gtk::TextBuffer) と実際に表示を行うクラス(Gtk::TextView)とに分離されている。 このようにすることで一つのデータに対して複数のインターフェースを 持たせることができる。
使うには、まずGtk::TextBufferを作り、それを表示するGtk::TextViewを 作らなくてはいけない。
buffer = Gtk::TextBuffer.new view = Gtk::TextView.new buffer
カーソルのある位置に文字列を挿入するには次のようにする。
buffer.insert_at_cursor [str]
Gtk::TextBuffer内での位置を表すのに用いるクラスは、 Gtk::TextIterとGtk::TextMarkの二種類がある。 この二つは、テキストの編集に対する挙動が違っている。 例えば同じ場所を示すTextIterとTextMarkがあったすると、 その場所より前で5文字削除された場合、 Gtk::TextIterは同じ場所(TextBufferの先頭からの文字数が同じ場所) を指し続けるのに対して、TextMarkは5文字削除されたら5文字分前に戻った位置を 指すように移動する。 つまり、TextBufferでの絶対位置を表す(Bufferのある位置に張り付いている) のがTextIterで、テキストの文字に張りついているのがTextMarkと 考えることができる。
色を表現するクラス。R,B,Gの範囲が0-65535であることに注意。(48bit color?(^^;)
color = Gdk::Color.new [Red], [Blue], [Green]