1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 __maintainer__ = 'Lionel Martin <lionel@fluendo.com>'
19 __maintainer2__ = 'Florian Boucault <florian@fluendo.com>'
20
21 import weakref
22
23 from elisa.core import log
24
26
27
28
29
34
37
40
42 return id(self) == id(other)
43
47
49 """Attach an observer which will then be notified of all the changes
50 applied to the observable.
51
52 @param observer: observer to attach
53 @type observer: L{elisa.core.observers.observer.Observer}
54 """
55 self.debug("Adding observer %r" % observer)
56 real_observers = [weak_observer() for weak_observer in self._observers]
57 if observer not in real_observers:
58 self._observers.append(weakref.ref(observer))
59 else:
60 self.debug("Observer %r was already observing" % observer)
61
63 """Detach an observer which will not be notified anymore of changes
64 applied to the observable.
65
66 @param observer: observer to detach
67 @type observer: L{elisa.core.observers.observer.Observer}
68 """
69 self.debug("Removing observer %r", observer)
70 refs = weakref.getweakrefs(observer)
71 for ref in refs:
72 try:
73 self._observers.remove(ref)
74 except ValueError:
75 pass
76 """
77 # ignore the call if the observer was not known
78 self.debug("Observer %r was not observing", observer)
79 """
80
88
89
91
92
94 """
95 Message sent by a L{DictObservable} when one of its elements is
96 modified.
97
98 @param key: key of the dictionary for which the value was modified
99 @type key: object
100 @param value: new value associated to L{key}
101 @type value: object
102 """
103 pass
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118