def __init__(self, **kwargs): super(Figure, self).__init__(**kwargs) self._screenshot_handlers = widgets.CallbackDispatcher() self._selection_handlers = widgets.CallbackDispatcher() self.on_msg(self._handle_custom_msg) self._update_volume_data() self.observe(self.update_volume_data, ['xlim', 'ylim', 'zlim', 'volume_data_original', 'volume_data_max_shape'])
def __init__(self, graph_url='https://plot.ly/~playground/7', **kwargs): """Initialize a plotly graph widget Args: graph_url: The url of a Plotly graph Example: ``` GraphWidget('https://plot.ly/~chris/3375') ``` """ super(GraphWidget, self).__init__(**kwargs) # TODO: Validate graph_url self._graph_url = graph_url self._listener_set = set() self._event_handlers = { 'click': widgets.CallbackDispatcher(), 'hover': widgets.CallbackDispatcher(), 'zoom': widgets.CallbackDispatcher() } self._graphId = '' self.on_msg(self._handle_msg) # messages to the iframe client need to wait for the # iframe to communicate that it is ready # unfortunately, this two-way blocking communication # isn't possible # (https://github.com/ipython/ipython/wiki/IPEP-21:-Widget-Messages#caveats) # so we'll just cue up messages until they're ready to be sent self._clientMessages = deque()
def __init__(self, **kwargs): """Constructor""" super(SankeyWidget, self).__init__(**kwargs) self._selected_handlers = widgets.CallbackDispatcher() self._auto_png_filename = None self._auto_svg_filename = None self.on_msg(self._handle_sankey_msg)
def on(self, event_name, handler, drop_trace_data=True, remove=False): """ See https://plot.ly/javascript/plotlyjs-events/ handler will be passed a structure data which contains several information relative to the event. If `drop_trace_data` is True, then all the fields `data` and `full_data`, if present, will be dropped. This is useful for efficiency reasons. """ dispatcher = self._event_handlers.get(event_name) if remove: if not dispatcher or event_name not in dispatcher.callbacks: raise Exception('tried to remove a handler never registered') dispatcher.register_callback(handler, remove=True) else: if dispatcher: dispatcher.register_callback(handler) else: dispatcher = widgets.CallbackDispatcher() self._event_handlers[event_name] = dispatcher # The first registration must be done on the frontend as well. message = { 'method': 'on', 'event_name': event_name, 'drop_trace_data': drop_trace_data, 'graphId': self._graph_id } self._send_message(message)
def __init__(self, **kwargs): display(Javascript(js_template)) """Constructor""" super(self.__class__, self).__init__(**kwargs) # Allow the user to register error callbacks with the following signatures: # callback() # callback(sender) self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1]) # Listen for custom msgs self.on_msg(self._handle_custom_msg) width = kwargs.get('width', '100%') d = dict(width=width) temp = Template(css_template).substitute(d) display(HTML(temp)) self.value = kwargs.get('value', []) self.in_cb = False self.cb = kwargs.get('cb') if self.cb: self.observe(self._cb, names='value')
def __init__(self): super(ipywidgets.DOMWidget, self).__init__() self._mouse_move_callback_dispatcher = ipywidgets.CallbackDispatcher() #if not SelectableImageWidget.js_loaded: # SelectableImageWidget.load_js() # SelectableImageWidget.js_loaded = True self.on_msg(self._handle_msg_sub)
def __init__(self, **kwargs): """Constructor""" ipyw.DOMWidget.__init__(self, **kwargs) # Call the base. # Allow the user to register error callbacks with the following signatures: # callback() # callback(sender) self.errors = ipyw.CallbackDispatcher(accepted_nargs=[0, 1]) # Listen for custom msgs self.on_msg(self._handle_custom_msg)
def __init__(self, **kwargs): """Constructor""" super(self.__class__, self).__init__(**kwargs) # Allow the user to register error callbacks with the following signatures: # callback() # callback(sender) self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1]) # Listen for custom msgs self.on_msg(self._handle_custom_msg)
def __init__(self, **kwargs): super(ComponentSync, self).__init__(**kwargs) if 'model' in kwargs and kwargs["model"] is not None and kwargs["model"] != '': synched_models[kwargs["model"]] = self self._value_handler = widgets.CallbackDispatcher() #the method updateModel is executed in response to the sync_value event self._value_handler.register_callback(self.updateModel) self.on_msg(self._handle_component_msg)
def __init__(self, coord_widget=None, scale=1.0, width=-1, height=-1, layers=2, viewer_properties=None, cmap=None, *args, **kwargs): self.msg_id = 0 default_viewer_properties = { 'css': { 'border-style': 'solid', 'border-width': 2, 'overflow': 'scroll', 'position': 'relative' }, 'mousemoveDelay': 100, # in ms 'extraEventKeys': {} } default_cmap = { 'cmap': 'inferno', 'invert': False, 'px_min': None, 'px_max': None } self.scale = scale self.width = width self.height = height if viewer_properties is not None: default_viewer_properties.update(viewer_properties) if cmap is not None: default_cmap.update(cmap) self.viewer_properties = default_viewer_properties self.colormap = default_cmap self.coord_widget = coord_widget # Create a counter to keep track of the next layer id self._next_layer = 0 self.layers = [] self._layers = [] for l in range(layers): self.add_layer() widgets.DOMWidget.__init__(self, *args, **kwargs) # Allow the user to register call handlers for events self._click_handlers = widgets.CallbackDispatcher() # Action when receiving a message from the client self.on_msg(self._handle_client_msg)
def __init__(self, **kwargs): """Constructor""" # check for duplicates in links values = set() for i, link in enumerate(kwargs.get('links', [])): linksource = link['source'] linktarget = link['target'] if 'type' in link: linktype = link['type'] else: linktype = None if (linksource, linktarget, linktype) not in values: values.add((linksource, linktarget, linktype)) else: raise ValueError( 'Links has at least one duplicated entry. ' 'The first duplicated item appears at index {0}. ' 'See https://github.com/ricklupton/ipysankeywidget/issues/22' .format(i)) # Automatically create nodes nodes = kwargs.get('nodes', []) node_ids = {node['id'] for node in nodes} missing_ids = set() for link in kwargs.get('links', []): if link['source'] not in node_ids: missing_ids.add(link['source']) if link['target'] not in node_ids: missing_ids.add(link['target']) kwargs['nodes'] = nodes + [{'id': k} for k in missing_ids] super(SankeyWidget, self).__init__(**kwargs) self._node_clicked_handlers = widgets.CallbackDispatcher() self._link_clicked_handlers = widgets.CallbackDispatcher() self._auto_png_filename = None self._auto_svg_filename = None self.on_msg(self._handle_sankey_msg)
def __init__(self, **kwargs): """Constructor""" # Automatically create nodes nodes = kwargs.get('nodes', []) node_ids = {node['id'] for node in nodes} missing_ids = set() for link in kwargs.get('links', []): if link['source'] not in node_ids: missing_ids.add(link['source']) if link['target'] not in node_ids: missing_ids.add(link['target']) kwargs['nodes'] = nodes + [{'id': k} for k in missing_ids] super(SankeyWidget, self).__init__(**kwargs) self._node_clicked_handlers = widgets.CallbackDispatcher() self._link_clicked_handlers = widgets.CallbackDispatcher() self._auto_png_filename = None self._auto_svg_filename = None self.on_msg(self._handle_sankey_msg)
def __init__(self, **kwargs): super(Figure, self).__init__(**kwargs) self._screenshot_handlers = widgets.CallbackDispatcher() self._lasso_handlers = widgets.CallbackDispatcher() self.on_msg(self._handle_custom_msg)
def __init__(self, **kwargs): super(PanelSync, self).__init__(**kwargs) self._close_handlers = widgets.CallbackDispatcher() self.on_msg(self._handle_panel_msg)
# with a new memory address. Because of how `register_callback` works, # you will need to have same method with same memory address to remove it. # If remove is True and there is no callbacks provided, it will remove # all existing callbacks for this event. if callback is None and remove is True: self._event_handlers[event].callbacks.clear() self._event_handlers[event].register_callback(callback, remove=remove) event_handler.__doc__ = ''' Event handler for {event}. If remove is True and callback is not provided, it will remove all registered callbacks for the registered event handler. {link} '''.format( event=event, link= 'https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.icodeeditor.html#{event}' .format(event=event.lower())) event_handler.__name__ = event setattr(cls, event_handler.__name__, event_handler) # After the Editor class has been defined, dynamically add # event handlers method for the list of supported events that are pass # down from the JavaScript side. event_handlers = Editor._get_event_handlers() for event in Editor._get_events(): Editor._add_event_handler(event) event_handlers[event] = widgets.CallbackDispatcher()
def __init__(self, **kwargs): super(ButtonSync, self).__init__(**kwargs) self._click_handlers = widgets.CallbackDispatcher() self.on_msg(self._handle_button_msg)
def __init__(self, **kwargs): super(Interval, self).__init__(**kwargs) self._tick_handlers = widgets.CallbackDispatcher() self.on_msg(self._handle_msg)
def __init__(self, **kwargs): super(MNetwork, self).__init__(**kwargs) self.modData = {} self._update_handlers = widgets.CallbackDispatcher() self.on_msg(self._handle_custom_msgs)
def __init__(self, **kwargs): super(self.__class__, self).__init__(**kwargs) self.errors = widgets.CallbackDispatcher(accepted_nargs=[0, 1]) self.on_msg(self._handle_custom_msg)