イベント
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によってログに記録されます。