Source code for enaml.qt.qt_spin_box
#------------------------------------------------------------------------------
# Copyright (c) 2012, Enthought, Inc.
# All rights reserved.
#------------------------------------------------------------------------------
from .qt.QtGui import QSpinBox
from .qt_control import QtControl
[docs]class QtSpinBox(QtControl):
""" A Qt implementation of an Enaml SpinBox.
"""
#--------------------------------------------------------------------------
# Setup Methods
#--------------------------------------------------------------------------
[docs] def create(self, tree):
""" Create and initialize the underlying widget.
"""
super(QtSpinBox, self).create(tree)
self.set_maximum(tree['maximum'])
self.set_minimum(tree['minimum'])
self.set_value(tree['value'])
self.set_prefix(tree['prefix'])
self.set_suffix(tree['suffix'])
self.set_special_value_text(tree['special_value_text'])
self.set_single_step(tree['single_step'])
self.set_read_only(tree['read_only'])
self.set_wrapping(tree['wrapping'])
self.widget().valueChanged.connect(self.on_value_changed)
#--------------------------------------------------------------------------
# Signal Handler
#--------------------------------------------------------------------------
[docs] def on_value_changed(self):
""" The signal handler for the 'valueChanged' signal.
"""
# Guard against loopback recursion since Qt will emit the
# valueChanged signal when programatically setting the value.
if 'value' not in self.loopback_guard:
content = {'value': self.widget().value()}
self.send_action('value_changed', content)
#--------------------------------------------------------------------------
# Message Handlers
#--------------------------------------------------------------------------
[docs] def on_action_set_maximum(self, content):
""" Handler for the 'set_maximum' action from the Enaml widget.
"""
self.set_maximum(content['maximum'])
[docs] def on_action_set_minimum(self, content):
""" Handler for the 'set_minimum' action from the Enaml widget.
"""
self.set_minimum(content['minimum'])
[docs] def on_action_set_value(self, content):
""" Handler for the 'set_value' action from the Enaml widget.
"""
self.set_value(content['value'])
[docs] def on_action_set_prefix(self, content):
""" Handler for the 'set_prefix' action from the Enaml widget.
"""
self.set_prefix(content['prefix'])
[docs] def on_action_set_suffix(self, content):
""" Handler for the 'set_suffix' action from the Enaml widget.
"""
self.set_suffix(content['suffix'])
[docs] def on_action_set_special_value_text(self, content):
""" Handler for the 'set_special_value_text' action from the
Enaml widget.
"""
self.set_special_value_text(content['special_value_text'])
[docs] def on_action_set_single_step(self, content):
""" Handler for the 'set_single_step' action from the Enaml
widget.
"""
self.set_single_step(content['single_step'])
[docs] def on_action_set_read_only(self, content):
""" Handler for the 'set_read_only' action from the Enaml
widget.
"""
self.set_read_only(content['read_only'])
[docs] def on_action_set_wrapping(self, content):
""" Handler for the 'set_wrapping' action from the Enaml
widget.
"""
self.set_wrapping(content['wrapping'])
#--------------------------------------------------------------------------
# Widget Update Methods
#--------------------------------------------------------------------------
[docs] def set_maximum(self, maximum):
""" Set the widget's maximum value.
"""
self.widget().setMaximum(maximum)
[docs] def set_minimum(self, minimum):
""" Set the widget's minimum value.
"""
self.widget().setMinimum(minimum)
[docs] def set_value(self, value):
""" Set the spin box's value.
"""
# The setValue will emit a changed signal. Since this will only
# be called as a result of an Enaml action, we guard against
# the loopback
with self.loopback_guard('value'):
self.widget().setValue(value)
[docs] def set_prefix(self, prefix):
""" Set the prefix for the spin box.
"""
self.widget().setPrefix(prefix)
[docs] def set_suffix(self, suffix):
""" Set the suffix for the spin box.
"""
self.widget().setSuffix(suffix)
[docs] def set_special_value_text(self, text):
""" Set the special value text for the spin box.
"""
self.widget().setSpecialValueText(text)
[docs] def set_single_step(self, step):
""" Set the widget's single step value.
"""
self.widget().setSingleStep(step)
[docs] def set_read_only(self, read_only):
""" Set the widget's read only flag.
"""
self.widget().setReadOnly(read_only)
[docs] def set_wrapping(self, wrapping):
""" Set the widget's wrapping flag.
"""
self.widget().setWrapping(wrapping)