diff --git a/src/View/Geometry/PlotAC.py b/src/View/Geometry/PlotAC.py index ad43fdf3..2bdee3d1 100644 --- a/src/View/Geometry/PlotAC.py +++ b/src/View/Geometry/PlotAC.py @@ -50,6 +50,7 @@ class PlotAC(PamhyrPlot): self.previous_plot_selected = None self.plot_selected = None self.next_plot_selected = None + self._rect_select = None @timer def draw(self): diff --git a/src/View/Geometry/PlotKPZ.py b/src/View/Geometry/PlotKPZ.py index 651a6758..7368ceb0 100644 --- a/src/View/Geometry/PlotKPZ.py +++ b/src/View/Geometry/PlotKPZ.py @@ -20,6 +20,8 @@ import logging from tools import timer from View.Tools.PamhyrPlot import PamhyrPlot +from PyQt5.QtWidgets import QApplication +from PyQt5.QtCore import Qt logger = logging.getLogger() @@ -51,6 +53,48 @@ class PlotKPZ(PamhyrPlot): self.before_plot_selected = None self.plot_selected = None self.after_plot_selected = None + self._rect_select = None + self.parent=parent + + def onpick(self, event): + if event.mouseevent.inaxes != self.canvas.axes: + return + if event.mouseevent.button.value != 1: + return + + modifiers = QApplication.keyboardModifiers() + if modifiers not in [Qt.ControlModifier, Qt.NoModifier, Qt.ShiftModifier]: + return + + ind, point = self._closest_kp(event) + if self.parent._table is not None: + self.parent._table.blockSignals(True) + self.parent.select_row_profile_slider(ind) + self.parent._table.blockSignals(False) + + self.update() + return + + def _closest_kp(self, event): + + s = event.artist.get_segments() + x = [i[0,0] for i in s] + print(x) + mx = event.mouseevent.xdata + points = enumerate(x) + + def dist_mouse(point): + x = point[1] + d = abs(mx - x) + return d + + closest = min( + points, key=dist_mouse + ) + + print("closest = "+str(closest)) + + return closest @timer def draw(self): @@ -91,7 +135,8 @@ class PlotKPZ(PamhyrPlot): self.line_kp_zmin_zmax = self.canvas.axes.vlines( x=kp, ymin=z_min, ymax=z_max, color=self.color_plot, - lw=1. + lw=1., + picker=10 ) def draw_z_line_highlight(self): diff --git a/src/View/Geometry/PlotXY.py b/src/View/Geometry/PlotXY.py index baa46d26..a60d9a96 100644 --- a/src/View/Geometry/PlotXY.py +++ b/src/View/Geometry/PlotXY.py @@ -46,6 +46,7 @@ class PlotXY(PamhyrPlot): self.before_plot_selected = None self.plot_selected = None self.after_plot_selected = None + self._rect_select = None @timer def draw(self): diff --git a/src/View/Geometry/Profile/Plot.py b/src/View/Geometry/Profile/Plot.py index 43d3c831..fdb15303 100644 --- a/src/View/Geometry/Profile/Plot.py +++ b/src/View/Geometry/Profile/Plot.py @@ -83,7 +83,7 @@ class Plot(PamhyrPlot): points, hyd = self.highlight - ind, point = self._closer_point(event) + ind, point = self._closest_point(event) if modifiers == Qt.ControlModifier: rows = self._parent.index_selected_rows() @@ -191,7 +191,7 @@ class Plot(PamhyrPlot): self._table.scrollTo(self._table.model().index(ind2, 0)) self._table.blockSignals(False) - def _closer_point(self, event): + def _closest_point(self, event): points_ind = event.ind axes = self.canvas.axes bx, by = axes.get_xlim(), axes.get_ylim() @@ -217,11 +217,11 @@ class Plot(PamhyrPlot): ) return d - closer = min( + closest = min( points, key=dist_mouse ) - return closer + return closest def _get_z_from_click(self, event): return event.ydata diff --git a/src/View/Geometry/Window.py b/src/View/Geometry/Window.py index ad5b0a23..020c29b4 100644 --- a/src/View/Geometry/Window.py +++ b/src/View/Geometry/Window.py @@ -382,7 +382,8 @@ class GeometryWindow(PamhyrWindow): study=self._study, data=self._reach, trad=self._trad, - toolbar=self._toolbar_kpc + toolbar=self._toolbar_kpc, + parent=self ) self._plot_kpc.draw() diff --git a/src/View/Tools/PamhyrPlot.py b/src/View/Tools/PamhyrPlot.py index 23ae2638..2be88480 100644 --- a/src/View/Tools/PamhyrPlot.py +++ b/src/View/Tools/PamhyrPlot.py @@ -16,6 +16,8 @@ # -*- coding: utf-8 -*- +import logging + import matplotlib.colors as mplcolors from matplotlib.widgets import RectangleSelector from matplotlib import ticker @@ -26,6 +28,8 @@ from View.Tools.Plot.APlot import APlot from View.Tools.Plot.PamhyrCanvas import MplCanvas from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar +logger = logging.getLogger() + class PamhyrPlot(APlot): color_axes = "black" @@ -245,5 +249,5 @@ class PamhyrPlot(APlot): 'eclick and erelease are the press and release events' x1, y1 = eclick.xdata, eclick.ydata x2, y2 = erelease.xdata, erelease.ydata - print("(%3.2f, %3.2f) --> (%3.2f, %3.2f)" % (x1, y1, x2, y2)) + logging.debug("(%3.2f, %3.2f) --> (%3.2f, %3.2f)" % (x1, y1, x2, y2)) return