Source code for pyface.workbench.editor_manager

# (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!
""" The default editor manager. """


import weakref


from traits.api import HasTraits, Instance, provides


from .i_editor_manager import IEditorManager
from .traits_ui_editor import TraitsUIEditor


[docs]@provides(IEditorManager) class EditorManager(HasTraits): """ The default editor manager. """ # 'IEditorManager' interface ------------------------------------------- # The workbench window that the editor manager manages editors for ;^) window = Instance("pyface.workbench.api.WorkbenchWindow") # ------------------------------------------------------------------------ # 'object' interface. # ------------------------------------------------------------------------ def __init__(self, **traits): """ Constructor. """ super().__init__(**traits) # A mapping from editor to editor kind (the factory that created them). self._editor_to_kind_map = weakref.WeakKeyDictionary() return # ------------------------------------------------------------------------ # 'IEditorManager' interface. # ------------------------------------------------------------------------
[docs] def add_editor(self, editor, kind): """ Registers an existing editor. """ self._editor_to_kind_map[editor] = kind
[docs] def create_editor(self, window, obj, kind): """ Create an editor for an object. """ editor = TraitsUIEditor(window=window, obj=obj) self.add_editor(editor, kind) return editor
[docs] def get_editor(self, window, obj, kind): """ Get the editor that is currently editing an object. """ for editor in window.editors: if self._is_editing(editor, obj, kind): break else: editor = None return editor
[docs] def get_editor_kind(self, editor): """ Return the 'kind' associated with 'editor'. """ return self._editor_to_kind_map[editor]
[docs] def get_editor_memento(self, editor): """ Return the state of an editor suitable for pickling etc. By default we don't save the state of editors. """ return None
[docs] def set_editor_memento(self, memento): """ Restore the state of an editor from a memento. By default we don't try to restore the state of editors. """ return None
# ------------------------------------------------------------------------ # 'Protected' 'EditorManager' interface. # ------------------------------------------------------------------------ def _is_editing(self, editor, obj, kind): """ Return True if the editor is editing the object. """ return editor.obj == obj