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!");'