Module: RubyCurses::EventHandler

Instance Method Summary collapse

Instance Method Details

#bind(event, *xargs, &blk) ⇒ Object Also known as: add_binding

bind an event to a block, optional args will also be passed when calling



274
275
276
277
278
279
280
281
282
283
284
# File 'lib/rbcurse/rwidget.rb', line 274

def bind event, *xargs, &blk
 #$log.debug "#{self} called EventHandler BIND #{event}, args:#{xargs} "
  @handler ||= {}
  @event_args ||= {}
  #@handler[event] = blk
  #@event_args[event] = xargs
  @handler[event] ||= []
  @handler[event] << blk
  @event_args[event] ||= []
  @event_args[event] << xargs
end

#fire_handler(event, object) ⇒ Object

Fire all bindings for given event e.g. fire_handler :ENTER, self currently object usually contains self which is perhaps a bit of a waste, could contain an event object with source, and some relevant methods or values



295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
# File 'lib/rbcurse/rwidget.rb', line 295

def fire_handler event, object
  $log.debug " def fire_handler evt:#{event}, o: #{object.class}, hdnler:#{@handler}"
  if !@handler.nil?
  #blk = @handler[event]
    ablk = @handler[event]
    if !ablk.nil?
      aeve = @event_args[event]
      ablk.each_with_index do |blk, ix|
        #$log.debug "#{self} called EventHandler firehander #{@name}, #{event}, obj: #{object},args: #{aeve[ix]}"
        $log.debug "#{self} called EventHandler firehander #{@name}, #{event}"
        blk.call object,  *aeve[ix]
      end
    end # if
  end # if
end

#fire_property_change(text, oldvalue, newvalue) ⇒ Object

added on 2009-01-08 00:33 goes with dsl_property Need to inform listeners - done 2010-02-25 23:09



313
314
315
316
317
318
319
320
321
322
# File 'lib/rbcurse/rwidget.rb', line 313

def fire_property_change text, oldvalue, newvalue
  #$log.debug " FPC #{self}: #{text} #{oldvalue}, #{newvalue}"
  if @pce.nil?
    @pce = PropertyChangeEvent.new(self, text, oldvalue, newvalue)
  else
    @pce.set( self, text, oldvalue, newvalue)
  end
  fire_handler :PROPERTY_CHANGE, @pce
  @repaint_required = true # this was a hack and shoudl go, someone wanted to set this so it would repaint (viewport line 99 fire_prop
end