avoid repeated signal emission in filterwidget

This commit is contained in:
Luke Campagnola 2018-06-18 13:54:43 -07:00
parent 7bfc5106b2
commit 929123ff46

View File

@ -24,16 +24,13 @@ class DataFilterWidget(ptree.ParameterTree):
self.params = DataFilterParameter() self.params = DataFilterParameter()
self.setParameters(self.params) self.setParameters(self.params)
self.params.sigTreeStateChanged.connect(self.filterChanged) self.params.sigFilterChanged.connect(self.sigFilterChanged)
self.setFields = self.params.setFields self.setFields = self.params.setFields
self.generateMask = self.params.generateMask self.generateMask = self.params.generateMask
self.filterData = self.params.filterData self.filterData = self.params.filterData
self.describe = self.params.describe self.describe = self.params.describe
def filterChanged(self):
self.sigFilterChanged.emit(self)
def parameters(self): def parameters(self):
return self.params return self.params
@ -80,15 +77,17 @@ class DataFilterParameter(ptree.types.GroupParameter):
('field3', {'mode': 'enum', 'values': {'val1':True, 'val2':False, 'val3':True}}), ('field3', {'mode': 'enum', 'values': {'val1':True, 'val2':False, 'val3':True}}),
]) ])
""" """
self.fields = OrderedDict(fields) with fn.SignalBlock(self.sigTreeStateChanged, self.filterChanged):
names = self.fieldNames() self.fields = OrderedDict(fields)
self.setAddList(names) names = self.fieldNames()
self.setAddList(names)
# update any existing filters # update any existing filters
for ch in self.children(): for ch in self.children():
name = ch.fieldName name = ch.fieldName
if name in fields: if name in fields:
ch.updateFilter(fields[name]) ch.updateFilter(fields[name])
self.sigFilterChanged.emit(self)
def filterData(self, data): def filterData(self, data):
if len(data) == 0: if len(data) == 0: