diff --git a/IPython/html/widgets/widget.py b/IPython/html/widgets/widget.py index 5f7feb0..85efc86 100644 --- a/IPython/html/widgets/widget.py +++ b/IPython/html/widgets/widget.py @@ -1,18 +1,18 @@ -from IPython.kernel.comm import Comm -from IPython.config import LoggingConfigurable -from IPython.utils.traitlets import Unicode, Float, Bool, Dict -from IPython.display import clear_output from copy import copy import uuid import sys +from IPython.kernel.comm import Comm +from IPython.config import LoggingConfigurable +from IPython.utils.traitlets import Unicode, Dict +from IPython.display import Javascript, display class Widget(Comm): ### Public declarations target_name = Unicode('widget') - default_view_name = Unicode() + view_name = Unicode() ### Private/protected declarations @@ -31,7 +31,11 @@ class Widget(Comm): if parent is not None: parent._children.append(self) self._parent = parent - + + # Send frontend type code. + display(Javascript(data=self._get_backbone_js())) + + # Create a comm. self.comm = Comm(target_name=self.target_name) self.comm.on_msg(self._handle_msg) @@ -114,9 +118,8 @@ class Widget(Comm): ### Public methods - def show(self, view_name=None): - if not view_name: - view_name = self.default_view_name + def _repr_widget_(self): + view_name = self.view_name if not view_name: view_name = self.target_name @@ -133,7 +136,8 @@ class Widget(Comm): # Now show children if any. for child in self.children: - child.show() + child._repr_widget_() + return self._get_backbone_js def send_state(self): @@ -145,4 +149,7 @@ class Widget(Comm): pass # Eat errors, nom nom nom self.comm.send({"method": "update", "state": state}) - \ No newline at end of file + + ### Private methods + def _get_backbone_js(self): + return 'alert("woohoo!");'