0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-13 11:11:49 +02:00

fix(DeviceSignalInput): improve robustness

use set for storing filter properties to allow multiple set to true or
false
This commit is contained in:
2025-05-16 10:52:18 +02:00
committed by Jan Wyzula
parent a6c5c21afa
commit 91195ae0fd
2 changed files with 17 additions and 11 deletions

View File

@ -49,7 +49,7 @@ class DeviceSignalInputBase(BECWidget):
self._device = None self._device = None
self.get_bec_shortcuts() self.get_bec_shortcuts()
self._signal_filter = [] self._signal_filter = set()
self._signals = [] self._signals = []
self._hinted_signals = [] self._hinted_signals = []
self._normal_signals = [] self._normal_signals = []
@ -158,9 +158,9 @@ class DeviceSignalInputBase(BECWidget):
@include_hinted_signals.setter @include_hinted_signals.setter
def include_hinted_signals(self, value: bool): def include_hinted_signals(self, value: bool):
if value: if value:
self._signal_filter.append(Kind.hinted) self._signal_filter.add(Kind.hinted)
else: else:
self._signal_filter.remove(Kind.hinted) self._signal_filter.discard(Kind.hinted)
self.update_signals_from_filters() self.update_signals_from_filters()
@Property(bool) @Property(bool)
@ -171,9 +171,9 @@ class DeviceSignalInputBase(BECWidget):
@include_normal_signals.setter @include_normal_signals.setter
def include_normal_signals(self, value: bool): def include_normal_signals(self, value: bool):
if value: if value:
self._signal_filter.append(Kind.normal) self._signal_filter.add(Kind.normal)
else: else:
self._signal_filter.remove(Kind.normal) self._signal_filter.discard(Kind.normal)
self.update_signals_from_filters() self.update_signals_from_filters()
@Property(bool) @Property(bool)
@ -184,9 +184,9 @@ class DeviceSignalInputBase(BECWidget):
@include_config_signals.setter @include_config_signals.setter
def include_config_signals(self, value: bool): def include_config_signals(self, value: bool):
if value: if value:
self._signal_filter.append(Kind.config) self._signal_filter.add(Kind.config)
else: else:
self._signal_filter.remove(Kind.config) self._signal_filter.discard(Kind.config)
self.update_signals_from_filters() self.update_signals_from_filters()
### Properties and Methods ### ### Properties and Methods ###

View File

@ -67,7 +67,7 @@ def test_device_signal_combo(qtbot, mocked_client):
def test_device_signal_base_init(device_signal_base): def test_device_signal_base_init(device_signal_base):
"""Test if the DeviceSignalInputBase is initialized correctly""" """Test if the DeviceSignalInputBase is initialized correctly"""
assert device_signal_base._device is None assert device_signal_base._device is None
assert device_signal_base._signal_filter == [] assert device_signal_base._signal_filter == set()
assert device_signal_base._signals == [] assert device_signal_base._signals == []
assert device_signal_base._hinted_signals == [] assert device_signal_base._hinted_signals == []
assert device_signal_base._normal_signals == [] assert device_signal_base._normal_signals == []
@ -77,11 +77,17 @@ def test_device_signal_base_init(device_signal_base):
def test_device_signal_qproperties(device_signal_base): def test_device_signal_qproperties(device_signal_base):
"""Test if the DeviceSignalInputBase has the correct QProperties""" """Test if the DeviceSignalInputBase has the correct QProperties"""
device_signal_base.include_config_signals = True device_signal_base.include_config_signals = True
assert device_signal_base._signal_filter == [Kind.config] assert device_signal_base._signal_filter == {Kind.config}
device_signal_base.include_normal_signals = True device_signal_base.include_normal_signals = True
assert device_signal_base._signal_filter == [Kind.config, Kind.normal] assert device_signal_base._signal_filter == {Kind.config, Kind.normal}
device_signal_base.include_hinted_signals = True device_signal_base.include_hinted_signals = True
assert device_signal_base._signal_filter == [Kind.config, Kind.normal, Kind.hinted] assert device_signal_base._signal_filter == {Kind.config, Kind.normal, Kind.hinted}
device_signal_base.include_hinted_signals = True
assert device_signal_base._signal_filter == {Kind.config, Kind.normal, Kind.hinted}
device_signal_base.include_hinted_signals = True
assert device_signal_base._signal_filter == {Kind.config, Kind.normal, Kind.hinted}
device_signal_base.include_hinted_signals = False
assert device_signal_base._signal_filter == {Kind.config, Kind.normal}
def test_device_signal_set_device(device_signal_base): def test_device_signal_set_device(device_signal_base):