module PseudoSignalHandler

どんなオブジェクトでも、GLib::Objectのように、signalを発生させたり設定したりできるようにするモジュール。

Public Instance Methods

signal_connect(signal, proc=Proc.new) click to toggle source

シグナル signal に、ハンドラを登録する。シグナルIDを返す。

# File core/mui/gtk_pseudo_signal_handler.rb, line 8
def signal_connect(signal, proc=Proc.new)
  __signals[signal.to_sym] << proc
  proc.__id__ end
signal_emit(signal, *args) click to toggle source

シグナル signal を発生させる。 シグナルには、第一引数に self 、第二引数以降に args が渡される。

# File core/mui/gtk_pseudo_signal_handler.rb, line 20
def signal_emit(signal, *args)
  __signals[signal.to_sym].each{ |handler|
    Delayer.new{
      if not destroyed?
        handler.call(*[self, *args][0, (handler.arity <= -1 ? (args.size + 1) : handler.arity)]) end } }
  self end
signal_handler_disconnect(sid) click to toggle source

シグナルID sid の登録を解除する

# File core/mui/gtk_pseudo_signal_handler.rb, line 13
def signal_handler_disconnect(sid)
  __signals.each{ |pair|
    break if pair.last.reject!{ |handler| handler.__id__ == sid } }
  self end