English | Japanese
Ruby DockAppを使ったDockアプリケーションの作り方
最低限必要なのは、以下の記述です。 これで、Dockアプリケーションのウィンドウが表示されます。
require 'dockapp'
dock = DockApp.new("test application")
dock.start
情報を表示するためのウィンドウを作るには、 Dock::Itemを使います。 引数としては、幅と高さを与えます。
item1 = DockApp::Item.new(50, 40)
作成したItemを配置するには、DockApp.addを使います。 引数は、(X軸座標, Y軸座標, Item)です。座標は左上が(0, 0)です。
dock.add(5, 5, item1)
これで黒い箱が作成されます。

Itemには文字や線を表示することができます。
描画に使えるメソッドを以下に示します。
item1.draw_string(2, 10, "test") item1.drawLEDstring(2, 20, "LED", 0) item1.draw_point(40, 5, "red") item1.draw_line(10, 30, 20, 35, "blue")
これで、
な感じになります。
LED風なテキストの表示のみを行なう場合には、DockApp::Textが便利です。
イベントに応じて処理を行うには、signal_connectを使います。
item1.signal_connect("button_press_event") do |event|
puts "press!"
end
定期的に処理を行いたい場合には、DockApp::Timerを使います。
text1 = DockApp::Text.new("", 5, 1)
dock.add(5, 30, text1)
num = 0
timer1 = DockApp::Timer.new(1000) do
num_str = sprintf "%04d", num
text1.set_text(num_str)
num += 1
end
timer1.start
DockApp::Timer.newの引数には周期時間をミリ秒単位で指定します。
button_press_eventと組み合わせた例を以下に示します。
item2 = DockApp::Item.new(40, 12)
item3 = DockApp::Item.new(40, 12)
text1 = DockApp::Text.new("", 6, 1)
dock.add(8, 5, item2)
dock.add(8, 20, item3)
dock.add(8, 40, text1)
item2.draw_string(2, 10, "start")
item3.draw_string(2, 10, "stop")
num = 0
timer1 = DockApp::Timer.new(1000) do
num_str = sprintf "%06d", num
text1.set_text(num_str)
num += 1
end
item2.signal_connect("button_press_event") do
timer1.start
end
item3.signal_connect("button_press_event") do
timer1.stop
end
"start"をクリックするとタイマを開始して、 "stop"をクリックするとタイマを停止します。
ポップアップメニューを作成することができます。
ポップアップメニューの定義は以下のようにして行います。 なんだか、いまいちかっこわるいので、そのうち変える予定です。
popup = DockApp::PopUp.new(10, 10)
dock.add(0, 0, popup)
popup.add_item("item1\nitem2\nitem3")
メニューの表示と消去は自分で制御する必要があります。
text.signal_connect("button_press_event") do |event|
if event.button == 3
popup.popup do |n|
puts n
case n
when 0
text.set_text("item1")
when 1
text.set_text("item2")
when 2
text.set_text("item3")
else
text.set_text("none")
end
end
end
end
text.signal_connect("button_release_event") do |event|
popup.hide()
end
中央のウィンドウで右クリックするとメニューが表示されます。 選択すると、選択した内容に応じて文字が表示されます。
