Ejemplo n.º 1
0
 def NewGraphic(self, bpID):
     from .bpmgr import GetBPMgr
     graphicID = misc.uuid()
     sName = "图表-%s" % self.NewID()
     oGraphic = CGraphic(graphicID, sName)
     GetIDMgr().SetGraphic2BP(bpID, graphicID)
     GetBPMgr().AddGraphic2BP(graphicID)
     self.m_ItemInfo[graphicID] = oGraphic
     GetSignal().NEW_GRAPHIC.emit(bpID, graphicID)
     return graphicID
Ejemplo n.º 2
0
 def NewVariable(self, bpID):
     from .bpmgr import GetBPMgr
     iType = bddefine.Type.INT
     sName = "NewVar%s" % self.NewID()
     varID = misc.uuid()
     self.m_ItemInfo[varID] = CVariable(varID, sName, iType, 0)
     GetIDMgr().SetVar2BP(bpID, varID)
     GetBPMgr().AddToAttrList(bpID,
                              eddefine.BlueprintAttrName.VARIABLE_LIST,
                              varID)
     GetSignal().NEW_VARIABLE.emit(bpID, varID)
     return varID
Ejemplo n.º 3
0
 def NewLine(self, graphicID, oPinID, iPinID):
     # 删除input槽之前的连接
     from .graphicmgr import GetGraphicMgr
     lstLine = GetIDMgr().GetAllLineByPin(iPinID)
     for lineID in lstLine:
         self.DelLine(lineID)
     lineID = misc.uuid()
     oLine = CLine(lineID, oPinID, iPinID)
     self.m_ItemInfo[lineID] = oLine
     GetIDMgr().SetLine2Graphic(graphicID, lineID)           # 记录line对应的graphic
     GetIDMgr().AddLine2Pin(oPinID, iPinID, lineID)          # 记录引脚对应的line
     GetGraphicMgr().AddLine2Graphic(lineID)                 # 添加到graphic属性里面
     GetSignal().PIN_ADD_LINE.emit(iPinID)
     return lineID
Ejemplo n.º 4
0
    def NewNode(self, graphicID,  sNodeName, pos, varID):
        """
        因为预定义节点和上面的pin是预先定义的,可以生成很多实例
        所以每创建一个节点,复制节点以及pin
        """
        from . import interface
        from .graphicmgr import GetGraphicMgr
        oDefineNode = self.m_DefineInfo[sNodeName]
        iNodeType = oDefineNode.GetAttr(bddefine.NodeAttrName.TYPE)

        bIsEventNode = False
        if iNodeType == bddefine.NODE_TYPE_EVENT:
            bIsEventNode = True
            bpID = interface.GetBPIDByGraphicID(graphicID)
            iEventNodeID = interface.GetBlueprintAttr(bpID, eddefine.BlueprintAttrName.EVENT_NODE)
            if iEventNodeID:
                mygID = interface.GetGraphicIDByNodeID(iEventNodeID)
                GetSignal().UI_FOCUS_NODE.emit(mygID, iEventNodeID)
                return

        oNode = copy.deepcopy(oDefineNode)
        nodeID = misc.uuid()
        GetIDMgr().SetNode2Graphic(graphicID, nodeID)     # 记录node对应的graphic
        GetGraphicMgr().AddNode2Graphic(nodeID)           # 添加到graphic里面
        oNode.SetID(nodeID)
        oNode.SetAttr(bddefine.NodeAttrName.POSITION, pos)
        lstPin = []
        for _, oDefinePin in oNode.m_PinInfo.items():
            pinID = interface.AddPin(nodeID, oDefinePin)
            lstPin.append(pinID)
        oNode.SetAttr(bddefine.NodeAttrName.PINIDLIST, lstPin)
        self.m_ItemInfo[nodeID] = oNode

        # 如果是添加变量节点
        if varID:
            oNode.SetAttr(bddefine.NodeAttrName.VARIABLE_ID, varID)
            self.SetVarNodeInfo(nodeID, varID)

        if bIsEventNode:
            interface.SetBlueprintAttr(bpID, eddefine.BlueprintAttrName.EVENT_NODE, nodeID)
        GetSignal().NEW_NODE.emit(graphicID, nodeID)
        return nodeID
Ejemplo n.º 5
0
 def NewBP(self):
     bpID = misc.uuid()
     oBP = CBP(bpID)
     self.m_ItemInfo[bpID] = oBP
     return bpID
Ejemplo n.º 6
0
 def NewPin(self, oPin):
     pinID = misc.uuid()
     oPin.SetID(pinID)
     self.m_ItemInfo[pinID] = oPin
     return pinID