Source code for highcharts_stock.options.stock_tools
from typing import Optional, List
from validator_collection import validators
from highcharts_stock.metaclasses import HighchartsMeta
from highcharts_stock.decorators import class_sensitive
from highcharts_stock.options.stock_tools.definitions import StockToolsDefinitions
[docs]class StockToolsGUI(HighchartsMeta):
    """Definitions for the buttons shown in the Stock Tools GUI."""
    def __init__(self, **kwargs):
        self._buttons = None
        self._class_name = None
        self._definitions = None
        self._enabled = None
        self._toolbar_class_name = None
        self.buttons = kwargs.get('buttons', None)
        self.class_name = kwargs.get('class_name', None)
        self.definitions = kwargs.get('definitions', None)
        self.enabled = kwargs.get('enabled', None)
        self.toolbar_class_name = kwargs.get('toolbar_class_name', None)
    @property
    def buttons(self) -> Optional[List[str]]:
        """A collection of strings pointing to configuration options for each item to be
        shown in the toolbar. Each name refers to a unique key from the
        :meth:`.definitions <highcharts_stock.options.stock_tools.StockToolsGUI.definitions`
        setting.
        Defaults to:
          .. code-block:: python
            [
                'indicators',
                'separator',
                'simpleShapes',
                'lines',
                'crookedLines',
                'measure',
                'advanced',
                'toggleAnnotations',
                'separator',
                'verticalLabels',
                'flags',
                'separator',
                'zoomChange',
                'fullScreen',
                'typeChange',
                'separator',
                'currentPriceIndicator',
                'saveChart'
            ]
        :rtype: :class:`list <python:list>` of :class:`str <python:str>`, or
          :obj:`None <python:None>`
        """
        return self._buttons
    @buttons.setter
    def buttons(self, value):
        if not value:
            self._buttons = None
        else:
            value = validators.iterable(value)
            self._buttons = [validators.string(x) for x in value]
    @property
    def class_name(self) -> Optional[str]:
        """The CSS class name to apply to the stock tools DIV element. Defaults to
        ``'highcharts-bindings-wrapper'``.
        :rtype: :class:`str <python:str>` or :obj:`None <python:None>`
        """
        return self._class_name
    @class_name.setter
    def class_name(self, value):
        self._class_name = validators.string(value, allow_empty = True)
    @property
    def definitions(self) -> Optional[StockToolsDefinitions]:
        """Configuration of the icons to use for the default Stock Tools GUI. If
        :obj:`None <python:None>`, applies the Highcharts Stock default icons.
        :rtype: :class:`StockToolsDefinitions` or :obj:`None <python:None>`
        """
        return self._definitions
    @definitions.setter
    @class_sensitive(StockToolsDefinitions)
    def definitions(self, value):
        self._definitions = value
    @property
    def enabled(self) -> Optional[bool]:
        """If ``True``, displays the *default* stock tools GUI. If ``False``, hides the
        stock tools GUI. Defaults to ``True``.
          .. seealso::
            * :ref:`Constructing a Custom Stock Tools GUI <custom_stock_tools_gui>`
        :rtype: :class:`bool <python:bool>` or :obj:`None <python:None>`
        """
        return self._enabled
    @enabled.setter
    def enabled(self, value):
        if value is None:
            self._enabled = None
        else:
            self._enabled = bool(value)
    @property
    def toolbar_class_name(self) -> Optional[str]:
        """The CSS class name to apply to the container that holds the stock tools
        buttons. Defaults to ``'stocktools-toolbar'``.
        :rtype: :class:`str <python:str>` or :obj:`None <python:None>`
        """
        return self._toolbar_class_name
    @toolbar_class_name.setter
    def toolbar_class_name(self, value):
        self._toolbar_class_name = validators.string(value, allow_empty = True)
    @classmethod
    def _get_kwargs_from_dict(cls, as_dict):
        kwargs = {
            'buttons': as_dict.get('buttons', None),
            'class_name': as_dict.get('className', None),
            'definitions': as_dict.get('definitions', None),
            'enabled': as_dict.get('enabled', None),
            'toolbar_class_name': as_dict.get('toolbarClassName', None),
        }
        return kwargs
    def _to_untrimmed_dict(self, in_cls = None) -> dict:
        untrimmed = {
            'buttons': self.buttons,
            'className': self.class_name,
            'definitions': self.definitions,
            'enabled': self.enabled,
            'toolbarClassName': self.toolbar_class_name,
        }
        return untrimmed
[docs]class StockTools(HighchartsMeta):
    """Configuration for the GUI which displays various tools for working with Highcharts
    Stock visualizations."""
    def __init__(self, **kwargs):
        self._gui = None
        self.gui = kwargs.get('gui', None)
    @property
    def _dot_path(self) -> Optional[str]:
        """The dot-notation path to the options key for the current class.
        :rtype: :class:`str <python:str>` or :obj:`None <python:None>`
        """
        return 'stockTools'
    @property
    def gui(self) -> Optional[StockToolsGUI]:
        """Definitions for the buttons shown in the Stock Tools GUI.
        :rtype: :class:`StockToolsGUI` or :obj:`None <python:None`
        """
        return self._gui
    @gui.setter
    @class_sensitive(StockToolsGUI)
    def gui(self, value):
        self._gui = value
    @classmethod
    def _get_kwargs_from_dict(cls, as_dict):
        kwargs = {
            'gui': as_dict.get('gui', None)
        }
        return kwargs
    def _to_untrimmed_dict(self, in_cls = None) -> dict:
        untrimmed = {
            'gui': self.gui
        }
        return untrimmed