コード例 #1
0
ファイル: widgets.py プロジェクト: vidartf/ipyvolume
 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'])
コード例 #2
0
ファイル: graph_widget.py プロジェクト: kasunsp/pinalpha_mvp
    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()
コード例 #3
0
 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)
コード例 #4
0
ファイル: JSWidget.py プロジェクト: mtomassoli/JSWidget
    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)
コード例 #5
0
    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')
コード例 #6
0
 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)
コード例 #7
0
    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)
コード例 #8
0
ファイル: upload.py プロジェクト: paradimdata/hublib
    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)
コード例 #9
0
    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)
コード例 #10
0
    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)
コード例 #11
0
    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)
コード例 #12
0
    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)
コード例 #13
0
 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)
コード例 #14
0
 def __init__(self, **kwargs):
     super(PanelSync, self).__init__(**kwargs)
     self._close_handlers = widgets.CallbackDispatcher()
     self.on_msg(self._handle_panel_msg)
コード例 #15
0
ファイル: editor.py プロジェクト: sodennis/ipymonaco
            # 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()
コード例 #16
0
 def __init__(self, **kwargs):
     super(ButtonSync, self).__init__(**kwargs)
     self._click_handlers = widgets.CallbackDispatcher()
     self.on_msg(self._handle_button_msg)
コード例 #17
0
 def __init__(self, **kwargs):
     super(Interval, self).__init__(**kwargs)
     self._tick_handlers = widgets.CallbackDispatcher()
     self.on_msg(self._handle_msg)
コード例 #18
0
 def __init__(self, **kwargs):
     super(MNetwork, self).__init__(**kwargs)
     self.modData = {}
     self._update_handlers = widgets.CallbackDispatcher()
     self.on_msg(self._handle_custom_msgs)
コード例 #19
0
ファイル: editor.py プロジェクト: paradimdata/hublib
 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)