:mod:`dip.pui`
==============
.. module:: dip.pui

The :mod:`dip.pui` module implements a :term:`toolkit` independent API for
creating a user interface procedurally.


:func:`Action`
--------------
.. function:: Action(parent=None, **args)

    Create a toolkit specific action that implements the
    :class:`~dip.ui.IAction` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the action.


:func:`CheckBox`
----------------
.. function:: CheckBox(parent=None, **args)

    Create a toolkit specific check box that implements the
    :class:`~dip.ui.ICheckBox` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the check box.


:func:`ComboBox`
----------------
.. function:: ComboBox(parent=None, **args)

    Create a toolkit specific combo box that implements the
    :class:`~dip.ui.IComboBox` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the combo box.


:func:`Dialog`
--------------
.. function:: Dialog(parent=None, **args)

    Create a toolkit specific dialog that implements the
    :class:`~dip.ui.IDialog` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the dialog.


:func:`Dock`
------------
.. function:: Dock(parent=None, **args)

    Create a toolkit specific dock that implements the
    :class:`~dip.ui.IDock` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the dock.


:func:`FilesystemLocationEditor`
--------------------------------
.. function:: FilesystemLocationEditor(parent=None, **args)

    Create a toolkit specific file selector that implements the
    :class:`~dip.ui.IFilesystemLocationEditor` interface.  Note that
    :class:`~dip.pui.StorageLocationEditor` should normally be used instead.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the filesystem location editor.


:func:`FloatSpinBox`
--------------------
.. function:: FloatSpinBox(parent=None, **args)

    Create a toolkit specific float spin box that implements the
    :class:`~dip.ui.IFloatSpinBox` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the float spin box.


:func:`Form`
------------
.. function:: Form(parent=None, **args)

    Create a toolkit specific form that implements the
    :class:`~dip.ui.IForm` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the form.


:func:`Grid`
------------
.. function:: Grid(parent=None, **args)

    Create a toolkit specific grid container that implements the
    :class:`~dip.ui.IGrid` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the grid container.


:func:`GroupBox`
----------------
.. function:: GroupBox(parent=None, **args)

    Create a toolkit specific group box that implements the
    :class:`~dip.ui.IGroupBox` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the group box.


:func:`HBox`
------------
.. function:: HBox(parent=None, **args)

    Create a toolkit specific horizontal box container that implements the
    the :class:`~dip.ui.IHBox` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the horizontal box container.


:func:`Label`
-------------
.. function:: Label(parent=None, **args)

    Create a toolkit specific label that implements the
    :class:`~dip.ui.ILabel` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the label.


:func:`LineEditor`
------------------
.. function:: LineEditor(parent=None, **args)

    Create a toolkit specific line editor that implements the
    :class:`~dip.ui.ILineEditor` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the line editor.


:func:`ListEditor`
------------------
.. function:: ListEditor(parent=None, **args)

    Create a toolkit specific list editor that implements the
    :class:`~dip.ui.IListEditor` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the list editor.


:func:`MainWindow`
------------------
.. function:: MainWindow(parent=None, **args)

    Create a toolkit specific main window that implements the
    :class:`~dip.ui.IMainWindow` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the main window.


:func:`Menu`
------------
.. function:: Menu(parent=None, **args)

    Create a toolkit specific menu that implements the
    :class:`~dip.ui.IMenu` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the menu.


:func:`MenuBar`
---------------
.. function:: MenuBar(parent=None, **args)

    Create a toolkit specific menu bar that implements the
    :class:`~dip.ui.IMenuBar` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the menu bar.


:func:`MessageArea`
-------------------
.. function:: MessageArea(parent=None, **args)

    Create a toolkit specific message area that implements the
    :class:`~dip.ui.IMessageArea` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the message area.


:func:`OptionList`
------------------
.. function:: OptionList(parent=None, **args)

    Create a toolkit specific option list that implements the
    :class:`~dip.ui.IOptionList` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the option list.


:func:`PushButton`
------------------
.. function:: PushButton(parent=None, **args)

    Create a toolkit specific push button that implements the
    :class:`~dip.ui.IPushButton` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the push button.


:func:`RadioButtons`
--------------------
.. function:: RadioButtons(parent=None, **args)

    Create a toolkit specific set of radio buttons that implements the
    :class:`~dip.ui.IRadioButtons` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the radio buttons.


:func:`SpinBox`
---------------
.. function:: SpinBox(parent=None, **args)

    Create a toolkit specific int spin box that implements the
    :class:`~dip.ui.ISpinBox` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the int spin box.


:func:`Splitter`
----------------
.. function:: Splitter(parent=None, **args)

    Create a toolkit specific splitter that implements the
    :class:`~dip.ui.ISplitter` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the splitter.


:func:`StorageLocationEditor`
-----------------------------
.. function:: StorageLocationEditor(parent=None, **args)

    Create a toolkit specific file selector that implements the
    :class:`~dip.ui.IStorageLocationEditor` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the storage location editor.


:func:`TabBar`
--------------
.. function:: TabBar(parent=None, **args)

    Create a toolkit specific tab bar that implements the
    :class:`~dip.ui.ITabBar` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the tab bar.


:func:`TabPage`
---------------
.. function:: TabPage(parent=None, **args)

    Create a toolkit specific tab page that implements the
    :class:`~dip.ui.ITabPage` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the tab page.


:func:`TableEditor`
-------------------
.. function:: TableEditor(parent=None, **args)

    Create a toolkit specific table editor that implements the
    :class:`~dip.ui.ITableEditor` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the table editor.


:func:`TextEditor`
------------------
.. function:: TextEditor(parent=None, **args)

    Create a toolkit specific text editor that implements the
    :class:`~dip.ui.ITextEditor` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the text editor.


:func:`ToolButton`
------------------
.. function:: ToolButton(parent=None, **args)

    Create a toolkit specific tool button that implements the
    :class:`~dip.ui.IToolButton` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the tool button.


:class:`Toolkit`
----------------
.. class:: Toolkit

    Base class: :class:`~dip.model.Singleton`

    The Toolkit class is a singleton that provides access to a default
    :term:`toolkit`.

    .. attribute:: instance = Instance(IToolkit)

        The toolkit instance.


:func:`VBox`
------------
.. function:: VBox(parent=None, **args)

    Create a toolkit specific vertical box container that implements the
    :class:`~dip.ui.IVBox` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the vertical box container.


:func:`ViewStack`
-----------------
.. function:: ViewStack(parent=None, **args)

    Create a toolkit specific view stack that implements the
    :class:`~dip.ui.IViewStack` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the view stack.


:func:`Wizard`
--------------
.. function:: Wizard(parent=None, **args)

    Create a toolkit specific wizard that implements the
    :class:`~dip.ui.IWizard` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the wizard.


:func:`WizardPage`
------------------
.. function:: WizardPage(parent=None, **args)

    Create a toolkit specific wizard page that implements the
    :class:`~dip.ui.IWizardPage` interface.
    
    :param parent:
        is the optional parent view.
    :param \*\*args:
        are the initial attribute and property values.
    :return:
        the wizard page.
