Source code for cytoflowgui.editors.ext_enum_editor
#!/usr/bin/env python3.8
# coding: latin-1
# (c) Massachusetts Institute of Technology 2015-2018
# (c) Brian Teague 2018-2022
#
# 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.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
cytoflowgui.editors.ext_enum_editor
-----------------------------------
A `traitsui.editors.enum_editor.EnumEditor` that allows **_names** to be extended with
**extra_items** in the factory.
"""
from traits.api import Dict
from traitsui.qt.enum_editor import SimpleEditor as _EnumEditor
from traitsui.editors.enum_editor import EnumEditor
class _ExtendableEnumEditor(_EnumEditor):
def _get_names(self):
"""Gets the current set of enumeration names."""
return self._names + list(self.factory.extra_items.keys())
def _get_mapping(self):
"""Gets the current mapping."""
self._mapping.update(self.factory.extra_items)
return self._mapping
def _get_inverse_mapping(self):
"""Gets the current inverse mapping."""
self._inverse_mapping.update({v: k for k, v in list(self.factory.extra_items.items())})
return self._inverse_mapping
[docs]
class ExtendableEnumEditor(EnumEditor):
extra_items = Dict
"""The extra items for the enum, beyond what's in **names**"""
def _get_simple_editor_class(self):
""" Returns the editor class to use for "simple" style views.
The default implementation tries to import the SimpleEditor class in the
editor file in the backend package, and if such a class is not to found
it returns the SimpleEditor class defined in editor_factory module in
the backend package.
"""
return _ExtendableEnumEditor