biosignal-device-interface 0.2.1a1__py3-none-any.whl → 0.2.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. biosignal_device_interface/constants/devices/__init__.py +3 -3
  2. biosignal_device_interface/constants/devices/core/base_device_constants.py +61 -61
  3. biosignal_device_interface/constants/devices/otb/otb_muovi_constants.py +129 -129
  4. biosignal_device_interface/constants/devices/otb/otb_quattrocento_constants.py +313 -313
  5. biosignal_device_interface/constants/devices/otb/otb_quattrocento_light_constants.py +59 -59
  6. biosignal_device_interface/constants/devices/otb/otb_syncstation_constants.py +233 -233
  7. biosignal_device_interface/constants/plots/color_palette.py +59 -59
  8. biosignal_device_interface/devices/__init__.py +17 -17
  9. biosignal_device_interface/devices/core/base_device.py +424 -412
  10. biosignal_device_interface/devices/otb/__init__.py +29 -29
  11. biosignal_device_interface/devices/otb/otb_muovi.py +290 -290
  12. biosignal_device_interface/devices/otb/otb_quattrocento.py +332 -332
  13. biosignal_device_interface/devices/otb/otb_quattrocento_light.py +210 -210
  14. biosignal_device_interface/devices/otb/otb_syncstation.py +407 -407
  15. biosignal_device_interface/gui/device_template_widgets/all_devices_widget.py +51 -51
  16. biosignal_device_interface/gui/device_template_widgets/core/base_device_widget.py +130 -130
  17. biosignal_device_interface/gui/device_template_widgets/core/base_multiple_devices_widget.py +108 -108
  18. biosignal_device_interface/gui/device_template_widgets/otb/otb_devices_widget.py +44 -44
  19. biosignal_device_interface/gui/device_template_widgets/otb/otb_muovi_plus_widget.py +158 -158
  20. biosignal_device_interface/gui/device_template_widgets/otb/otb_muovi_widget.py +158 -158
  21. biosignal_device_interface/gui/device_template_widgets/otb/otb_quattrocento_light_widget.py +174 -174
  22. biosignal_device_interface/gui/device_template_widgets/otb/otb_quattrocento_widget.py +260 -260
  23. biosignal_device_interface/gui/device_template_widgets/otb/otb_syncstation_widget.py +262 -262
  24. biosignal_device_interface/gui/plot_widgets/biosignal_plot_widget.py +500 -501
  25. biosignal_device_interface/gui/ui/devices_template_widget.ui +38 -38
  26. biosignal_device_interface/gui/ui/otb_muovi_plus_template_widget.ui +171 -171
  27. biosignal_device_interface/gui/ui/otb_muovi_template_widget.ui +171 -171
  28. biosignal_device_interface/gui/ui/otb_quattrocento_light_template_widget.ui +266 -266
  29. biosignal_device_interface/gui/ui/otb_quattrocento_template_widget.ui +415 -415
  30. biosignal_device_interface/gui/ui/otb_syncstation_template_widget.ui +732 -732
  31. biosignal_device_interface/gui/ui_compiled/devices_template_widget.py +56 -56
  32. biosignal_device_interface/gui/ui_compiled/otb_muovi_plus_template_widget.py +153 -153
  33. biosignal_device_interface/gui/ui_compiled/otb_muovi_template_widget.py +153 -153
  34. biosignal_device_interface/gui/ui_compiled/otb_quattrocento_light_template_widget.py +217 -217
  35. biosignal_device_interface/gui/ui_compiled/otb_quattrocento_template_widget.py +318 -318
  36. biosignal_device_interface/gui/ui_compiled/otb_syncstation_template_widget.py +495 -495
  37. {biosignal_device_interface-0.2.1a1.dist-info → biosignal_device_interface-0.2.2.dist-info}/METADATA +3 -2
  38. biosignal_device_interface-0.2.2.dist-info/RECORD +46 -0
  39. {biosignal_device_interface-0.2.1a1.dist-info → biosignal_device_interface-0.2.2.dist-info}/WHEEL +1 -1
  40. {biosignal_device_interface-0.2.1a1.dist-info → biosignal_device_interface-0.2.2.dist-info/licenses}/LICENSE +675 -675
  41. biosignal_device_interface-0.2.1a1.dist-info/RECORD +0 -46
@@ -1,51 +1,51 @@
1
- """
2
- Template for the QWidget that enables the user to interact with all available devices.
3
- Developer: Dominik I. Braun
4
- Contact: dome.braun@fau.de
5
- Last Update: 2024-06-05
6
- """
7
-
8
- from __future__ import annotations
9
- from typing import TYPE_CHECKING, Dict
10
-
11
- from biosignal_device_interface.gui.device_template_widgets.core.base_multiple_devices_widget import (
12
- BaseMultipleDevicesWidget,
13
- )
14
- from biosignal_device_interface.constants.devices.core.base_device_constants import (
15
- DeviceType,
16
- )
17
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_muovi_plus_widget import (
18
- OTBMuoviPlusWidget,
19
- )
20
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_muovi_widget import (
21
- OTBMuoviWidget,
22
- )
23
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_quattrocento_light_widget import (
24
- OTBQuattrocentoLightWidget,
25
- )
26
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_quattrocento_widget import (
27
- OTBQuattrocentoWidget,
28
- )
29
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_syncstation_widget import (
30
- OTBSyncStationWidget,
31
- )
32
-
33
- if TYPE_CHECKING:
34
- from PySide6.QtWidgets import QWidget, QMainWindow
35
- from biosignal_device_interface.gui.device_template_widgets.core.base_device_widget import (
36
- BaseDeviceWidget,
37
- )
38
-
39
-
40
- class AllDevicesWidget(BaseMultipleDevicesWidget):
41
- def __init__(self, parent: QWidget | QMainWindow | None = None):
42
- super().__init__(parent)
43
-
44
- self._device_selection: Dict[DeviceType, BaseDeviceWidget] = {
45
- DeviceType.OTB_QUATTROCENTO: OTBQuattrocentoWidget(self),
46
- DeviceType.OTB_QUATTROCENTO_LIGHT: OTBQuattrocentoLightWidget(self),
47
- DeviceType.OTB_MUOVI: OTBMuoviWidget(self),
48
- DeviceType.OTB_MUOVI_PLUS: OTBMuoviPlusWidget(self),
49
- DeviceType.OTB_SYNCSTATION: OTBSyncStationWidget(self),
50
- }
51
- self._set_devices(self._device_selection)
1
+ """
2
+ Template for the QWidget that enables the user to interact with all available devices.
3
+ Developer: Dominik I. Braun
4
+ Contact: dome.braun@fau.de
5
+ Last Update: 2024-06-05
6
+ """
7
+
8
+ from __future__ import annotations
9
+ from typing import TYPE_CHECKING, Dict
10
+
11
+ from biosignal_device_interface.gui.device_template_widgets.core.base_multiple_devices_widget import (
12
+ BaseMultipleDevicesWidget,
13
+ )
14
+ from biosignal_device_interface.constants.devices.core.base_device_constants import (
15
+ DeviceType,
16
+ )
17
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_muovi_plus_widget import (
18
+ OTBMuoviPlusWidget,
19
+ )
20
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_muovi_widget import (
21
+ OTBMuoviWidget,
22
+ )
23
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_quattrocento_light_widget import (
24
+ OTBQuattrocentoLightWidget,
25
+ )
26
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_quattrocento_widget import (
27
+ OTBQuattrocentoWidget,
28
+ )
29
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_syncstation_widget import (
30
+ OTBSyncStationWidget,
31
+ )
32
+
33
+ if TYPE_CHECKING:
34
+ from PySide6.QtWidgets import QWidget, QMainWindow
35
+ from biosignal_device_interface.gui.device_template_widgets.core.base_device_widget import (
36
+ BaseDeviceWidget,
37
+ )
38
+
39
+
40
+ class AllDevicesWidget(BaseMultipleDevicesWidget):
41
+ def __init__(self, parent: QWidget | QMainWindow | None = None):
42
+ super().__init__(parent)
43
+
44
+ self._device_selection: Dict[DeviceType, BaseDeviceWidget] = {
45
+ DeviceType.OTB_QUATTROCENTO: OTBQuattrocentoWidget(self),
46
+ DeviceType.OTB_QUATTROCENTO_LIGHT: OTBQuattrocentoLightWidget(self),
47
+ DeviceType.OTB_MUOVI: OTBMuoviWidget(self),
48
+ DeviceType.OTB_MUOVI_PLUS: OTBMuoviPlusWidget(self),
49
+ DeviceType.OTB_SYNCSTATION: OTBSyncStationWidget(self),
50
+ }
51
+ self._set_devices(self._device_selection)
@@ -1,130 +1,130 @@
1
- """
2
- Base Device class for real-time interfaces to hardware devices.
3
- Developer: Dominik I. Braun
4
- Contact: dome.braun@fau.de
5
- Last Update: 2024-06-05
6
- """
7
-
8
- # Python Libraries
9
- from __future__ import annotations
10
- from typing import TYPE_CHECKING, Union, Dict
11
- from abc import abstractmethod
12
- from PySide6.QtWidgets import QWidget, QMainWindow
13
- from PySide6.QtGui import QCloseEvent
14
- from PySide6.QtCore import Signal
15
- import numpy as np
16
-
17
- # Import Devices
18
- from biosignal_device_interface.devices.core.base_device import BaseDevice
19
-
20
- if TYPE_CHECKING:
21
- from enum import Enum
22
- from PySide6.QtWidgets import QLineEdit
23
-
24
-
25
- class BaseDeviceWidget(QWidget):
26
- # Signals
27
- data_arrived: Signal = Signal(np.ndarray)
28
- biosignal_data_arrived: Signal = Signal(np.ndarray)
29
- auxiliary_data_arrived: Signal = Signal(np.ndarray)
30
- connect_toggled: Signal = Signal(bool)
31
- configure_toggled: Signal = Signal(bool)
32
- stream_toggled: Signal = Signal(bool)
33
-
34
- def __init__(self, parent: QWidget | QMainWindow | None = None):
35
- super().__init__(parent)
36
-
37
- self.parent_widget: QWidget | QMainWindow | None = parent
38
-
39
- # Device Setup
40
- self._device: BaseDevice | None = None
41
- self._device_params: Dict[str, Union[str, int, float]] = {}
42
-
43
- # GUI setup
44
- self.ui: object = None
45
-
46
- @abstractmethod
47
- def _toggle_connection(self) -> None:
48
- """ """
49
- pass
50
-
51
- @abstractmethod
52
- def _connection_toggled(self, is_connected: bool) -> None:
53
- """ """
54
- pass
55
-
56
- @abstractmethod
57
- def _toggle_configuration(self) -> None:
58
- """ """
59
- pass
60
-
61
- @abstractmethod
62
- def _configuration_toggled(self, is_configured: bool) -> None:
63
- """ """
64
- pass
65
-
66
- @abstractmethod
67
- def _toggle_configuration_group_boxes(self) -> None:
68
- """ """
69
- pass
70
-
71
- @abstractmethod
72
- def _toggle_stream(self) -> None:
73
- """ """
74
- pass
75
-
76
- @abstractmethod
77
- def _stream_toggled(self, is_streaming: bool) -> None:
78
- """ """
79
- self.stream_toggled.emit(is_streaming)
80
-
81
- @abstractmethod
82
- def _initialize_device_params(self) -> None:
83
- """ """
84
- pass
85
-
86
- @abstractmethod
87
- def _initialize_ui(self) -> None:
88
- """ """
89
- pass
90
-
91
- def _set_device(self, device: BaseDevice) -> None:
92
- """ """
93
- # Device Setup
94
- self._device: BaseDevice = device
95
- self._initialize_device_params()
96
- self._set_signals()
97
- self._initialize_ui()
98
-
99
- def _set_signals(self) -> None:
100
- """ """
101
- self._device.data_available.connect(self.data_arrived.emit)
102
- self._device.biosignal_data_available.connect(self.biosignal_data_arrived.emit)
103
- self._device.auxiliary_data_available.connect(self.auxiliary_data_arrived.emit)
104
-
105
- def get_device_information(self) -> Dict[str, Enum | int | float | str]:
106
- """
107
- Gets the current configuration of the device.
108
-
109
- Returns:
110
- Dict[str, Enum | int | float | str]:
111
- Dictionary that holds information about the
112
- current device configuration and status.
113
- """
114
- return self._device.get_device_information()
115
-
116
- def disconnect_device(self) -> None:
117
- """ """
118
- if self._device.is_connected or self._device._is_streaming:
119
- self._device.toggle_connection()
120
-
121
- def _check_ip_input(self, line_edit: QLineEdit, default: str) -> None:
122
- if not self._device.check_valid_ip(line_edit.text()):
123
- line_edit.setText(default)
124
-
125
- def _check_port_input(self, line_edit: QLineEdit, default: str) -> None:
126
- if not self._device.check_valid_port(line_edit.text()):
127
- line_edit.setText(default)
128
-
129
- def closeEvent(self, event: QCloseEvent) -> None:
130
- self.disconnect_device()
1
+ """
2
+ Base Device class for real-time interfaces to hardware devices.
3
+ Developer: Dominik I. Braun
4
+ Contact: dome.braun@fau.de
5
+ Last Update: 2024-06-05
6
+ """
7
+
8
+ # Python Libraries
9
+ from __future__ import annotations
10
+ from typing import TYPE_CHECKING, Union, Dict
11
+ from abc import abstractmethod
12
+ from PySide6.QtWidgets import QWidget, QMainWindow
13
+ from PySide6.QtGui import QCloseEvent
14
+ from PySide6.QtCore import Signal
15
+ import numpy as np
16
+
17
+ # Import Devices
18
+ from biosignal_device_interface.devices.core.base_device import BaseDevice
19
+
20
+ if TYPE_CHECKING:
21
+ from enum import Enum
22
+ from PySide6.QtWidgets import QLineEdit
23
+
24
+
25
+ class BaseDeviceWidget(QWidget):
26
+ # Signals
27
+ data_arrived: Signal = Signal(np.ndarray)
28
+ biosignal_data_arrived: Signal = Signal(np.ndarray)
29
+ auxiliary_data_arrived: Signal = Signal(np.ndarray)
30
+ connect_toggled: Signal = Signal(bool)
31
+ configure_toggled: Signal = Signal(bool)
32
+ stream_toggled: Signal = Signal(bool)
33
+
34
+ def __init__(self, parent: QWidget | QMainWindow | None = None):
35
+ super().__init__(parent)
36
+
37
+ self.parent_widget: QWidget | QMainWindow | None = parent
38
+
39
+ # Device Setup
40
+ self._device: BaseDevice | None = None
41
+ self._device_params: Dict[str, Union[str, int, float]] = {}
42
+
43
+ # GUI setup
44
+ self.ui: object = None
45
+
46
+ @abstractmethod
47
+ def _toggle_connection(self) -> None:
48
+ """ """
49
+ pass
50
+
51
+ @abstractmethod
52
+ def _connection_toggled(self, is_connected: bool) -> None:
53
+ """ """
54
+ pass
55
+
56
+ @abstractmethod
57
+ def _toggle_configuration(self) -> None:
58
+ """ """
59
+ pass
60
+
61
+ @abstractmethod
62
+ def _configuration_toggled(self, is_configured: bool) -> None:
63
+ """ """
64
+ pass
65
+
66
+ @abstractmethod
67
+ def _toggle_configuration_group_boxes(self) -> None:
68
+ """ """
69
+ pass
70
+
71
+ @abstractmethod
72
+ def _toggle_stream(self) -> None:
73
+ """ """
74
+ pass
75
+
76
+ @abstractmethod
77
+ def _stream_toggled(self, is_streaming: bool) -> None:
78
+ """ """
79
+ self.stream_toggled.emit(is_streaming)
80
+
81
+ @abstractmethod
82
+ def _initialize_device_params(self) -> None:
83
+ """ """
84
+ pass
85
+
86
+ @abstractmethod
87
+ def _initialize_ui(self) -> None:
88
+ """ """
89
+ pass
90
+
91
+ def _set_device(self, device: BaseDevice) -> None:
92
+ """ """
93
+ # Device Setup
94
+ self._device: BaseDevice = device
95
+ self._initialize_device_params()
96
+ self._set_signals()
97
+ self._initialize_ui()
98
+
99
+ def _set_signals(self) -> None:
100
+ """ """
101
+ self._device.data_available.connect(self.data_arrived.emit)
102
+ self._device.biosignal_data_available.connect(self.biosignal_data_arrived.emit)
103
+ self._device.auxiliary_data_available.connect(self.auxiliary_data_arrived.emit)
104
+
105
+ def get_device_information(self) -> Dict[str, Enum | int | float | str]:
106
+ """
107
+ Gets the current configuration of the device.
108
+
109
+ Returns:
110
+ Dict[str, Enum | int | float | str]:
111
+ Dictionary that holds information about the
112
+ current device configuration and status.
113
+ """
114
+ return self._device.get_device_information()
115
+
116
+ def disconnect_device(self) -> None:
117
+ """ """
118
+ if self._device.is_connected or self._device._is_streaming:
119
+ self._device.toggle_connection()
120
+
121
+ def _check_ip_input(self, line_edit: QLineEdit, default: str) -> None:
122
+ if not self._device.check_valid_ip(line_edit.text()):
123
+ line_edit.setText(default)
124
+
125
+ def _check_port_input(self, line_edit: QLineEdit, default: str) -> None:
126
+ if not self._device.check_valid_port(line_edit.text()):
127
+ line_edit.setText(default)
128
+
129
+ def closeEvent(self, event: QCloseEvent) -> None:
130
+ self.disconnect_device()
@@ -1,108 +1,108 @@
1
- """
2
- Base Device class for real-time interfaces to hardware devices.
3
- Developer: Dominik I. Braun
4
- Contact: dome.braun@fau.de
5
- Last Update: 2024-06-05
6
- """
7
-
8
- # Python Libraries
9
- from __future__ import annotations
10
- from typing import TYPE_CHECKING, Union, Dict
11
- from PySide6.QtGui import QCloseEvent
12
- from PySide6.QtWidgets import QWidget, QMainWindow
13
- from PySide6.QtCore import Signal
14
- import numpy as np
15
- import warnings
16
-
17
- # Import Template
18
- from biosignal_device_interface.gui.ui_compiled.devices_template_widget import (
19
- Ui_DeviceWidgetForm,
20
- )
21
- from biosignal_device_interface.constants.devices.core.base_device_constants import (
22
- DeviceType,
23
- DEVICE_NAME_DICT,
24
- )
25
-
26
- if TYPE_CHECKING:
27
- from biosignal_device_interface.gui.device_template_widgets.core.base_device_widget import (
28
- BaseDeviceWidget,
29
- )
30
-
31
-
32
- class BaseMultipleDevicesWidget(QWidget):
33
- # Signals
34
- data_arrived: Signal = Signal(np.ndarray)
35
- biosignal_data_arrived: Signal = Signal(np.ndarray)
36
- auxiliary_data_arrived: Signal = Signal(np.ndarray)
37
- connect_toggled = Signal(bool)
38
- configure_toggled = Signal(bool)
39
- stream_toggled = Signal(bool)
40
- device_changed_signal = Signal(None)
41
-
42
- def __init__(self, parent: QWidget | QMainWindow | None = None):
43
- super().__init__(parent)
44
-
45
- self.parent_widget: QWidget | QMainWindow | None = parent
46
-
47
- self.ui = Ui_DeviceWidgetForm()
48
- self.ui.setupUi(self)
49
-
50
- self.device_stacked_widget = self.ui.deviceStackedWidget
51
- self.device_selection_combo_box = self.ui.deviceSelectionComboBox
52
-
53
- def get_device_information(self) -> Dict[str, Union[str, int]]:
54
- return self._get_current_widget().get_device_information()
55
-
56
- def _update_stacked_widget(self, index: int):
57
- current_widget = self._get_current_widget()
58
- current_widget.disconnect_device()
59
-
60
- with warnings.catch_warnings():
61
- warnings.filterwarnings("ignore")
62
- try:
63
- current_widget.data_arrived.disconnect(self.data_arrived.emit)
64
- current_widget.biosignal_data_arrived.disconnect(
65
- self.biosignal_data_arrived.emit
66
- )
67
- current_widget.auxiliary_data_arrived.disconnect(
68
- self.auxiliary_data_arrived.emit
69
- )
70
-
71
- current_widget.connect_toggled.disconnect(self.connect_toggled)
72
- current_widget.configure_toggled.disconnect(self.configure_toggled)
73
- current_widget.stream_toggled.disconnect(self.stream_toggled)
74
-
75
- except (TypeError, RuntimeError):
76
- ...
77
-
78
- self.device_stacked_widget.setCurrentIndex(index)
79
- current_widget = self._get_current_widget()
80
-
81
- # Data arrived
82
- current_widget.data_arrived.connect(self.data_arrived.emit)
83
- # Biosignal data arrived
84
- current_widget.biosignal_data_arrived.connect(self.biosignal_data_arrived.emit)
85
- # Auxiliary data arrived
86
- current_widget.auxiliary_data_arrived.connect(self.auxiliary_data_arrived.emit)
87
-
88
- current_widget.connect_toggled.connect(self.connect_toggled)
89
- current_widget.configure_toggled.connect(self.configure_toggled)
90
- current_widget.stream_toggled.connect(self.stream_toggled)
91
-
92
- self.device_changed_signal.emit()
93
-
94
- def _set_devices(self, devices: Dict[DeviceType, BaseDeviceWidget]) -> None:
95
- for device_type, device_widget in devices.items():
96
- self.device_stacked_widget.addWidget(device_widget)
97
- self.device_selection_combo_box.addItem(DEVICE_NAME_DICT[device_type])
98
-
99
- self._update_stacked_widget(0)
100
- self.device_selection_combo_box.currentIndexChanged.connect(
101
- self._update_stacked_widget
102
- )
103
-
104
- def _get_current_widget(self) -> BaseDeviceWidget:
105
- return self.device_stacked_widget.currentWidget()
106
-
107
- def closeEvent(self, event: QCloseEvent) -> None:
108
- self._get_current_widget().closeEvent(event)
1
+ """
2
+ Base Device class for real-time interfaces to hardware devices.
3
+ Developer: Dominik I. Braun
4
+ Contact: dome.braun@fau.de
5
+ Last Update: 2024-06-05
6
+ """
7
+
8
+ # Python Libraries
9
+ from __future__ import annotations
10
+ from typing import TYPE_CHECKING, Union, Dict
11
+ from PySide6.QtGui import QCloseEvent
12
+ from PySide6.QtWidgets import QWidget, QMainWindow
13
+ from PySide6.QtCore import Signal
14
+ import numpy as np
15
+ import warnings
16
+
17
+ # Import Template
18
+ from biosignal_device_interface.gui.ui_compiled.devices_template_widget import (
19
+ Ui_DeviceWidgetForm,
20
+ )
21
+ from biosignal_device_interface.constants.devices.core.base_device_constants import (
22
+ DeviceType,
23
+ DEVICE_NAME_DICT,
24
+ )
25
+
26
+ if TYPE_CHECKING:
27
+ from biosignal_device_interface.gui.device_template_widgets.core.base_device_widget import (
28
+ BaseDeviceWidget,
29
+ )
30
+
31
+
32
+ class BaseMultipleDevicesWidget(QWidget):
33
+ # Signals
34
+ data_arrived: Signal = Signal(np.ndarray)
35
+ biosignal_data_arrived: Signal = Signal(np.ndarray)
36
+ auxiliary_data_arrived: Signal = Signal(np.ndarray)
37
+ connect_toggled = Signal(bool)
38
+ configure_toggled = Signal(bool)
39
+ stream_toggled = Signal(bool)
40
+ device_changed_signal = Signal(None)
41
+
42
+ def __init__(self, parent: QWidget | QMainWindow | None = None):
43
+ super().__init__(parent)
44
+
45
+ self.parent_widget: QWidget | QMainWindow | None = parent
46
+
47
+ self.ui = Ui_DeviceWidgetForm()
48
+ self.ui.setupUi(self)
49
+
50
+ self.device_stacked_widget = self.ui.deviceStackedWidget
51
+ self.device_selection_combo_box = self.ui.deviceSelectionComboBox
52
+
53
+ def get_device_information(self) -> Dict[str, Union[str, int]]:
54
+ return self._get_current_widget().get_device_information()
55
+
56
+ def _update_stacked_widget(self, index: int):
57
+ current_widget = self._get_current_widget()
58
+ current_widget.disconnect_device()
59
+
60
+ with warnings.catch_warnings():
61
+ warnings.filterwarnings("ignore")
62
+ try:
63
+ current_widget.data_arrived.disconnect(self.data_arrived.emit)
64
+ current_widget.biosignal_data_arrived.disconnect(
65
+ self.biosignal_data_arrived.emit
66
+ )
67
+ current_widget.auxiliary_data_arrived.disconnect(
68
+ self.auxiliary_data_arrived.emit
69
+ )
70
+
71
+ current_widget.connect_toggled.disconnect(self.connect_toggled)
72
+ current_widget.configure_toggled.disconnect(self.configure_toggled)
73
+ current_widget.stream_toggled.disconnect(self.stream_toggled)
74
+
75
+ except (TypeError, RuntimeError):
76
+ ...
77
+
78
+ self.device_stacked_widget.setCurrentIndex(index)
79
+ current_widget = self._get_current_widget()
80
+
81
+ # Data arrived
82
+ current_widget.data_arrived.connect(self.data_arrived.emit)
83
+ # Biosignal data arrived
84
+ current_widget.biosignal_data_arrived.connect(self.biosignal_data_arrived.emit)
85
+ # Auxiliary data arrived
86
+ current_widget.auxiliary_data_arrived.connect(self.auxiliary_data_arrived.emit)
87
+
88
+ current_widget.connect_toggled.connect(self.connect_toggled)
89
+ current_widget.configure_toggled.connect(self.configure_toggled)
90
+ current_widget.stream_toggled.connect(self.stream_toggled)
91
+
92
+ self.device_changed_signal.emit()
93
+
94
+ def _set_devices(self, devices: Dict[DeviceType, BaseDeviceWidget]) -> None:
95
+ for device_type, device_widget in devices.items():
96
+ self.device_stacked_widget.addWidget(device_widget)
97
+ self.device_selection_combo_box.addItem(DEVICE_NAME_DICT[device_type])
98
+
99
+ self._update_stacked_widget(0)
100
+ self.device_selection_combo_box.currentIndexChanged.connect(
101
+ self._update_stacked_widget
102
+ )
103
+
104
+ def _get_current_widget(self) -> BaseDeviceWidget:
105
+ return self.device_stacked_widget.currentWidget()
106
+
107
+ def closeEvent(self, event: QCloseEvent) -> None:
108
+ self._get_current_widget().closeEvent(event)
@@ -1,44 +1,44 @@
1
- from __future__ import annotations
2
- from typing import TYPE_CHECKING, Dict
3
-
4
- from biosignal_device_interface.gui.device_template_widgets.core.base_multiple_devices_widget import (
5
- BaseMultipleDevicesWidget,
6
- )
7
- from biosignal_device_interface.constants.devices.core.base_device_constants import (
8
- DeviceType,
9
- )
10
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_muovi_plus_widget import (
11
- OTBMuoviPlusWidget,
12
- )
13
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_muovi_widget import (
14
- OTBMuoviWidget,
15
- )
16
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_quattrocento_light_widget import (
17
- OTBQuattrocentoLightWidget,
18
- )
19
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_quattrocento_widget import (
20
- OTBQuattrocentoWidget,
21
- )
22
- from biosignal_device_interface.gui.device_template_widgets.otb.otb_syncstation_widget import (
23
- OTBSyncStationWidget,
24
- )
25
-
26
- if TYPE_CHECKING:
27
- from PySide6.QtWidgets import QWidget, QMainWindow
28
- from biosignal_device_interface.gui.device_template_widgets.core.base_device_widget import (
29
- BaseDeviceWidget,
30
- )
31
-
32
-
33
- class OTBDevicesWidget(BaseMultipleDevicesWidget):
34
- def __init__(self, parent: QWidget | QMainWindow | None = None):
35
- super().__init__(parent)
36
-
37
- self._device_selection: Dict[DeviceType, BaseDeviceWidget] = {
38
- DeviceType.OTB_QUATTROCENTO: OTBQuattrocentoWidget(self),
39
- DeviceType.OTB_QUATTROCENTO_LIGHT: OTBQuattrocentoLightWidget(self),
40
- DeviceType.OTB_MUOVI: OTBMuoviWidget(self),
41
- DeviceType.OTB_MUOVI_PLUS: OTBMuoviPlusWidget(self),
42
- DeviceType.OTB_SYNCSTATION: OTBSyncStationWidget(self),
43
- }
44
- self._set_devices(self._device_selection)
1
+ from __future__ import annotations
2
+ from typing import TYPE_CHECKING, Dict
3
+
4
+ from biosignal_device_interface.gui.device_template_widgets.core.base_multiple_devices_widget import (
5
+ BaseMultipleDevicesWidget,
6
+ )
7
+ from biosignal_device_interface.constants.devices.core.base_device_constants import (
8
+ DeviceType,
9
+ )
10
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_muovi_plus_widget import (
11
+ OTBMuoviPlusWidget,
12
+ )
13
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_muovi_widget import (
14
+ OTBMuoviWidget,
15
+ )
16
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_quattrocento_light_widget import (
17
+ OTBQuattrocentoLightWidget,
18
+ )
19
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_quattrocento_widget import (
20
+ OTBQuattrocentoWidget,
21
+ )
22
+ from biosignal_device_interface.gui.device_template_widgets.otb.otb_syncstation_widget import (
23
+ OTBSyncStationWidget,
24
+ )
25
+
26
+ if TYPE_CHECKING:
27
+ from PySide6.QtWidgets import QWidget, QMainWindow
28
+ from biosignal_device_interface.gui.device_template_widgets.core.base_device_widget import (
29
+ BaseDeviceWidget,
30
+ )
31
+
32
+
33
+ class OTBDevicesWidget(BaseMultipleDevicesWidget):
34
+ def __init__(self, parent: QWidget | QMainWindow | None = None):
35
+ super().__init__(parent)
36
+
37
+ self._device_selection: Dict[DeviceType, BaseDeviceWidget] = {
38
+ DeviceType.OTB_QUATTROCENTO: OTBQuattrocentoWidget(self),
39
+ DeviceType.OTB_QUATTROCENTO_LIGHT: OTBQuattrocentoLightWidget(self),
40
+ DeviceType.OTB_MUOVI: OTBMuoviWidget(self),
41
+ DeviceType.OTB_MUOVI_PLUS: OTBMuoviPlusWidget(self),
42
+ DeviceType.OTB_SYNCSTATION: OTBSyncStationWidget(self),
43
+ }
44
+ self._set_devices(self._device_selection)