@@ -16,27 +16,35 @@ Usage
1616.. doctest :: property_basic_dt
1717
1818 >>> from pydispatch import Dispatcher, Property
19+
1920 >>> class MyEmitter (Dispatcher ):
2021 ... name = Property()
2122 ... value = Property()
23+
2224 >>> class MyListener (object ):
2325 ... def on_name (self , instance , value , ** kwargs ):
2426 ... print (' emitter name is {} ' .format(value))
2527 ... def on_value (self , instance , value , ** kwargs ):
2628 ... print (' emitter value is {} ' .format(value))
29+
2730 >>> emitter = MyEmitter()
2831 >>> listener = MyListener()
32+
2933 >>> # Bind to the "name" and "value" properties of emitter
3034 >>> emitter.bind(name = listener.on_name, value = listener.on_value)
35+
3136 >>> # Set emitter.name property (triggering the on_name callback)
3237 >>> emitter.name = ' foo'
3338 emitter name is foo
39+
3440 >>> # Set emitter.value (triggering the on_value callback)
3541 >>> emitter.value = 42
3642 emitter value is 42
37- >>> # If the property value assigned equals the current value:
43+
44+ >>> # If the property value assigned equals the current value,
45+ >>> # the event isn't triggered.
3846 >>> emitter.value = 42
39- >>> # No event is dispatched
47+
4048 >>> emitter.value = 43
4149 emitter value is 43
4250
@@ -55,35 +63,48 @@ structure can trigger an event.
5563.. doctest :: property_containers
5664
5765 >>> from pydispatch import Dispatcher, ListProperty, DictProperty
66+
5867 >>> class MyEmitter (Dispatcher ):
5968 ... values = ListProperty()
6069 ... data = DictProperty()
70+
6171 >>> class MyListener (object ):
6272 ... def on_values (self , instance , value , ** kwargs ):
6373 ... print (' emitter.values = {} ' .format(value))
6474 ... def on_data (self , instance , value , ** kwargs ):
6575 ... print (' emitter.data = {} ' .format(value))
76+
6677 >>> emitter = MyEmitter()
6778 >>> listener = MyListener()
79+
80+ >>> # Bind to the "values" (list) and "data" (dict) properties of emitter
6881 >>> emitter.bind(values = listener.on_values, data = listener.on_data)
82+
6983 >>> emitter.values.append(' foo' )
7084 emitter.values = ['foo']
85+
7186 >>> emitter.values.extend([' bar' , ' baz' ])
7287 emitter.values = ['foo', 'bar', 'baz']
88+
7389 >>> # The property can be assigned directly
7490 >>> emitter.data = {' foo' :' bar' }
7591 emitter.data = {'foo': 'bar'}
92+
7693 >>> # or using item assignment
7794 >>> emitter.data[' foo' ] = ' baz'
7895 emitter.data = {'foo': 'baz'}
96+
7997 >>> # also through the update() method
8098 >>> emitter.data.update({' spam' :' eggs' })
8199 emitter.data = {'foo': 'baz', 'spam': 'eggs'}
100+
82101 >>> emitter.data.clear()
83102 emitter.data = {}
103+
84104 >>> # Create a nested dict
85105 >>> emitter.data[' fruit' ] = {' apple' :' red' }
86106 emitter.data = {'fruit': {'apple': 'red'}}
107+
87108 >>> # changes to the inner dict are propagated and dispatched
88109 >>> emitter.data[' fruit' ][' banana' ] = ' yellow'
89110 emitter.data = {'fruit': {'apple': 'red', 'banana': 'yellow'}}
0 commit comments