##// END OF EJS Templates
Remove comparisons in traitlet links
Sylvain Corlay -
Show More
@@ -192,14 +192,14 b' class link(object):'
192 raise TypeError('At least two traitlets must be provided.')
192 raise TypeError('At least two traitlets must be provided.')
193
193
194 self.objects = {}
194 self.objects = {}
195
195 initial = getattr(args[0][0], args[0][1])
196 initial = getattr(args[0][0], args[0][1])
196 for obj,attr in args:
197 for obj, attr in args:
197 if getattr(obj, attr) != initial:
198 setattr(obj, attr, initial)
198 setattr(obj, attr, initial)
199
199
200 callback = self._make_closure(obj,attr)
200 callback = self._make_closure(obj, attr)
201 obj.on_trait_change(callback, attr)
201 obj.on_trait_change(callback, attr)
202 self.objects[(obj,attr)] = callback
202 self.objects[(obj, attr)] = callback
203
203
204 @contextlib.contextmanager
204 @contextlib.contextmanager
205 def _busy_updating(self):
205 def _busy_updating(self):
@@ -218,13 +218,12 b' class link(object):'
218 if self.updating:
218 if self.updating:
219 return
219 return
220 with self._busy_updating():
220 with self._busy_updating():
221 for obj,attr in self.objects.keys():
221 for obj, attr in self.objects.keys():
222 if obj is not sending_obj or attr != sending_attr:
222 setattr(obj, attr, new)
223 setattr(obj, attr, new)
223
224
225 def unlink(self):
224 def unlink(self):
226 for key, callback in self.objects.items():
225 for key, callback in self.objects.items():
227 (obj,attr) = key
226 (obj, attr) = key
228 obj.on_trait_change(callback, attr, remove=True)
227 obj.on_trait_change(callback, attr, remove=True)
229
228
230 @skip_doctest
229 @skip_doctest
@@ -252,8 +251,7 b' class directional_link(object):'
252 # Update current value
251 # Update current value
253 src_attr_value = getattr(source[0], source[1])
252 src_attr_value = getattr(source[0], source[1])
254 for obj, attr in targets:
253 for obj, attr in targets:
255 if getattr(obj, attr) != src_attr_value:
254 setattr(obj, attr, src_attr_value)
256 setattr(obj, attr, src_attr_value)
257
255
258 # Wire
256 # Wire
259 self.source[0].on_trait_change(self._update, self.source[1])
257 self.source[0].on_trait_change(self._update, self.source[1])
General Comments 0
You need to be logged in to leave comments. Login now