イベント

English

UIngアプリケーションは、コールバックブロックを使ってネイティブイベントに応答します。 コールバックはインターフェースの構築中、UIng.mainを呼ぶ前に登録します。次は 最初のアプリケーションで作成したwindowを使う抜粋です。


entry = UIng::Entry.new
button = UIng::Button.new("Greet")
status = UIng::Label.new("Enter your name")

button.on_clicked do
  name = entry.text || ""
  window.msg_box("Greeting", "Hello, #{name}!")
end

entry.on_changed do |text|
  status.text = "#{text.size} characters"
end

必要な場合、コールバックは値を受け取ります。たとえばEntry#on_changedは現在の テキストを、Slider#on_changedは現在の整数値を渡します。

インターフェースを更新する

ネイティブコントロールの読み書きはUIスレッドで行います。別の場所で実行した処理から インターフェースを更新する場合は、UIの更新部分だけをUIng.queue_mainで予約します。


UIng.queue_main do
  status.text = "Finished"
end

コールバックが参照する可能性のあるコントロールとアプリケーションデータは、 コールバックが使われる間は保持してください。コールバック内の例外はネイティブな コールバック境界を越えず、UIngによってログに記録されます。