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
中央のウィンドウで右クリックするとメニューが表示されます。 選択すると、選択した内容に応じて文字が表示されます。