From 7616ca0e145e233ccb48029a8c0b54b54b5b4194 Mon Sep 17 00:00:00 2001 From: wakonig_k Date: Wed, 24 Jul 2024 14:46:05 +0200 Subject: [PATCH] refactor(queue): refactored bec queue to inherit only from qwidget --- bec_widgets/widgets/bec_queue/bec_queue.py | 30 +++++++++++++--------- tests/unit_tests/test_bec_queue.py | 16 ++++++------ 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/bec_widgets/widgets/bec_queue/bec_queue.py b/bec_widgets/widgets/bec_queue/bec_queue.py index 9bf05d28..04dfd7d7 100644 --- a/bec_widgets/widgets/bec_queue/bec_queue.py +++ b/bec_widgets/widgets/bec_queue/bec_queue.py @@ -1,12 +1,12 @@ from bec_lib.endpoints import MessageEndpoints from qtpy.QtCore import Qt, Slot -from qtpy.QtWidgets import QHeaderView, QTableWidget, QTableWidgetItem, QWidget +from qtpy.QtWidgets import QHBoxLayout, QHeaderView, QTableWidget, QTableWidgetItem, QWidget from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget -class BECQueue(BECWidget, QTableWidget): +class BECQueue(BECWidget, QWidget): """ Widget to display the BEC queue. """ @@ -19,10 +19,14 @@ class BECQueue(BECWidget, QTableWidget): gui_id: str = None, ): super().__init__(client, config, gui_id) - QTableWidget.__init__(self, parent=parent) - self.setColumnCount(3) - self.setHorizontalHeaderLabels(["Scan Number", "Type", "Status"]) - header = self.horizontalHeader() + QWidget.__init__(self, parent=parent) + self.table = QTableWidget(self) + self.layout = QHBoxLayout(self) + self.layout.addWidget(self.table) + + self.table.setColumnCount(3) + self.table.setHorizontalHeaderLabels(["Scan Number", "Type", "Status"]) + header = self.table.horizontalHeader() header.setSectionResizeMode(QHeaderView.Stretch) self.bec_dispatcher.connect_slot(self.update_queue, MessageEndpoints.scan_queue_status()) self.reset_content() @@ -38,8 +42,8 @@ class BECQueue(BECWidget, QTableWidget): """ # only show the primary queue for now queue_info = content.get("queue", {}).get("primary", {}).get("info", []) - self.setRowCount(len(queue_info)) - self.clearContents() + self.table.setRowCount(len(queue_info)) + self.table.clearContents() if not queue_info: self.reset_content() @@ -73,6 +77,8 @@ class BECQueue(BECWidget, QTableWidget): Returns: QTableWidgetItem: The formatted item. """ + if not content or not isinstance(content, str): + content = "" item = QTableWidgetItem(content) item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) return item @@ -88,16 +94,16 @@ class BECQueue(BECWidget, QTableWidget): status (str): The status. """ - self.setItem(index, 0, self.format_item(scan_number)) - self.setItem(index, 1, self.format_item(scan_type)) - self.setItem(index, 2, self.format_item(status)) + self.table.setItem(index, 0, self.format_item(scan_number)) + self.table.setItem(index, 1, self.format_item(scan_type)) + self.table.setItem(index, 2, self.format_item(status)) def reset_content(self): """ Reset the content of the table. """ - self.setRowCount(1) + self.table.setRowCount(1) self.set_row(0, "", "", "") diff --git a/tests/unit_tests/test_bec_queue.py b/tests/unit_tests/test_bec_queue.py index 5883a401..f5f24268 100644 --- a/tests/unit_tests/test_bec_queue.py +++ b/tests/unit_tests/test_bec_queue.py @@ -97,15 +97,15 @@ def bec_queue(qtbot, mocked_client): def test_bec_queue(bec_queue, bec_queue_msg_full): bec_queue.update_queue(bec_queue_msg_full.content, {}) - assert bec_queue.rowCount() == 1 - assert bec_queue.item(0, 0).text() == "1289" - assert bec_queue.item(0, 1).text() == "line_scan" - assert bec_queue.item(0, 2).text() == "COMPLETED" + assert bec_queue.table.rowCount() == 1 + assert bec_queue.table.item(0, 0).text() == "1289" + assert bec_queue.table.item(0, 1).text() == "line_scan" + assert bec_queue.table.item(0, 2).text() == "COMPLETED" def test_bec_queue_empty(bec_queue): bec_queue.update_queue({}, {}) - assert bec_queue.rowCount() == 1 - assert bec_queue.item(0, 0).text() == "" - assert bec_queue.item(0, 1).text() == "" - assert bec_queue.item(0, 2).text() == "" + assert bec_queue.table.rowCount() == 1 + assert bec_queue.table.item(0, 0).text() == "" + assert bec_queue.table.item(0, 1).text() == "" + assert bec_queue.table.item(0, 2).text() == ""