func (v *mappingView) focusArchFromUserObject(obj pf.ArchIf) (ret graph.ArchIf, ok bool) { var a graph.ArchIf for _, a = range v.arch { if obj.Name() == a.UserObj().Name() { ret = a ok = true } else { if a.Deselect() { v.repaintArch(a) } } } return }
func channelGetIOTypeFromArch(a pf.ArchIf, iotype string) (iot pf.IOTypeIf, err error) { var ok bool for _, iot = range a.IOTypes() { if iot.Name() == iotype { ok = true break } } if !ok { err = fmt.Errorf("createInChannelFromXml error: referenced ioType %s not found in arch %s.\n", iotype, a.Name()) } return }
func ArchMappingNew(userObj pf.ArchIf, nodes []NodeIf, mapping mp.MappingIf) *Arch { var processes []ProcessIf var Children []ContainerChild for _, up := range userObj.Processes() { var mappedNodes []NodeIf var mappedIds []bh.NodeIdIf for _, nId := range mapping.MappedIds() { m, ok := mapping.Mapped(nId.String()) if ok && m == up { log.Printf("ArchMappingNew(p=%s): nId=%s", up.Name(), nId.String()) n, ok := findNodeInTree(nodes, nId.String()) if ok && !n.UserObj().Expanded() { mappedNodes = append(mappedNodes, n) mappedIds = append(mappedIds, nId) } } } p := ProcessMappingNew(mappedNodes, mappedIds, up) processes = append(processes, p) Children = append(Children, p) } config := DrawConfig{ColorInit(ColorOption(ArchNormal)), ColorInit(ColorOption(ArchHighlight)), ColorInit(ColorOption(ArchSelected)), ColorInit(ColorOption(BoxFrame)), ColorInit(ColorOption(Text)), image.Point{archPortOutBorder, archPortOutBorder}} cconfig := ContainerConfig{archPortWidth, archPortHeight, archMinWidth, archMinHeight} a := &Arch{ContainerInit(Children, config, userObj, cconfig), userObj, make(map[pf.ChannelIf]*ContainerPort), processes, gr.PositionModeMapping, mapping} a.init() /* for _, n := range nodes { melem, ok := mapping.MappedElement(n.UserObj()) if !ok { log.Printf("ArchMappingNew warning: node %s not mapped.\n", n.Name()) continue } n.SetPosition(melem.PathModePosition("", gr.PositionModeMapping)) } */ a.initMappingPorts() return a }
func ArchNew(userObj pf.ArchIf) *Arch { var processes []ProcessIf var Children []ContainerChild for _, up := range userObj.Processes() { p := ProcessNew(up.ModePosition(gr.PositionModeNormal), up) processes = append(processes, p) Children = append(Children, p) } config := DrawConfig{ColorInit(ColorOption(ArchNormal)), ColorInit(ColorOption(ArchHighlight)), ColorInit(ColorOption(ArchSelected)), ColorInit(ColorOption(BoxFrame)), ColorInit(ColorOption(Text)), image.Point{archPortOutBorder, archPortOutBorder}} cconfig := ContainerConfig{archPortWidth, archPortHeight, archMinWidth, archMinHeight} a := &Arch{ContainerInit(Children, config, userObj, cconfig), userObj, make(map[pf.ChannelIf]*ContainerPort), processes, gr.PositionModeNormal, nil} a.init() a.initPorts() return a }
func CreateXmlArch(a pf.ArchIf) *backend.XmlArch { ret := backend.XmlArchNew(a.Name()) for _, t := range a.IOTypes() { ret.IOType = append(ret.IOType, *CreateXmlIOType(t)) } for _, p := range a.Processes() { ret.Processes = append(ret.Processes, *CreateXmlProcess(p)) } //ret.Entry = freesp.CreateXmlModePosition(a).Entry return ret }
func CreateXmlArchHint(a pf.ArchIf) (xmla *backend.XmlArchPosHint) { xmla = backend.XmlArchPosHintNew(a.Name()) xmla.Entry = freesp.CreateXmlModePosition(a).Entry for _, p := range a.ArchPorts() { xmla.ArchPorts = append(xmla.ArchPorts, *CreateXmlArchPortHint(p)) } for _, p := range a.Processes() { xmla.Processes = append(xmla.Processes, *CreateXmlProcessHint(p)) } return }