Dock Pane Example

An example of the DockPane widget.

This example demonstrates the use of the DockPane widget. A DockPane can have at most one child, which must be a ‘Container` widget. The sizing of the DockPane is largely determined by the size constraints of the child Container. A DockPane must be used as the child of a MainWindow. There are several attribute on a DockPane which allow the developer to control the behavior of the DockPane.

Implementation Notes:

The docking facilities in Wx are very weak. Due to various technical limitations, the sizing of DockPane widgets in Wx is not nearly as good as it is on Qt. The cost of using a DockPane in Wx is also much higher than in Qt due to Wx’s horribly inefficient docking implementation. If docking 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 dock_pane and run:

$ enaml-run dock_pane.enaml

Screenshot

../_images/ex_dock_pane.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 `DockPane` widget.

This example demonstrates the use of the `DockPane` widget. A `DockPane`
can have at most one child, which must be a 'Container` widget. The
sizing of the `DockPane` is largely determined by the size constraints
of the child `Container`. A `DockPane` must be used as the child of
a `MainWindow`. There are several attribute on a `DockPane` which allow
the developer to control the behavior of the `DockPane`.

Implementation Notes:

    The docking facilities in Wx are very weak. Due to various technical
    limitations, the sizing of `DockPane` widgets in Wx is not nearly as
    good as it is on Qt. The cost of using a `DockPane` in Wx is also
    *much* higher than in Qt due to Wx's horribly inefficient docking
    implementation. If docking is required for a particular application,
    strongly prefer the Qt backend over Wx (this is generally a good
    life-rule).

<< autodoc-me >>
"""
from enaml.widgets.api import (
    MainWindow, DockPane, Container, PushButton, Html,
)


enamldef Main(MainWindow):
    DockPane:
        title << 'Dock Area %s | %s' % (dock_area, 'floating' if floating else 'docked')
        Container:
            PushButton:
                text = 'Foo'
            PushButton:
                text = 'Bar'
            PushButton:
                text = 'Baz'
    Container:
        Html:
            source = '<h1><center>Hello World!</center></h1>'