Add option to set enum default values in DataFilterWidget
This commit is contained in:
parent
4d26b4bb20
commit
a8610bfb43
@ -3,6 +3,7 @@ from .. import parametertree as ptree
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from ..pgcollections import OrderedDict
|
from ..pgcollections import OrderedDict
|
||||||
from .. import functions as fn
|
from .. import functions as fn
|
||||||
|
from ..python2_3 import basestring
|
||||||
|
|
||||||
__all__ = ['DataFilterWidget']
|
__all__ = ['DataFilterWidget']
|
||||||
|
|
||||||
@ -76,6 +77,7 @@ class DataFilterParameter(ptree.types.GroupParameter):
|
|||||||
filter.setFields([
|
filter.setFields([
|
||||||
('field1', {'mode': 'range'}),
|
('field1', {'mode': 'range'}),
|
||||||
('field2', {'mode': 'enum', 'values': ['val1', 'val2', 'val3']}),
|
('field2', {'mode': 'enum', 'values': ['val1', 'val2', 'val3']}),
|
||||||
|
('field3', {'mode': 'enum', 'values': {'val1':True, 'val2':False, 'val3':True}}),
|
||||||
])
|
])
|
||||||
"""
|
"""
|
||||||
self.fields = OrderedDict(fields)
|
self.fields = OrderedDict(fields)
|
||||||
@ -177,16 +179,30 @@ class EnumFilterItem(ptree.types.SimpleParameter):
|
|||||||
self.setEnumVals(opts)
|
self.setEnumVals(opts)
|
||||||
|
|
||||||
def setEnumVals(self, opts):
|
def setEnumVals(self, opts):
|
||||||
vals = opts.get('values', [])
|
vals = opts.get('values', {})
|
||||||
|
|
||||||
prevState = {}
|
prevState = {}
|
||||||
for ch in self.children():
|
for ch in self.children():
|
||||||
prevState[ch.name()] = ch.value()
|
prevState[ch.name()] = ch.value()
|
||||||
self.removeChild(ch)
|
self.removeChild(ch)
|
||||||
|
|
||||||
if isinstance(vals, list):
|
if not isinstance(vals, dict):
|
||||||
vals = OrderedDict([(v,str(v)) for v in vals])
|
vals = OrderedDict([(v,(str(v), True)) for v in vals])
|
||||||
for val,vname in vals.items():
|
|
||||||
ch = ptree.Parameter.create(name=vname, type='bool', value=prevState.get(vname, True))
|
# Each filterable value can come with either (1) a string name, (2) a bool
|
||||||
|
# indicating whether the value is enabled by default, or (3) a tuple providing
|
||||||
|
# both.
|
||||||
|
for val,valopts in vals.items():
|
||||||
|
if isinstance(valopts, bool):
|
||||||
|
enabled = valopts
|
||||||
|
vname = str(val)
|
||||||
|
elif isinstance(valopts, basestring):
|
||||||
|
enabled = True
|
||||||
|
vname = valopts
|
||||||
|
elif isinstance(valopts, tuple):
|
||||||
|
vname, enabled = valopts
|
||||||
|
|
||||||
|
ch = ptree.Parameter.create(name=vname, type='bool', value=prevState.get(vname, enabled))
|
||||||
ch.maskValue = val
|
ch.maskValue = val
|
||||||
self.addChild(ch)
|
self.addChild(ch)
|
||||||
ch = ptree.Parameter.create(name='(other)', type='bool', value=prevState.get('(other)', True))
|
ch = ptree.Parameter.create(name='(other)', type='bool', value=prevState.get('(other)', True))
|
||||||
|
Loading…
Reference in New Issue
Block a user