##// END OF EJS Templates
Display handler now supports full kwargs
Jonathan Frederic -
Show More
@@ -180,15 +180,13 b' class Widget(LoggingConfigurable):'
180 180 self.send_state(key=name)
181 181
182 182
183 def _handle_displayed(self, view_name, parent=None):
183 def _handle_displayed(self, **kwargs):
184 184 """Called when a view has been displayed for this widget instance
185 185
186 186 Parameters
187 187 ----------
188 view_name: unicode
189 Name of the view that was displayed.
190 parent: Widget instance [optional]
191 Widget that this widget should be displayed as a child of."""
188 [view_name]: unicode (optional kwarg)
189 Name of the view that was displayed."""
192 190 for handler in self._display_callbacks:
193 191 if callable(handler):
194 192 argspec = inspect.getargspec(handler)
@@ -204,12 +202,9 b' class Widget(LoggingConfigurable):'
204 202 elif nargs == 1:
205 203 handler(self)
206 204 elif nargs == 2:
207 handler(self, view_name)
208 elif nargs == 3:
209 handler(self, view_name, parent)
205 handler(self, kwargs.get('view_name', None))
210 206 else:
211 raise TypeError('Widget display callback must ' \
212 'accept 0-2 arguments, not %d.' % nargs)
207 handler(self, **kwargs)
213 208
214 209
215 210 # Public methods
@@ -375,7 +370,8 b' class Widget(LoggingConfigurable):'
375 370 - callback()
376 371 - callback(sender)
377 372 - callback(sender, view_name)
378 - callback(sender, view_name, parent)
373 - callback(sender, **kwargs)
374 kwargs from display call passed through without modification.
379 375 remove: bool
380 376 True if the callback should be unregistered."""
381 377 if remove and callback in self._display_callbacks:
@@ -385,7 +381,7 b' class Widget(LoggingConfigurable):'
385 381
386 382
387 383 # Support methods
388 def _repr_widget_(self, view_name=None):
384 def _repr_widget_(self, **kwargs):
389 385 """Function that is called when `IPython.display.display` is called on
390 386 the widget.
391 387
@@ -393,8 +389,7 b' class Widget(LoggingConfigurable):'
393 389 ----------
394 390 view_name: unicode (optional)
395 391 View to display in the frontend. Overrides default_view_name."""
396 if not view_name:
397 view_name = self.default_view_name
392 view_name = kwargs.get('view_name', self.default_view_name)
398 393
399 394 # Create a communication.
400 395 self._open_communication()
@@ -405,12 +400,11 b' class Widget(LoggingConfigurable):'
405 400 # Show view.
406 401 if self.parent is None or self.parent._comm is None:
407 402 self._send({"method": "display", "view_name": view_name})
408 self._handle_displayed(view_name)
409 403 else:
410 404 self._send({"method": "display",
411 405 "view_name": view_name,
412 406 "parent": self.parent._comm.comm_id})
413 self._handle_displayed(view_name, self.parent)
407 self._handle_displayed(**kwargs)
414 408 self._displayed = True
415 409
416 410 # Now display children if any.
General Comments 0
You need to be logged in to leave comments. Login now