English | Japanese

Ruby DockApp Tutorial

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"をクリックするとタイマを停止します。

event


メニュー

ポップアップメニューを作成することができます。

ポップアップメニューの定義は以下のようにして行います。 なんだか、いまいちかっこわるいので、そのうち変える予定です。

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

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

menu


HINO Masayuki 最終更新日:2008年 06月 23日 12時 44分 26秒
SourceForge.net Logo