Source code for enable.savage.trait_defs.ui.svg_button_editor
# (C) Copyright 2005-2022 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!
""" Traits UI button editor for SVG images.
"""
# -----------------------------------------------------------------------------
# Imports:
# -----------------------------------------------------------------------------
from enable.savage.trait_defs.ui.toolkit import toolkit_object
from traits.api import Bool, Enum, Int, Property, Range, Str, Any
from traitsui.api import BasicEditorFactory, View
from traitsui.ui_traits import AView
# -----------------------------------------------------------------------------
# 'SVGEditor' editor factory class:
# -----------------------------------------------------------------------------
[docs]class SVGButtonEditor(BasicEditorFactory):
# The editor class to be created
klass = Property
# Value to set when the button is clicked
value = Property
label = Str
filename = Str
# Extra padding to add to both the left and the right sides
width_padding = Range(0, 31, 3)
# Extra padding to add to both the top and the bottom sides
height_padding = Range(0, 31, 3)
# Presentation style
style = Enum("button", "radio", "toolbar", "checkbox")
# Orientation of the text relative to the image
orientation = Enum("vertical", "horizontal")
# The optional view to display when the button is clicked:
view = AView
width = Int(32)
height = Int(32)
tooltip = Str
toggle = Bool(True)
# the toggle state displayed
toggle_state = Bool(False)
# a file holding the image to display when toggled
toggle_filename = Any
toggle_label = Str
toggle_tooltip = Str
traits_view = View(["value", "|[]"])
# -------------------------------------------------------------------------
# object API
# -------------------------------------------------------------------------
def __init__(self, **traits):
self._value = 0
super().__init__(**traits)
# -------------------------------------------------------------------------
# Traits properties
# -------------------------------------------------------------------------
def _get_klass(self):
""" Returns the toolkit-specific editor class to be instantiated.
"""
return toolkit_object("svg_button_editor:SVGButtonEditor")
def _get_value(self):
return self._value
def _set_value(self, value):
self._value = value
if isinstance(value, str):
try:
self._value = int(value)
except ValueError:
try:
self._value = float(value)
except ValueError:
pass