Skip to content
15 changes: 15 additions & 0 deletions plottr/plot/mpl/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from matplotlib import rcParams
from matplotlib.axes import Axes
from matplotlib.figure import Figure
from matplotlib.backend_bases import LocationEvent, Event
from matplotlib.backends.backend_qt5agg import (
FigureCanvasQTAgg as FCanvas,
NavigationToolbar2QT as NavBar,
Expand Down Expand Up @@ -124,6 +125,15 @@ def metaToClipboard(self) -> None:
for k, v in self._meta_info.items())
clipboard.setText(meta_info_string)

def coordinateToClipboard(self, event: Event) -> None:
if isinstance(event, LocationEvent):
clipboard = QtWidgets.QApplication.clipboard()
if event.xdata is not None and event.ydata is not None:
coord_info_string = '({:.8g}, {:.8g})'.format(event.xdata, event.ydata)
clipboard.setText(coord_info_string)
else:
pass

def setFigureTitle(self, title: str) -> None:
"""Add a title to the figure."""
self.fig.suptitle(title,
Expand Down Expand Up @@ -163,6 +173,7 @@ def __init__(self, parent: Optional[PlotWidgetContainer] = None):
layout.addWidget(self.plot)
layout.addWidget(self.mplBar)
self.setLayout(layout)
self.addPlotOptions()

def setMeta(self, data: DataDictBase) -> None:
"""Add meta info contained in the data to the figure.
Expand Down Expand Up @@ -196,6 +207,10 @@ def addMplBarOptions(self) -> None:
self.mplBar.addSeparator()
self.mplBar.addAction('Copy Figure', self.plot.toClipboard)
self.mplBar.addAction('Copy Meta', self.plot.metaToClipboard)

def addPlotOptions(self) -> None:
"""Add options for copying coordinates to the clipboard"""
self.plot.mpl_connect('button_press_event', self.plot.coordinateToClipboard)


def figureDialog() -> Tuple[Figure, QtWidgets.QDialog]:
Expand Down