# This implements a "fake timer" object that emits the "timeout" signal # and a target object slot connected to this signal. # We also test the immediate object deletion...it seems to work class(faketimer,object) { timerEvent() { $this->$emit(timeout,$0) } } class(target,object) { constructor { $$->%num = 10; } timerSlot() { echo "Timer $0 fired $$->%num" $$->%num--; if($$->%num == 0) { echo "Deleting sender $$->$signalSender()->$name() : Kaboom!" # Immediate sender deletion.... delete -i $$->$signalSender $$->$startTimer(1000) } } timerEvent() { echo "Deleting self! : Kaboom!" delete $this; } } %source = $new(faketimer,0,sender) %target = $new(target,0,target) connect %source timeout %target timerSlot echo "Starting timer...." %source->$startTimer(1000)