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

gtk2-tut-ruler

ルーラ

ルーラウィジェットはあるウィンドウ内でのマウスポインタの位置を表示するために用いられる. ウィンドウは幅方向に沿って計測する垂直ルーラと高さ方向に下って計測する水平ルーラを持つことができる. ルーラ上の小さな三角形のインジケータが,ルーラに対応するポインタの正確な位置を示す.

まず最初にルーラを作成しなければならない.

Gtk::HRuler.new    # 水平ルーラ
Gtk::VRuler.new    # 垂直ルーラ

ルーラを作成したら計測の単位を定義することができる. ルーラの計測の単位にはGtk::PIXELS, Gtk::INCHESあるいはGtk::CENTIMETERSを指定できる. 次のメソッドで単位の指定を行う:

Gtk::Ruler#metric=(metric)
Gtk::Ruler#set_metric(metric)

デフォルトはGtk::PIXELSである.

ルーラの他の重要な特徴はスケールの目盛線の付け方と,位置インジケータの最初の位置である. これらは次のメソッドで指定する:

Gtk::Ruler#set_range(lower, upper, position, max_size)

lowerとupper引数はルーラの範囲を定義し,max_sizeは表示できる最大の数値である. positionはルーラの位置インジケータの最初の位置を定義する

800ピクセル幅のウィンドウに垂直ルーラを渡すには

vruler = Gtk::VRuler.new
vruler.set_range(0, 800, 0, 800)

のようにすればよい.

ルーラ上に表示される目盛りは0から800で100ピクセルごとに数が振られる. もし代わりにルーラを7から16の範囲にしたければ,次のようにすればよい:

vruler.set_range(7, 16, 0, 20)

ルーラ上のインジケータは小さな三角印をしていて,このルーラに対応するポインタの位置を示す. もしルーラをマウスポインタを追跡するために使うなら,motion_notify_eventシグナルをルーラのGtk::Ruler#motion_notify_eventに接続する必要がある. ウィンドウ領域中の全てのマウスの移動を追跡するためには次のようにする:

area.signal_connect("motion_notify_event") do |w, e|
  vruler.signal_emit("motion_notify_event", e)
  hruler.signal_emit("motion_notify_event", e)
end

以下の例は上に水平ルーラ,左に垂直ルーラの付いたドローイングエリアを作成する. ドローイングエリアのサイズは幅が600ピクセル,高さが400ピクセルである. 水平ルーラは7から13までの区間で100 ピクセル毎に目盛りが付いている. また垂直ルーラは0から400までの区間で100ピクセル毎に目盛りが付いている. ドローイングエリアとルーラの配置はテーブルを用いて行われる.

rulers.png

#! /usr/bin/env ruby
require 'gtk2'

window = Gtk::Window.new
window.signal_connect("delete_event") {Gtk.main_quit}
window.border_width = 10

table = Gtk::Table.new(3, 2, false)
window.add(table)

area = Gtk::DrawingArea.new
area.set_size_request(600, 400)
table.attach(area, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::FILL, 0, 0)
area.set_events(Gdk::EventMotion::POINTER_MOTION_MASK|Gdk::EventMotion::POINTER_MOTION_HINT_MASK)

hrule = Gtk::HRuler.new
hrule.metric = Gtk::PIXELS
hrule.set_range(7, 13, 0, 20)
table.attach(hrule, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::FILL, 0, 0)

vrule = Gtk::VRuler.new
vrule.metric = Gtk::PIXELS
vrule.set_range(0, 400, 10, 400)
area.signal_connect("motion_notify_event") do |w, e|
	vrule.signal_emit("motion_notify_event", e)
	hrule.signal_emit("motion_notify_event", e)
end
table.attach(vrule, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::FILL, 0, 0)

window.show_all
Gtk.main
更新日時:2006/07/02 14:33:43
キーワード:
参照:[gtk2-tut]