#------------------------------------------------------------------------------
# Copyright (c) 2013-2025, Nucleic Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
#------------------------------------------------------------------------------
""" An example of the `ToolBar` widget.

This example demonstrates the use of the `ToolBar` widget. A `ToolBar`
can have an arbitrary number of children, which must be `Action` widgets.
In this fashion, a `ToolBar` is very similar to a `Menu` in a `MenuBar`.
The `ToolBar` also supports `ActionGroup` widgets in the same manner as
a `Menu`. A `ToolBar` is typically used as a child of a `MainWindow`,
but it can also used as a child of a `Container` and layed out using
constraints.

Implementation Notes:

    The tool bar facilities in Wx are very weak. Due to technical
    limitations, the `ToolBar` widget in Wx does not have the slick
    docking features which are available in Qt. It also does not
    look nice when used as the child of a `Container`. If a `ToolBar`
    is required for a particular application, strongly prefer the
    Qt backend over Wx (this is generally a good life-rule).

<< autodoc-me >>
"""
from __future__ import print_function
from enaml.layout.api import vbox
from enaml.widgets.api import (
    MainWindow, ToolBar, Action, ActionGroup, Container, Html
)

enamldef MyToolBar(ToolBar):
    Action:
        text = 'Button'
        tool_tip = text
    ActionGroup:
        Action:
            separator = True
        Action:
            checkable = True
            text = 'Exclusive'
            triggered :: print('triggered')
            toggled :: print('toggled')
        Action:
            checkable = True
            text = 'ToolBar'
        Action:
            checkable = True
            text = 'Buttons'
        Action:
            separator = True
    Action:
        checkable = True
        text = 'Checkable'
    Action:
        checkable = True
        text = 'ToolBar'
    Action:
        checkable = True
        text = 'Buttons'

enamldef Main(MainWindow):
    MyToolBar:
        pass
    Container:
        constraints = [vbox(html, tbar, spacing=0)]
        Html: html:
            source = '

Hello World!

'
        MyToolBar: tbar:
            pass
