Tool Bar Example

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).

Tip

To see this example in action, download it from tool_bar and run:

$ enaml-run tool_bar.enaml

Screenshot

../_images/ex_tool_bar.png

Example Enaml Code

#------------------------------------------------------------------------------
# Copyright (c) 2013, 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 = '<h1><center>Hello World!</center></h1>'
        MyToolBar: tbar:
            pass