示例#1
0
    def expandMacro(self):

        # before expansion save the face position for load/paste purposes
        self._face_colpos = self._face.getPos()

        self._src.setPos(self._face.pos())
        self._sink.setPos(self._src.pos())

        self._face.hide()
        self._macroedge.show()
        self._sink.show()
        self._src.show()
        self.resetPortParents()

        for port in self._src.getPorts():
            port.updateEdges()

        for port in self._sink.getPorts():
            port.updateEdges()

        for node in self._encap_nodes:
            node.setPos(self._src.pos())
            node.show()
            for edge in node.edges():
                edge.show()

        # initialize animation stuff
        self._anim_timeline = QtCore.QTimeLine(300)
        self._anim_timeline.finished.connect(self.jawOpen)
        self._anim_timeline.setFrameRange(1, 100)
        self._anim = []

        # close jaw
        self._anim.append(QtGui.QGraphicsItemAnimation())
        self._anim[-1].setItem(self._sink)
        self._anim[-1].setTimeLine(self._anim_timeline)
        self._anim[-1].setPosAt(1, self._sink_pos + self._src.pos())

        for node, pos in zip(self._encap_nodes, self._encap_nodepos):
            self._anim.append(QtGui.QGraphicsItemAnimation())
            self._anim[-1].setItem(node)
            self._anim[-1].setTimeLine(self._anim_timeline)
            self._anim[-1].setPosAt(1, pos + self._src.pos())

        self._anim_timeline.start()
示例#2
0
    def collapseMacro(self):

        if self.validateSrcNodes():
            return False

        if self.validateSinkNodes():
            return False

        self.listEncapsulatedNodes()

        if manager.isDebug():
            log.debug("nodes:")
            for node in self._encap_nodes:
                log.debug(node.name)

        self.saveNodePos()

        self._face.setPos(self._src.pos())

        # initialize animation stuff
        self._anim_timeline = QtCore.QTimeLine(300)
        self._anim_timeline.finished.connect(self.jawClosed)
        self._anim_timeline.setFrameRange(1, 100)
        self._anim = []

        # close jaw
        self._anim.append(QtGui.QGraphicsItemAnimation())
        self._anim[-1].setItem(self._sink)
        self._anim[-1].setTimeLine(self._anim_timeline)
        self._anim[-1].setPosAt(1, self._src.pos())

        for node in self._encap_nodes:
            self._anim.append(QtGui.QGraphicsItemAnimation())
            self._anim[-1].setItem(node)
            self._anim[-1].setTimeLine(self._anim_timeline)
            self._anim[-1].setPosAt(1, self._src.pos())

        self._anim_timeline.start()

        return True