From 18e697c9ee80400fd9886110f42595fa8431928c Mon Sep 17 00:00:00 2001
From: Sylvain Kern <adminLocal@22-3183-003.centralelille.lan>
Date: Mon, 5 Jun 2023 18:59:52 +0200
Subject: [PATCH] renaming axes works

---
 requirements.txt  |  3 ++-
 tgms_made_easy.py | 69 ++++++++++++++++++++++++++++++++++++++---------
 2 files changed, 58 insertions(+), 14 deletions(-)

diff --git a/requirements.txt b/requirements.txt
index c96343a..2bf32b3 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,4 +5,5 @@ pyqtgraph
 pandas
 PyQt6
 seaborn
-pyqtdarktheme
\ No newline at end of file
+pyqtdarktheme
+functools
\ No newline at end of file
diff --git a/tgms_made_easy.py b/tgms_made_easy.py
index e257e25..adff394 100644
--- a/tgms_made_easy.py
+++ b/tgms_made_easy.py
@@ -18,6 +18,7 @@ from pyqtgraph.dockarea import Dock
 from pyqtgraph.dockarea import DockArea
 from qdarktheme import _style_loader
 from io import StringIO
+from functools import partial
 
 from animated_toggle import AnimatedToggle
 
@@ -775,24 +776,66 @@ class TGMSplot(pg.GraphicsLayoutWidget):
         self.tg_viewbox = pg.ViewBox()
         self.tg_viewbox.setXLink(self.global_viewbox)
 
-        # context menu
-        self.vb_menu = self.tg_viewbox.menu
-        self.vb_menu.addAction(QtGui.QAction("Rename Axis", self))
-
-        # context menu
-        self.global_menu = self.global_viewbox.menu
-        self.global_menu.addAction(QtGui.QAction("Rename Axis", self))
-
         # axes
-        mass_axis = pg.AxisItem("right")
-        mass_axis.setLabel("Sample Mass", units='%')
-        mass_axis.enableAutoSIPrefix(enable=False)
+        self.mass_axis = pg.AxisItem("right")
+        self.mass_axis.setLabel("Sample Mass", units='%')
+        self.mass_axis.enableAutoSIPrefix(enable=False)
 
         # compose layout
         self.addItem(self.plot)
-        self.addItem(mass_axis)
+        self.addItem(self.mass_axis)
         self.plot.scene().addItem(self.tg_viewbox)
-        mass_axis.linkToView(self.tg_viewbox)
+        self.mass_axis.linkToView(self.tg_viewbox)
+
+        # context menu (renaming axes)
+        rename_axesx_action = QtWidgets.QWidgetAction(self)
+        rename_axesx_layout = QtWidgets.QHBoxLayout()
+        rename_axesx_layout.addWidget(QtWidgets.QLabel("Rename"))
+        self.rename_axesx_edit = QtWidgets.QLineEdit(text=self.plot.getAxis("bottom").label.toPlainText())
+        rename_axesx_layout.addWidget(self.rename_axesx_edit)
+        rename_axesx_widget = QtWidgets.QWidget()
+        rename_axesx_widget.setLayout(rename_axesx_layout)
+        rename_axesx_action.setDefaultWidget(rename_axesx_widget)
+
+        rename_axesy_action = QtWidgets.QWidgetAction(self)
+        rename_axesy_layout = QtWidgets.QHBoxLayout()
+        rename_axesy_layout.addWidget(QtWidgets.QLabel("Rename"))
+        self.rename_axesy_edit = QtWidgets.QLineEdit(text=self.plot.getAxis("left").label.toPlainText())
+        rename_axesy_layout.addWidget(self.rename_axesy_edit)
+        rename_axesy_widget = QtWidgets.QWidget()
+        rename_axesy_widget.setLayout(rename_axesy_layout)
+        rename_axesy_action.setDefaultWidget(rename_axesy_widget)
+
+        rename_axesr_action = QtWidgets.QWidgetAction(self)
+        rename_axesr_layout = QtWidgets.QHBoxLayout()
+        rename_axesr_layout.addWidget(QtWidgets.QLabel("Rename"))
+        self.rename_axesr_edit = QtWidgets.QLineEdit(text=self.mass_axis.label.toPlainText())
+        rename_axesr_layout.addWidget(self.rename_axesr_edit)
+        rename_axesr_widget = QtWidgets.QWidget()
+        rename_axesr_widget.setLayout(rename_axesr_layout)
+        rename_axesr_action.setDefaultWidget(rename_axesr_widget)
+
+        # updating axes labels
+        self.rename_axesx_edit.textChanged.connect(partial(self.rename_axis, "bottom"))
+        self.rename_axesy_edit.textChanged.connect(partial(self.rename_axis, "left"))
+        self.rename_axesr_edit.textChanged.connect(partial(self.rename_axis, "right"))
+
+        self.global_menu = self.global_viewbox.menu
+        self.global_menu.axes[0].addAction(rename_axesx_action)
+        self.global_menu.axes[1].addAction(rename_axesy_action)
+
+        self.tg_menu = self.tg_viewbox.menu
+        self.tg_menu.axes[1].addAction(rename_axesr_action)
+        self.tg_menu.ctrlMenu = None
+        self.tg_menu.axes[0] = None 
+
+    def rename_axis(self, type):
+        if type == "bottom" or "left":
+            self.plot.getAxis(type).setLabel(self.rename_axesx_edit.text())
+            self.plot.getAxis(type).setLabel(self.rename_axesy_edit.text())
+        elif type == "right":
+            self.mass_axis.setLabel(self.rename_axesr_edit.text())
+
 
     def add_ms_plot(self, datax, datay, name):
         item = pg.PlotDataItem(
-- 
GitLab