Add basic type checking to parameters
This commit is contained in:
parent
20e821c45e
commit
7761b9a23c
@ -255,6 +255,7 @@ class Parameter(QtCore.QObject):
|
|||||||
try:
|
try:
|
||||||
if blockSignal is not None:
|
if blockSignal is not None:
|
||||||
self.sigValueChanged.disconnect(blockSignal)
|
self.sigValueChanged.disconnect(blockSignal)
|
||||||
|
value = self._interpretValue(value)
|
||||||
if self.opts['value'] == value:
|
if self.opts['value'] == value:
|
||||||
return value
|
return value
|
||||||
self.opts['value'] = value
|
self.opts['value'] = value
|
||||||
@ -265,6 +266,9 @@ class Parameter(QtCore.QObject):
|
|||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def _interpretValue(self, v):
|
||||||
|
return v
|
||||||
|
|
||||||
def value(self):
|
def value(self):
|
||||||
"""
|
"""
|
||||||
Return the value of this Parameter.
|
Return the value of this Parameter.
|
||||||
|
@ -4,10 +4,11 @@ from .Parameter import Parameter, registerParameterType
|
|||||||
from .ParameterItem import ParameterItem
|
from .ParameterItem import ParameterItem
|
||||||
from ..widgets.SpinBox import SpinBox
|
from ..widgets.SpinBox import SpinBox
|
||||||
from ..widgets.ColorButton import ColorButton
|
from ..widgets.ColorButton import ColorButton
|
||||||
|
from ..colormap import ColorMap
|
||||||
#from ..widgets.GradientWidget import GradientWidget ## creates import loop
|
#from ..widgets.GradientWidget import GradientWidget ## creates import loop
|
||||||
from .. import pixmaps as pixmaps
|
from .. import pixmaps as pixmaps
|
||||||
from .. import functions as fn
|
from .. import functions as fn
|
||||||
import os
|
import os, sys
|
||||||
from ..pgcollections import OrderedDict
|
from ..pgcollections import OrderedDict
|
||||||
|
|
||||||
class WidgetParameterItem(ParameterItem):
|
class WidgetParameterItem(ParameterItem):
|
||||||
@ -320,6 +321,39 @@ class SimpleParameter(Parameter):
|
|||||||
state['value'] = fn.colorTuple(self.value())
|
state['value'] = fn.colorTuple(self.value())
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
def _interpretValue(self, v):
|
||||||
|
fn = {
|
||||||
|
'int': int,
|
||||||
|
'float': float,
|
||||||
|
'bool': bool,
|
||||||
|
'str': self._interpStr,
|
||||||
|
'color': self._interpColor,
|
||||||
|
'colormap': self._interpColormap,
|
||||||
|
}[self.opts['type']]
|
||||||
|
return fn(v)
|
||||||
|
|
||||||
|
def _interpStr(self, v):
|
||||||
|
if sys.version[0] == '2':
|
||||||
|
if isinstance(v, QtCore.QString):
|
||||||
|
v = unicode(v)
|
||||||
|
elif not isinstance(v, basestring):
|
||||||
|
raise TypeError("Cannot set str parmeter from object %r" % v)
|
||||||
|
else:
|
||||||
|
if isinstance(v, QtCore.QString):
|
||||||
|
v = str(v)
|
||||||
|
elif not isinstance(v, str):
|
||||||
|
raise TypeError("Cannot set str parmeter from object %r" % v)
|
||||||
|
return v
|
||||||
|
|
||||||
|
def _interpColor(self, v):
|
||||||
|
return fn.mkColor(v)
|
||||||
|
|
||||||
|
def _interpColormap(self, v):
|
||||||
|
if not isinstance(v, ColorMap):
|
||||||
|
raise TypeError("Cannot set colormap parameter from object %r" % v)
|
||||||
|
return v
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
registerParameterType('int', SimpleParameter, override=True)
|
registerParameterType('int', SimpleParameter, override=True)
|
||||||
registerParameterType('float', SimpleParameter, override=True)
|
registerParameterType('float', SimpleParameter, override=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user