Ejemplo n.º 1
0
    def canvas_menu(self):
        if self._drag_mode == 2:
            p = self.get_path()
            if self._drag_hit == -1:
                m = [("Add node",  self.onAddNode, None), ]
                if self._hit_seg_i != -1:
                    segpath = cbook.BezierSplit(self.get_path())
                    if len(segpath[self._hit_seg_i]) == 2:
                        m = m + \
                            [("Convert to curve",  self.onConvCurve, None), ]
                    else:
                        m = m + [("Convert to Line",  self.onConvLine, None), ]
                return m
            else:
                if cbook.BezierNodeType(p, self._drag_hit) == 1:
                    return [("Remove Node", self.onRmNode, None),
                            ("Convert to symmetric node", self.onMakeSym, None)]
                if cbook.BezierNodeType(p, self._drag_hit) == 2:
                    if p[self._drag_hit][2] == 1:  # smooth node
                        return [("Remove node", self.onRmNode, None),
                                ("Convert to coner node", self.onMakeCorner, None),
                                ("Convert to asymmetric node", self.onMakeAsym, None)]
                    elif p[self._drag_hit][2] == 2:  # coner node
                        return [("Remove Node", self.onRmNode, None),
                                ("Convert to symmetric node", self.onMakeSym, None)]
                    elif p[self._drag_hit][2] == 3:  # asymmetricr node
                        return [("Remove Node", self.onRmNode, None),
                                ("Convert to symmetric node", self.onMakeSym, None)]

        return []
Ejemplo n.º 2
0
    def onConvLine(self, evt):
        segpath = cbook.BezierSplit(self.get_path())
        p = segpath[self._hit_seg_i]
        segpath[self._hit_seg_i] = [p[0], (mpath.Path.LINETO, p[-1][1], 0)]
        path = cbook.BezierJoin(segpath)

        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()
Ejemplo n.º 3
0
    def onConvCurve(self, evt):
        segpath = cbook.BezierSplit(self.get_path())
        p = segpath[self._hit_seg_i]
        x0, y0 = p[0][1]
        x1, y1 = p[-1][1]
        segpath[self._hit_seg_i] = [p[0],
                                    (mpath.Path.CURVE4,
                                     (x0*0.7+x1*0.3, y0*0.7+y1*0.3), p[0][2]),
                                    (mpath.Path.CURVE4,
                                     (x0*0.3+x1*0.7, y0*0.3+y1*0.7), 2),
                                    (mpath.Path.CURVE4, p[-1][1], 2)]
        path = cbook.BezierJoin(segpath)

        window = evt.GetEventObject().GetTopLevelParent()
        hist = GlobalHistory().get_history(window)
        hist.start_record()
        hist.add_history(UndoRedoFigobjMethod(self._artists[0],
                                              'pathdata', path))
        hist.stop_record()