From a6616f5986d59ad8d065105234f5b704731cce71 Mon Sep 17 00:00:00 2001
From: wyzula-jan <133381102+wyzula-jan@users.noreply.github.com>
Date: Thu, 19 Oct 2023 16:34:25 +0200
Subject: [PATCH] feat: qt_utils custom class for class where one can delete
the row with backspace or delete
---
bec_widgets/qt_utils/__init__.py | 1 +
bec_widgets/qt_utils/bec_table.py | 20 ++++++++++++++++++++
bec_widgets/widgets/monitor/config_dialog.py | 2 +-
bec_widgets/widgets/monitor/tab_template.ui | 9 ++++++++-
4 files changed, 30 insertions(+), 2 deletions(-)
create mode 100644 bec_widgets/qt_utils/bec_table.py
diff --git a/bec_widgets/qt_utils/__init__.py b/bec_widgets/qt_utils/__init__.py
index f7f6cbb8..b0a37283 100644
--- a/bec_widgets/qt_utils/__init__.py
+++ b/bec_widgets/qt_utils/__init__.py
@@ -1,3 +1,4 @@
from .crosshair import Crosshair
from .colors import Colors
from .validator_delegate import DoubleValidationDelegate
+from .bec_table import BECTable
diff --git a/bec_widgets/qt_utils/bec_table.py b/bec_widgets/qt_utils/bec_table.py
new file mode 100644
index 00000000..10908c6c
--- /dev/null
+++ b/bec_widgets/qt_utils/bec_table.py
@@ -0,0 +1,20 @@
+from PyQt5.QtWidgets import QTableWidget
+from PyQt5.QtCore import Qt
+
+
+class BECTable(QTableWidget):
+ """Table widget with custom keyPressEvent to delete rows with backspace or delete key"""
+
+ def keyPressEvent(self, event) -> None:
+ """
+ Delete selected rows with backspace or delete key
+ Args:
+ event: keyPressEvent
+ """
+ if event.key() in (Qt.Key_Backspace, Qt.Key_Delete):
+ selected_ranges = self.selectedRanges()
+ for selected_range in selected_ranges:
+ for row in range(selected_range.topRow(), selected_range.bottomRow() + 1):
+ self.removeRow(row)
+ else:
+ super().keyPressEvent(event)
diff --git a/bec_widgets/widgets/monitor/config_dialog.py b/bec_widgets/widgets/monitor/config_dialog.py
index 20028a9d..425592ab 100644
--- a/bec_widgets/widgets/monitor/config_dialog.py
+++ b/bec_widgets/widgets/monitor/config_dialog.py
@@ -1,6 +1,6 @@
import os
-from PyQt5.QtCore import Qt
+from bec_widgets.qt_utils import BECTable
from PyQt5 import uic
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import (
diff --git a/bec_widgets/widgets/monitor/tab_template.ui b/bec_widgets/widgets/monitor/tab_template.ui
index 8b0c8461..996c2679 100644
--- a/bec_widgets/widgets/monitor/tab_template.ui
+++ b/bec_widgets/widgets/monitor/tab_template.ui
@@ -106,7 +106,7 @@
-
-
+
Name
@@ -159,6 +159,13 @@
+
+
+ BECTable
+ QTableWidget
+
+
+