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
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
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
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
def NewBP(self): bpID = misc.uuid() oBP = CBP(bpID) self.m_ItemInfo[bpID] = oBP return bpID
def NewPin(self, oPin): pinID = misc.uuid() oPin.SetID(pinID) self.m_ItemInfo[pinID] = oPin return pinID