"""
>>> from anygui.Events import *
>>> class Test:
... def handle(self, **kw):
... print 'Handled!'
...
Basic functionality:
>>> s = Test()
>>> q = Test()
>>> link(s, 'default', q.handle)
>>> send(s, 'default')
Handled!
>>> unlink(s, 'default', q.handle)
>>> send(s, 'default')
>>> link(s, q.handle)
>>> send(s)
Handled!
>>> unlink(s, q.handle)
>>> send(s)
#>>> t = Test()
#>>> evt1 = Event()
#>>> evt1.type = 'something'
#>>> link(event='something', t.handle, weak=1)
#>>> send(event='something')
Handled!
[More comparison demonstrations?]
Weak handlers:
>>> s = Test()
>>> t = Test()
>>> link(s, t.handle, weak=1)
>>> send(s)
Handled!
>>> del t
>>> send(s)
>>>
Strong handlers:
>>> s = Test()
>>> t = Test()
>>> link(s, 'strong-handlers', t.handle)
>>> del t
>>> send(s, 'strong-handlers')
Handled!
Weak sources:
[Untestable...?]
Loop blocking:
>>> q = Test()
>>> s = Test()
>>> t = Test()
>>> link(q, q.handle, loop=1)
>>> link(s, t.handle)
>>> link(t, t.handle)
>>> send(q)
Handled!
>>> send(s)
Handled!
>>> send(t)
>>> send(t, loop=1)
Handled!
Wrapper functions:
>>> def wrapper_test(obj, **kw):
... print ''
... obj.handle()
... print ''
...
>>> s = Test()
>>> t = Test()
>>> link(s, 'wrapper-event', (t, wrapper_test))
>>> send(s, 'wrapper-event')
Handled!
Return values from event handlers:
>>> s = Test()
>>> def handler1(**kw): return 1
...
>>> def handler2(**kw): return 2
...
>>> def handler3(**kw): return 3
...
>>> link(s, 'return-values', handler1)
>>> link(s, 'return-values', handler2)
>>> link(s, 'return-values', handler3)
>>> send(s, 'return-values')
[1, 2, 3]
Globbing:
>>> def globbed_handler(**kw):
... print 'Here I am!'
...
>>> link(any, any, globbed_handler)
>>> s = Test()
>>> send(s, 'something')
Here I am!
>>> unlink(any, any, globbed_handler)
>>> link(any, globbed_handler)
>>> send(s)
Here I am!
>>> send(s, 'something')
[Other API functions]
Exception handling:
>>> def faulty_handler(**kw):
... print 1/0
...
>>> s = Test()
>>> link(s, faulty_handler)
>>> try:
... send(s)
... except:
... print 'Caught something'
...
Caught something
"""
if __name__ == "__main__":
print "If you want detailed output, use \"python test_events.py -v\"."
print "No output after this line indicates success."
import doctest, test_events
doctest.testmod(test_events)