added pushCurrentState, removed initial automatic call from FunctionCall

This commit is contained in:
Darren Ranalli 2009-07-06 21:44:52 +00:00
parent 3e8eca5528
commit caca39b04a

View File

@ -24,6 +24,10 @@ class PushesStateChanges:
def getState(self): def getState(self):
return self._value return self._value
def pushCurrentState(self):
self._handleStateChange()
return self
def _addSubscription(self, subscriber): def _addSubscription(self, subscriber):
self._subscribers.add(subscriber) self._subscribers.add(subscriber)
subscriber._recvStatePush(self) subscriber._recvStatePush(self)
@ -213,8 +217,9 @@ class FunctionCall(ReceivesMultipleStateChanges, PushesStateChanges):
else: else:
self._bakedKargs[key] = arg self._bakedKargs[key] = arg
self._initialized = True self._initialized = True
# push the current state to any listeners # call pushCurrentState() instead
self._handleStateChange() ## push the current state to any listeners
##self._handleStateChange()
def destroy(self): def destroy(self):
ReceivesMultipleStateChanges.destroy(self) ReceivesMultipleStateChanges.destroy(self)
@ -252,6 +257,8 @@ if __debug__:
assert l == [] assert l == []
sv = StateVar(0) sv = StateVar(0)
fc = FunctionCall(handler, sv) fc = FunctionCall(handler, sv)
assert l == []
fc.pushCurrentState()
assert l == [0,] assert l == [0,]
sv.set(1) sv.set(1)
assert l == [0,1,] assert l == [0,1,]
@ -271,6 +278,8 @@ if __debug__:
sv = StateVar(0) sv = StateVar(0)
ksv = StateVar('a') ksv = StateVar('a')
fc = FunctionCall(handler, sv, kValue=ksv) fc = FunctionCall(handler, sv, kValue=ksv)
assert l == []
fc.pushCurrentState()
assert l == [(0,'a',),] assert l == [(0,'a',),]
sv.set(1) sv.set(1)
assert l == [(0,'a'),(1,'a'),] assert l == [(0,'a'),(1,'a'),]
@ -349,6 +358,8 @@ if __debug__:
l.append(value) l.append(value)
p = Pulse() p = Pulse()
fc = FunctionCall(handler, p) fc = FunctionCall(handler, p)
assert l == []
fc.pushCurrentState()
assert l == [False, ] assert l == [False, ]
p.sendPulse() p.sendPulse()
assert l == [False, True, False, ] assert l == [False, True, False, ]
@ -377,11 +388,11 @@ if __debug__:
l.append(value) l.append(value)
ep = EventPulse('testEvent') ep = EventPulse('testEvent')
fc = FunctionCall(handler, ep) fc = FunctionCall(handler, ep)
assert l == [False, ] assert l == []
messenger.send('testEvent') messenger.send('testEvent')
assert l == [False, True, False, ] assert l == [True, False, ]
messenger.send('testEvent') messenger.send('testEvent')
assert l == [False, True, False, True, False, ] assert l == [True, False, True, False, ]
fc.destroy() fc.destroy()
ep.destroy() ep.destroy()
del fc del fc
@ -410,6 +421,9 @@ if __debug__:
l.append(value) l.append(value)
ea = EventArgument('testEvent', index=1) ea = EventArgument('testEvent', index=1)
fc = FunctionCall(handler, ea) fc = FunctionCall(handler, ea)
assert l == []
fc.pushCurrentState()
assert l == [None, ]
messenger.send('testEvent', ['a', 'b']) messenger.send('testEvent', ['a', 'b'])
assert l == [None, 'b', ] assert l == [None, 'b', ]
messenger.send('testEvent', [1, 2, 3, ]) messenger.send('testEvent', [1, 2, 3, ])