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()
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