Module: Tk::Event::Handler

Defined in:
lib/ffi-tk/event/handler.rb

Class Method Summary collapse

Class Method Details

.invoke(id, event) ⇒ Object



12
13
14
15
# File 'lib/ffi-tk/event/handler.rb', line 12

def invoke(id, event)
  return unless found = @store.at(id)
  found.call(event)
end

.register(tag, sequence, &block) ⇒ Object



28
29
30
31
32
33
# File 'lib/ffi-tk/event/handler.rb', line 28

def register(tag, sequence, &block)
  id = register_block(block)
  Tk.interp.eval(@callback % [tag, sequence, id, sequence])
  @bound[[tag, sequence]] = block
  id
end

.register_block(block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/ffi-tk/event/handler.rb', line 17

def register_block(block)
  id = nil

  @mutex.synchronize{
    @store << block
    id = @store.size - 1
  }

  return id
end

.register_custom(block) {|id| ... } ⇒ Object

Yields:

  • (id)


35
36
37
38
39
# File 'lib/ffi-tk/event/handler.rb', line 35

def register_custom(block)
  id = register_block(block)
  yield id
  id
end

.unregister(tag, sequence) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/ffi-tk/event/handler.rb', line 41

def unregister(tag, sequence)
  key = [tag, sequence]

  if block = @bound[key]
    Tk.execute(:bind, tag, sequence, nil)
    id = @store.index(block)
    @store[id] = nil
    @bound.delete(key)
  end
end