From 929123ff465a2e6c1ad167eacaea1ba4b2302b90 Mon Sep 17 00:00:00 2001 From: Luke Campagnola Date: Mon, 18 Jun 2018 13:54:43 -0700 Subject: [PATCH] avoid repeated signal emission in filterwidget --- pyqtgraph/widgets/DataFilterWidget.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/pyqtgraph/widgets/DataFilterWidget.py b/pyqtgraph/widgets/DataFilterWidget.py index 7b03725c..6421d71b 100644 --- a/pyqtgraph/widgets/DataFilterWidget.py +++ b/pyqtgraph/widgets/DataFilterWidget.py @@ -24,16 +24,13 @@ class DataFilterWidget(ptree.ParameterTree): self.params = DataFilterParameter() self.setParameters(self.params) - self.params.sigTreeStateChanged.connect(self.filterChanged) + self.params.sigFilterChanged.connect(self.sigFilterChanged) self.setFields = self.params.setFields self.generateMask = self.params.generateMask self.filterData = self.params.filterData self.describe = self.params.describe - def filterChanged(self): - self.sigFilterChanged.emit(self) - def parameters(self): return self.params @@ -80,15 +77,17 @@ class DataFilterParameter(ptree.types.GroupParameter): ('field3', {'mode': 'enum', 'values': {'val1':True, 'val2':False, 'val3':True}}), ]) """ - self.fields = OrderedDict(fields) - names = self.fieldNames() - self.setAddList(names) + with fn.SignalBlock(self.sigTreeStateChanged, self.filterChanged): + self.fields = OrderedDict(fields) + names = self.fieldNames() + self.setAddList(names) - # update any existing filters - for ch in self.children(): - name = ch.fieldName - if name in fields: - ch.updateFilter(fields[name]) + # update any existing filters + for ch in self.children(): + name = ch.fieldName + if name in fields: + ch.updateFilter(fields[name]) + self.sigFilterChanged.emit(self) def filterData(self, data): if len(data) == 0: