diff --git a/requirements.txt b/requirements.txt index c96343a478453da39ef4226d3e7d0c3db7fdc99d..2bf32b337522d9adcff839a91024db0f47d40187 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 e257e258b90a9d35b0e23a8cc2b974368379fe42..adff394e82ea46b02314911a1ed054b7f21807fd 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(