Ruby/Gtk2備忘録

Ruby/Gtk2とは、Gtk+2をRubyから使えるようにするためのラッパーライブラリ(+α)です。
http://ruby-gnome2.sourceforge.net/ から入手することができます。

このページは、私がRuby/Gtk2が使っていて気付いたことが書いてあります。

まだ作成中です。書いたら順次追加していきます。

項目

内容

Ruby/Gtk2の使い方

Ruby/Gtk2を使うには、スクリプトの最初でライブラリをrequireし、 実際にGtkを使う前に初期化する必要がある。

require "gtk2"
…
Gtk.init
…
オブジェクト作成など
…
Gtk.main

Gtk.initした後で、ウインドウや様々なウィジェットを配置したり、 イベントハンドラの登録を行う。 それらが終了したら、Gtk.mainを実行して処理をGtkのメインループに移す。 Ruby/Gtk2を使ったスクリプトのおおまかな流れは以上のようになる。

Ruby/Gtk2のさまざまなウィジェットの使い方は、かなりの部分Ruby/Gtkと 同じだが、いくつか注意すべき点がある。

ウインドウの作成

Gtk::TextView

テキスト表示ウィジェット。 とはいってもかなり高機能なウィジェットで、テキストは文字単位に 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と 考えることができる。

Gdk::Color

色を表現するクラス。R,B,Gの範囲が0-65535であることに注意。(48bit color?(^^;)

color = Gdk::Color.new [Red], [Blue], [Green]

書くまでもないことですが、 このサイト内のいかなる場所へのリンクも自由です。

このサイトに関するご意見、ご要望、ご質問は t-ogs@earth.email.ne.jp まで。
Valid XHTML 1.1!