include "Simantics/DB" include "Simantics/Model" import "Simantics/Diagram" type Flag = Resource // FLAGS --------------------------- toFlag :: Resource -> Flag toFlag flag = (fromResource flag) importJava "org.simantics.modeling.flags.MergeFlags" where @JavaName mergeFlags mergeAllFlagsInDiagram :: Resource -> String @JavaName expandFlags expandAllFlagsInDiagram :: Resource -> () @JavaName mergeWithoutMetadata mergeFlags :: [Resource] -> String importJava "org.simantics.modeling.flags.ExpandFlags" where @JavaName expandFlagWithoutMetadata expandFlag :: Resource -> Vector Resource importJava "org.simantics.diagram.flag.FlagUtil" where setFlagExternal :: [Flag] -> Boolean -> [Resource] """Joins two flags.""" joinFlags :: Flag -> Flag -> () joinFlags flag1 flag2 = do j = newEntity [ hasType STR.ConnectionJoin, hasStatement DIA.JoinsFlag (toResource flag1), hasStatement DIA.JoinsFlag (toResource flag2) ] () flagToElement :: Flag -> Element flagToElement flag = do flagResource = toResource flag fromResource flagResource getFlags :: Diagram -> [Resource] getFlags dia = do children = collectionToList (objects_ (singleObject (toResource dia) MOD.CompositeToDiagram) L0.ConsistsOf) flags = filter (\x -> isInstanceOf x DIA.Flag) children flags getFlagByName :: Diagram -> String -> [Resource] getFlagByName dia name = do flags = getFlags dia flags_with_name = filter (\x -> relatedValue2 x L0.HasName == name) flags flags_with_name