diff --git a/IPython/html/widgets/widget.py b/IPython/html/widgets/widget.py
index 0f0c61b86..9aeaf950f 100644
--- a/IPython/html/widgets/widget.py
+++ b/IPython/html/widgets/widget.py
@@ -75,12 +75,22 @@ def _show_traceback(method):
ip.showtraceback()
return m
+
+def register(key=None):
+ def wrap(widget):
+ l = key if key is not None else widget._model_name.default_value
+ Widget.widget_types[l] = widget
+ return widget
+ return wrap
+
+
class Widget(LoggingConfigurable):
#-------------------------------------------------------------------------
# Class attributes
#-------------------------------------------------------------------------
_widget_construction_callback = None
widgets = {}
+ widget_types = {}
@staticmethod
def on_widget_constructed(callback):