シグナルハンドラ

前回、「イベントくっつける」とか言ったけど、違うな。
イベントに対して処理をくっつけるんだな。

でもって、その処理はひとつのシグナルにいくつもくっつくそーな。

require 'gtk2'


button = Gtk::Button.new('Hello World')

one_callback_block_tag = button.signal_connect(:clicked){
  puts 'One'
}

two_callback_block_tag = button.signal_connect(:clicked){
  puts 'Two'
}

three_callback_block_tag = button.signal_connect(:clicked){
  puts 'Three'
}


button.signal_emit(:clicked)
puts '='*60


button.signal_handler_disconnect(two_callback_block_tag)
button.signal_emit(:clicked)
puts '='*60


button.signal_emit(:clicked)
puts '-'*50
button.signal_handler_block(one_callback_block_tag)
button.signal_emit(:clicked)
puts '-'*50
button.signal_handler_unblock(one_callback_block_tag)
button.signal_emit(:clicked)
puts '='*60


button.signal_handler_unblock(three_callback_block_tag)
  #=> Gtk Warning