mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-13 19:21:50 +02:00
improve scan history device fixup
This commit is contained in:
@ -17,15 +17,16 @@ logger = bec_logger.logger
|
|||||||
# TODO check cleanup
|
# TODO check cleanup
|
||||||
# Custom model
|
# Custom model
|
||||||
class DeviceModel(QtCore.QAbstractListModel):
|
class DeviceModel(QtCore.QAbstractListModel):
|
||||||
def __init__(self, devices=None):
|
|
||||||
super().__init__()
|
def __init__(self, parent=None, devices: dict[str, int] = None):
|
||||||
|
super().__init__(parent)
|
||||||
if devices is None:
|
if devices is None:
|
||||||
devices = {}
|
devices = {}
|
||||||
self._devices = sorted(devices.items(), key=lambda x: -x[1])
|
self._devices: list[tuple] = sorted(devices.items(), key=lambda x: -x[1])
|
||||||
|
|
||||||
# @SafeProperty(list) # TODO if SafeProperty, how to pass the type list[tuple[str, int]]?
|
# @SafeProperty(list) # TODO if SafeProperty, how to pass the type list[tuple[str, int]]?
|
||||||
@property
|
@property
|
||||||
def devices(self) -> list[tuple[str, int]]:
|
def devices(self):
|
||||||
"""Return the list of devices."""
|
"""Return the list of devices."""
|
||||||
return self._devices
|
return self._devices
|
||||||
|
|
||||||
@ -35,8 +36,8 @@ class DeviceModel(QtCore.QAbstractListModel):
|
|||||||
self._devices = sorted(value.items(), key=lambda x: -x[1])
|
self._devices = sorted(value.items(), key=lambda x: -x[1])
|
||||||
self.endResetModel()
|
self.endResetModel()
|
||||||
|
|
||||||
def rowCount(self, **kwargs): # parent=QtCore.QModelIndex()):
|
def rowCount(self, parent=QtCore.QModelIndex()):
|
||||||
return len(self.devices)
|
return len(self._devices)
|
||||||
|
|
||||||
def data(self, index, role=QtCore.Qt.DisplayRole):
|
def data(self, index, role=QtCore.Qt.DisplayRole):
|
||||||
if not index.isValid():
|
if not index.isValid():
|
||||||
@ -104,14 +105,14 @@ class ScanHistoryDeviceViewer(BECWidget, QtWidgets.QWidget):
|
|||||||
layout = QtWidgets.QHBoxLayout(self)
|
layout = QtWidgets.QHBoxLayout(self)
|
||||||
self.setLayout(layout)
|
self.setLayout(layout)
|
||||||
# Init ComboBox
|
# Init ComboBox
|
||||||
self.device_combo = QtWidgets.QComboBox(self)
|
self.device_combo = QtWidgets.QComboBox(parent=self)
|
||||||
colors = get_accent_colors()
|
colors = get_accent_colors()
|
||||||
self.request_plotting_button = QtWidgets.QPushButton(
|
self.request_plotting_button = QtWidgets.QPushButton(
|
||||||
material_icon("play_arrow", size=(24, 24), color=colors.success),
|
material_icon("play_arrow", size=(24, 24), color=colors.success),
|
||||||
"Request Plotting",
|
"Request Plotting",
|
||||||
self,
|
self,
|
||||||
)
|
)
|
||||||
self.device_model = DeviceModel({})
|
self.device_model = DeviceModel(parent=self.device_combo)
|
||||||
self.device_combo.setModel(self.device_model)
|
self.device_combo.setModel(self.device_model)
|
||||||
layout.addWidget(self.device_combo)
|
layout.addWidget(self.device_combo)
|
||||||
layout.addWidget(self.request_plotting_button)
|
layout.addWidget(self.request_plotting_button)
|
||||||
@ -166,6 +167,14 @@ if __name__ == "__main__":
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
app = QtWidgets.QApplication(sys.argv)
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
|
|
||||||
|
main_window = QtWidgets.QMainWindow()
|
||||||
|
central_widget = QtWidgets.QWidget()
|
||||||
|
main_window.setCentralWidget(central_widget)
|
||||||
|
layout = QtWidgets.QVBoxLayout(central_widget)
|
||||||
|
layout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
|
||||||
viewer = ScanHistoryDeviceViewer()
|
viewer = ScanHistoryDeviceViewer()
|
||||||
viewer.show()
|
layout.addWidget(viewer)
|
||||||
sys.exit(app.exec_())
|
main_window.show()
|
||||||
|
app.exec_()
|
||||||
|
Reference in New Issue
Block a user