|
# Copyright 2015 Bloomberg Finance L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
r"""
|
|
|
|
=======
|
|
Toolbar
|
|
=======
|
|
|
|
.. currentmodule:: bqplot.toolbar
|
|
|
|
.. autosummary::
|
|
:toctree: _generate/
|
|
|
|
Toolbar
|
|
"""
|
|
|
|
from traitlets import Unicode, Instance, Bool
|
|
from ipywidgets import DOMWidget, register, widget_serialization
|
|
|
|
from .interacts import PanZoom
|
|
from .figure import Figure
|
|
from ._version import __frontend_version__
|
|
|
|
|
|
@register
|
|
class Toolbar(DOMWidget):
|
|
|
|
"""Default toolbar for bqplot figures.
|
|
|
|
The default toolbar provides three buttons:
|
|
|
|
- A *Panzoom* toggle button which enables panning and zooming the figure.
|
|
- A *Save* button to save the figure as a png image.
|
|
- A *Reset* button, which resets the figure position to its original
|
|
state.
|
|
|
|
When the *Panzoom* button is toggled to True for the first time, a new
|
|
instance of ``PanZoom`` widget is created.
|
|
The created ``PanZoom`` widget uses the scales of all the marks that are on
|
|
the figure at this point.
|
|
When the *PanZoom* widget is toggled to False, the figure retrieves its
|
|
previous interaction.
|
|
When the *Reset* button is pressed, the ``PanZoom`` widget is deleted and
|
|
the figure scales reset to their initial state. We are back to the case
|
|
where the PanZoom widget has never been set.
|
|
|
|
If new marks are added to the figure after the panzoom button is toggled,
|
|
and these use new scales, those scales will not be panned or zoomed,
|
|
unless the reset button is clicked.
|
|
|
|
Attributes
|
|
----------
|
|
figure: instance of Figure
|
|
The figure to which the toolbar will apply.
|
|
"""
|
|
|
|
figure = Instance(Figure).tag(sync=True, **widget_serialization)
|
|
|
|
_panning = Bool(read_only=True).tag(sync=True)
|
|
_panzoom = Instance(PanZoom, default_value=None, allow_none=True,
|
|
read_only=True).tag(sync=True, **widget_serialization)
|
|
|
|
_view_name = Unicode('Toolbar').tag(sync=True)
|
|
_model_name = Unicode('ToolbarModel').tag(sync=True)
|
|
_view_module = Unicode('bqplot').tag(sync=True)
|
|
_model_module = Unicode('bqplot').tag(sync=True)
|
|
_view_module_version = Unicode(__frontend_version__).tag(sync=True)
|
|
_model_module_version = Unicode(__frontend_version__).tag(sync=True)
|