def test_send_on_dead_ref(self): """Test if sending to a gc'd callback works gracefully.""" class C: def foo(self, o, e): pass c = C() c1 = C() messenger.connect(c1, 'foo', c.foo) messenger.send(c1, 'foo') # Test if things behave sanely if a message was sent and one # of the callbacks has been gc'd. m = messenger.Messenger() l1 = len(m._signals[hash(c1)]['foo']) # del c messenger.send(c1, 'foo') # l2 = len(m._signals[hash(c1)]['foo']) # Since 'c' is gc'd this callback should have been cleared # out. self.assertEqual(l2, l1 - 1) # Clean up. messenger.disconnect(c1)
def _remove_listners(self): object = self.object kids = self.children_cache for key, val in kids.items(): if isinstance(val, tvtk.Collection): vtk_obj = tvtk.to_vtk(val) messenger.disconnect(vtk_obj, "ModifiedEvent", self._notify_children) else: object.on_trait_change(self._notify_children, key, remove=True)
def _remove_listners(self): object = self.object kids = self.children_cache for key, val in kids.items(): if isinstance(val, tvtk.Collection): vtk_obj = tvtk.to_vtk(val) messenger.disconnect(vtk_obj, 'ModifiedEvent', self._notify_children) else: object.on_trait_change(self._notify_children, key, remove=True)
def test_disconnect(self): """Tests if disconnection works correctly.""" global ret ret = None b = B() messenger.disconnect(b) b.send(1, test=1) self.assertEqual(b.a.event, None) self.assertEqual(b.a.args, None) self.assertEqual(b.a.kw, None) self.assertEqual(b.a.did_catch_all, 0) self.assertEqual(ret, None)
def test_catchall(self): """Tests if catch all handlers are called.""" b = B() b.send() self.assertEqual(b.a.event, 'method') self.assertEqual(b.a.args, ()) self.assertEqual(b.a.kw, {}) self.assertEqual(b.a.did_catch_all, 0) messenger.connect(b, 'AnyEvent', b.a.catch_all_cb) b.send(1, test=1) self.assertEqual(b.a.event, 'method') self.assertEqual(b.a.args, (1, )) self.assertEqual(b.a.kw, {'test': 1}) self.assertEqual(b.a.did_catch_all, 1) b.a.did_catch_all = 0 messenger.disconnect(b, 'AnyEvent') b.send(1, test=1) self.assertEqual(b.a.did_catch_all, 0)
def test_catchall(self): """Tests if catch all handlers are called.""" b = B() b.send() self.assertEqual(b.a.event, 'method') self.assertEqual(b.a.args, ()) self.assertEqual(b.a.kw, {}) self.assertEqual(b.a.did_catch_all, 0) messenger.connect(b, 'AnyEvent', b.a.catch_all_cb) b.send(1, test=1) self.assertEqual(b.a.event, 'method') self.assertEqual(b.a.args, (1,)) self.assertEqual(b.a.kw, {'test':1}) self.assertEqual(b.a.did_catch_all, 1) b.a.did_catch_all = 0 messenger.disconnect(b, 'AnyEvent') b.send(1, test=1) self.assertEqual(b.a.did_catch_all, 0)
def _recorder_changed(self, r): """When the recorder is set we add an event handler so we can record the change to the camera position after the interaction. """ iren = self._interactor if r is not None: self._script_id = r.get_script_id(self) id = iren.add_observer('EndInteractionEvent', messenger.send) self._camera_observer_id = id i_vtk = tvtk.to_vtk(iren) messenger.connect(i_vtk, 'EndInteractionEvent', self._record_camera_position) else: self._script_id = '' iren.remove_observer(self._camera_observer_id) i_vtk = tvtk.to_vtk(iren) messenger.disconnect(i_vtk, 'EndInteractionEvent', self._record_camera_position)
def __del__(self): messenger.disconnect(self)