Source code for pyface.action.traitsui_widget_action

# (C) Copyright 2005-2023 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!

from traits.api import Constant, HasTraits, Instance

from .action import Action


[docs]class TraitsUIWidgetAction(Action): """ A widget action containing a TraitsUI. If a object is supplied, then the UI is generated from the object's view, otherwise the ui is generated on using the Action object. Notes ----- This is currently only supported by the Qt backend. """ # TraitsUIWidgetAction traits ------------------------------------------- #: The underlying traits model to be displayed, or None. model = Instance(HasTraits) # Action traits --------------------------------------------------------- #: This is a widget action. style = Constant("widget") # ------------------------------------------------------------------------ # Action interface # ------------------------------------------------------------------------
[docs] def create_control(self, parent): """ Called when creating a "widget" style action. This constructs an TraitsUI subpanel-based control. It does no binding to the `perform` method. Parameters ---------- parent : toolkit control The toolkit control, usually a toolbar. Returns ------- control : toolkit control A toolkit control or None. """ ui = self.edit_traits(kind="subpanel", parent=parent) control = ui.control control._ui = ui return control
# ------------------------------------------------------------------------ # HasTraits interface # ------------------------------------------------------------------------
[docs] def trait_context(self): """ Use the model object for the Traits UI context, if appropriate. """ if self.model is not None: context = {"object": self.model, "action": self} return context return super().trait_context()