From 2c6719cf390e6638cadbc814eb0c085bb45c3c6c Mon Sep 17 00:00:00 2001 From: wyzula-jan <133381102+wyzula-jan@users.noreply.github.com> Date: Fri, 1 Sep 2023 10:39:09 +0200 Subject: [PATCH] feat: colorbutton next to each curve in the table to be able to set up colors --- bec_widgets/examples/extreme/extreme.py | 25 +++++++++++++++++++++++++ bec_widgets/examples/extreme/extreme.ui | 5 +++++ 2 files changed, 30 insertions(+) diff --git a/bec_widgets/examples/extreme/extreme.py b/bec_widgets/examples/extreme/extreme.py index 567136ea..c991ea7c 100644 --- a/bec_widgets/examples/extreme/extreme.py +++ b/bec_widgets/examples/extreme/extreme.py @@ -9,6 +9,8 @@ from pyqtgraph.Qt import QtCore, uic from bec_lib.core import MessageEndpoints from bec_widgets.qt_utils import Crosshair, Colors +from pyqtgraph.Qt import QtWidgets +from pyqtgraph import ColorButton # TODO implement: @@ -213,12 +215,35 @@ class PlotApp(QWidget): plot.addItem(curve_data) row_labels.append(f"{y_name} ({y_entry}) - {plot_name}") + # Create a ColorButton and set its color + color_btn = ColorButton() + color_btn.setColor(color) + color_btn.sigColorChanged.connect( + lambda btn=color_btn, curve=curve_data: self.change_curve_color(btn, curve) + ) + + # Add the ColorButton as a QWidget to the table + color_widget = QtWidgets.QWidget() + layout = QtWidgets.QHBoxLayout() + layout.addWidget(color_btn) + layout.setContentsMargins(0, 0, 0, 0) + color_widget.setLayout(layout) + + row = len(row_labels) - 1 # The row index in the table + self.tableWidget_crosshair.setCellWidget(row, 2, color_widget) + self.curves_data[plot_name] = curve_list self.tableWidget_crosshair.setRowCount(len(row_labels)) self.tableWidget_crosshair.setVerticalHeaderLabels(row_labels) self.hook_crosshair() + def change_curve_color(self, btn, curve): + """Change the color of a curve.""" + color = btn.color() + pen_curve = mkPen(color=color, width=2, style=QtCore.Qt.DashLine) + curve.setPen(pen_curve) + def hook_crosshair(self): """Attach crosshairs to each plot and connect them to the update_table method.""" self.crosshairs = {} diff --git a/bec_widgets/examples/extreme/extreme.ui b/bec_widgets/examples/extreme/extreme.ui index e22291c4..6d0a1fdb 100644 --- a/bec_widgets/examples/extreme/extreme.ui +++ b/bec_widgets/examples/extreme/extreme.ui @@ -53,6 +53,11 @@ Clicked + + + Color + +