Exemplo n.º 1
0
    def __init__(self,
                 ax,
                 on_move=None,
                 on_release=None,
                 on_enter=None,
                 maxdist=10,
                 line_props=None):
        super(LineTool, self).__init__(ax,
                                       on_move=on_move,
                                       on_enter=on_enter,
                                       on_release=on_release)

        props = dict(color='r', linewidth=1, alpha=0.4, solid_capstyle='butt')
        props.update(line_props if line_props is not None else {})
        self.linewidth = props['linewidth']
        self.maxdist = maxdist
        self._active_pt = None

        x = (0, 0)
        y = (0, 0)
        self._end_pts = np.transpose([x, y])

        self._line = lines.Line2D(x, y, visible=False, animated=True, **props)
        ax.add_line(self._line)

        self._handles = ToolHandles(ax, x, y)
        self._handles.set_visible(False)
        self._artists = [self._line, self._handles.artist]

        if on_enter is None:

            def on_enter(pts):
                x, y = np.transpose(pts)
                print "length = %0.2f" % np.sqrt(np.diff(x)**2 + np.diff(y)**2)

        self.callback_on_enter = on_enter

        self.connect_event('button_press_event', self.on_mouse_press)
        self.connect_event('button_release_event', self.on_mouse_release)
        self.connect_event('motion_notify_event', self.on_move)