Esempio n. 1
0
    def picker_a0(self, a, evt):
        from ifigure.widgets.canvas.custom_picker import linehit_test, abs_d

        self._picker_a_mode = 0
        hit, extra, type, loc = super(FigCircle, self).picker_a0(a, evt)

        if not self._selected:
            flag, extra = self._artists[0].contains(evt)
            if not flag:
                return False, {}, None, 0
        if type == 'area':
            flag, extra = self._artists[0].contains(evt)
            if not flag:
                return False, {}, None, 0
        self._selected = hit
        return hit, extra, type, loc
        self._drag_hit = -1
        hit2, hit_seg_i = cbook.BezierHitTest(self.get_path(), evt.x, evt.y)

        if self._drag_mode == 2:
            i = 0
            for item in self.get_path():
                if ((evt.x - item[1][0])**2 +
                        (evt.y - item[1][1])**2) < 25:
                    self._drag_hit = i
                    self._drag_opath = item
                    break
                i = i+1
            if self._drag_hit != -1:
                return True, {}, 'area', 3
            self._hit_seg_i = hit_seg_i

        if self._drag_mode != 0:
            if type == 'point':
                return hit, extra, type, loc

#        x = np.transpose(a.get_verts())[0]
#        y = np.transpose(a.get_verts())[1]
#        ans, idx  = cpicker.CheckLineHit(x, y,
#                            evt.x, evt.y)
        if hit2:
            type = 'area'
            if self._drag_mode == 1:
                self._drag_mode = 2
                self._picker_a_mode = 1
                self._hit_seg_i = hit_seg_i
            else:
                if evt.button == 1:
                    self._drag_mode = 1
            return True, {}, 'area', 3
        self._drag_mode = 0
        return False, {}, type, loc
Esempio n. 2
0
    def onAddNode(self, evt):
        fig_page = self.get_figpage()
        xy = self._artists[0].get_verts()
        path = self.get_path()
        hit, idx = cbook.BezierHitTest(path, self._st_p[0], self._st_p[1])
        if hit:
            path = cbook.BezierInsert(path, idx, self._st_p[0], self._st_p[1])
            window = evt.GetEventObject().GetTopLevelParent()
            hist = GlobalHistory().get_history(window)
#            hist = self.get_root_parent().app.history
            hist.start_record()
            hist.add_history(UndoRedoFigobjMethod(self._artists[0],
                                                  'pathdata', path))
            hist.stop_record()