Source code for enaml.widgets.mdi_area

#------------------------------------------------------------------------------
#  Copyright (c) 2012, Enthought, Inc.
#  All rights reserved.
#------------------------------------------------------------------------------
from traits.api import Property, cached_property

from .constraints_widget import ConstraintsWidget
from .mdi_window import MdiWindow


[docs]class MdiArea(ConstraintsWidget): """ A widget which acts as a virtual window manager for other top level widget. An MdiArea can be used to provide an area within an application that can display other widgets in their own independent windows. Children of an MdiArea should be defined as instances of MdiWindow. """ #: A read only property which returns the area's MdiWindows. mdi_windows = Property(depends_on='children') #: An MdiArea expands freely in width and height by default. hug_width = 'ignore' hug_height = 'ignore' #: An MdiArea resists clipping only weakly by default. resist_width = 'weak' resist_height = 'weak' #-------------------------------------------------------------------------- # Private API #-------------------------------------------------------------------------- @cached_property def _get_mdi_windows(self): """ The getter for the 'mdi_windows' property. Returns ------- result : tuple The tuple of MdiWindow instances defined as children of this MdiArea. """ isinst = isinstance windows = (c for c in self.children if isinst(c, MdiWindow)) return tuple(windows)