text: # 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)
  