# Path: mididings/units/base.py
# _UNIT_TYPES = (_Unit, list, dict, _constants._EventType)


from mididings.units.base import _UNIT_TYPES
import mididings.patch as _patch
import mididings.arguments as _arguments
# -*- coding: utf-8 -*-
#
# mididings
#
# Copyright (C) 2008-2014  Dominic Sacré  <dominic.sacre@gmx.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#




class Scene(object):
    """
    Scene(name, patch, init_patch=None, exit_patch=None)

    Construct a Scene object to be used with the :func:`run()` function.

    :param name: a string describing the scene.
    :param patch: the patch defining the MIDI processing to take place for
        incoming events.
    :param init_patch: an optional patch that will be triggered when
        switching to this scene.
    :param exit_patch: an optional patch that will be triggered when
        switching away from this scene.
    """
    @_arguments.accept(None, _arguments.nullable(str), _UNIT_TYPES,

# Path: mididings/units/base.py
# _UNIT_TYPES = (_Unit, list, dict, _constants._EventType)


# Path: mididings/scene.py
from mididings.units.base import _UNIT_TYPES
import mididings.patch as _patch
import mididings.arguments as _arguments

# -*- coding: utf-8 -*-
#
# mididings
#
# Copyright (C) 2008-2014  Dominic Sacré  <dominic.sacre@gmx.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#




class Scene(object):
    """
    Scene(name, patch, init_patch=None, exit_patch=None)

    Construct a Scene object to be used with the :func:`run()` function.

    :param name: a string describing the scene.
    :param patch: the patch defining the MIDI processing to take place for
        incoming events.
    :param init_patch: an optional patch that will be triggered when
        switching to this scene.
    :param exit_patch: an optional patch that will be triggered when
        switching away from this scene.
    """
    @_arguments.accept(None, _arguments.nullable(str), _UNIT_TYPES,

                       _arguments.nullable(_UNIT_TYPES),