##// END OF EJS Templates
Add the unlink method to javascript links to maintain compatibility with traitlet links
Add the unlink method to javascript links to maintain compatibility with traitlet links

File last commit:

r19390:e461f122
r19390:e461f122
Show More
widget_link.py
61 lines | 1.9 KiB | text/x-python | PythonLexer
"""Link and DirectionalLink classes.
Propagate changes between widgets on the javascript side
"""
#-----------------------------------------------------------------------------
# Copyright (c) 2014, the IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from .widget import Widget
from IPython.utils.traitlets import Unicode, Tuple, Any
#-----------------------------------------------------------------------------
# Classes
#-----------------------------------------------------------------------------
class Link(Widget):
"""Link Widget"""
_model_name = Unicode('LinkModel', sync=True)
widgets = Tuple(sync=True, allow_none=False)
def __init__(self, widgets=(), **kwargs):
kwargs['widgets'] = widgets
super(Link, self).__init__(**kwargs)
# for compatibility with traitlet links
def unlink(self):
self.close()
def link(*args):
return Link(widgets=args)
class DirectionalLink(Widget):
"""Directional Link Widget"""
_model_name = Unicode('DirectionalLinkModel', sync=True)
targets = Any(sync=True)
source = Tuple(sync=True)
# Does not quite behave like other widgets but reproduces
# the behavior of IPython.utils.traitlets.directional_link
def __init__(self, source, targets=(), **kwargs):
kwargs['source'] = source
kwargs['targets'] = targets
super(DirectionalLink, self).__init__(**kwargs)
# for compatibility with traitlet links
def unlink(self):
self.close()
def dlink(source, *targets):
return DirectionalLink(source, targets)