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