新規作成  編集  Ruby-GNOME2 Project Website  ページ一覧  検索  更新履歴  編集履歴  RSS  ログイン

レンジウィジェット共通のメソッド

レンジウィジェット共通のメソッド

レンジウィジェットクラスの内部はかなり複雑である. しかし,ハックしたいと思っているならば,全ての「ベースクラス」ウィジェット同様,その複雑さ自体が興味深いものになるだろう. さらに,レンジウィジェットが定義するメソッドとシグナルのほとんどは,実際には派生ウィジェットを書くときにだけ試用される.

しかしながら,レンジウィジェットが定義するメソッドの中にはいくつかは有用なメソッドが存在し,これらのメソッドは全てのレンジウィジェットで動作する.

アップデートポリシの設定

レンジウィジェットの「アップデートポリシ」は,ユーザによる操作のどの部分でアジャストメントのvalueを変更し,"value_changed"シグナルを発行するか,を決定する. アップデートポリシは以下の定数のうちのいずれかで指定する:

Gtk::UPDATE_CONTINUOUS
これはデフォルトのポリシである."value_changed"シグナルは連続的に発行される.つまり,スライダがほんのわずかでも動かされるたびに発行される.
Gtk::UPDATE_DISCONTINUOUS
スライダを動かすのを止め,マウスボタンをリリースした時に"value_changed"シグナルが発行される.
Gtk::UPDATE_DELAYED
ユーザーがマウスボタンをリリースしたとき,またはほんの少しの間スライダの動きを止めたときに"value_changed"シグナルが発行される.

レンジウィジェットのアップデートポリシはGtk::Range#update_policy=またはGtk::Range#set_update_policyで設定する:

Gtk::Range#update_policy=(policy)
Gtk::Range#set_update_policy(policy)

アジャストメントの取得と設定

「その場で」レンジウィジェットのアジャストメント?を取得したり設定したりするには,ご想像通り,以下のメソッドを使用する:

Gtk::Range#adjustment                   # 取得

Gtk::Range#adjustment=(adjustment)      # 設定
Gtk::Range#set_adjustment(adjustment)

Gtk::Range#adjustmentは,レンジウィジェットが接続しているアジャストメントオブジェクトを返す.

アジャストメントのフィールドを変更したかどうかに関係なく,既にレンジウィジェットが使用しているアジャストメントをGtk::Range#adjustment=に渡しても何も起こらない. 新しいアジャストメントを渡した場合,古いアジャストメントへの参照を外し(可能ならそれを破壊する),適切なシグナルを新しいアジャストメントに接続し,さらにスライダのサイズや位置を再計算し必要なら再描画を実行する(少なくとも,実行すると期待されている)Gtk::Range#adjustment_changedを呼び出す. アジャストメントのセクションで述べたように,同じアジャストメントを再使用したいのなら,値を直接修正した後"changed"シグナルを発行すること:

Glib::Instantiatable#signal_emit("changed")
更新日時:2005/07/01 21:58:26
キーワード:
参照:[gtk2-tut]