]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/scl/Simantics/SCL.scl
GraphExplorerComposite now accepts TextTransfer and MOVE/DEFAULT dnd ops
[simantics/platform.git] / bundles / org.simantics.modeling / scl / Simantics / SCL.scl
1 include "Simantics/DB"
2 include "Simantics/Variables"
3 include "Simantics/Ontologies"
4
5 include "http://www.simantics.org/Modeling-1.2/SCLQuery" as SCLQuery
6
7 importJava "org.simantics.scl.compiler.errors.CompilationError" where
8     data CompilationError
9
10 importJava "org.simantics.scl.ui.editor.TextAndErrors" where
11     data TextAndErrors
12     createTextAndErrors :: String -> [CompilationError] -> TextAndErrors
13
14 createSCLModuleAction :: Resource -> <Proc> ()
15 createSCLModuleAction res = do
16   syncWrite (\() -> createSCLModuleDefault res)
17   ()
18
19 createPGraphAction :: Resource -> <Proc> ()
20 createPGraphAction res = do
21   syncWrite (\() -> createPGraphDefault res)
22   ()
23
24 createSCLValueIndependent :: Resource -> String -> <WriteGraph> Resource
25 createSCLValueIndependent valueType expression = do
26     value = newResource ()
27     claim value L0.InstanceOf valueType
28     claimRelatedValue value L0.SCLValue.expression expression
29     value
30
31 createSCLValue :: Resource -> Resource -> Resource -> String -> <WriteGraph> Resource
32 createSCLValue container predicate valueType expression = do
33     value = createSCLValueIndependent valueType expression
34     claim container predicate value
35     value
36
37 setExpression :: Variable -> String -> <WriteGraph> ()
38 setExpression self expression = do
39     res = represents self
40     claimRelatedValue res L0.SCLValue.expression expression
41
42 importJava "org.simantics.modeling.ModelingUtils" where
43     createSCLModuleDefault :: Resource -> <WriteGraph> ()
44     createPGraphDefault :: Resource -> <WriteGraph> ()
45     createSCLModule :: Resource -> String -> <WriteGraph> ()
46
47 effect SCL 
48     "scl" 
49     "org.simantics.scl.compiler.commands.CommandSession"
50
51 importJava "org.simantics.modeling.scl.SCLRealm" where
52     data SCLRealm
53     syncExec :: SCLRealm -> (<SCL, Proc> a) -> <Proc> a
54     @JavaName refreshVariablesSync
55     refreshVariables :: SCLRealm -> <Proc> ()
56     
57 readSCLRealm :: Resource -> <ReadGraph,Proc> SCLRealm
58 readSCLRealm r = let
59     id = relatedValue r L0.HasName
60   in match sclRealmById id with
61     Just realm -> realm
62     Nothing -> getOrCreateSCLRealm id
63
64 importJava "org.simantics.modeling.scl.SCLSessionManager" where
65     getOrCreateSCLRealm :: String -> <Proc> SCLRealm
66     sclRealmById :: String -> <Proc> Maybe SCLRealm
67     
68 importJava "org.simantics.scl.compiler.top.CommandResponse" where
69     data CommandResponse = 
70         @FieldNames [message, error]
71         CommandResponse String Boolean
72
73 isSuccessful :: CommandResponse -> Boolean
74 isSuccessful (CommandResponse _ error) = not error
75
76 instance Show CommandResponse where
77     show (CommandResponse message _) = message
78
79 importJava "org.simantics.scl.compiler.commands.CommandSession" where
80     execute :: String -> <SCL, Proc> ()
81     
82     @JavaName getVariableValue
83     variableValue :: String -> <SCL> a
84     setVariable :: String -> Type -> a -> <SCL> ()