]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/scl/Simantics/Model.scl
Fixed Simantics/Diagram/setElements to resolve attachment relations
[simantics/platform.git] / bundles / org.simantics.modeling / scl / Simantics / Model.scl
index f360040d359dcef4d9b18659eefbd49259291758..e82975e67ad36cd80a9181803b2d00b752150e92 100644 (file)
@@ -1,70 +1,92 @@
-include "Simantics/Entity" hiding (nameOf)\r
-include "Simantics/Ontologies"\r
-\r
-type Model = Resource\r
-type Configuration = Resource\r
-\r
-"""\r
-    model name\r
-    \r
-Returns an existing model in the current project with the given `name`\r
-"""\r
-model :: String -> <ReadGraph> Model\r
-model name = match possibleResourceChild (currentProject ()) name with\r
-    Just m -> fromResource m\r
-    Nothing -> fail $ "Didn't find a model " + name + "." \r
-\r
-"""\r
-    configurationOf model\r
-    \r
-Returns the configuration of the given `model`\r
-and returns the `configuration` resource\r
-"""\r
-configurationOf :: Model -> <ReadGraph> Configuration\r
-configurationOf m = do\r
-    conf = singleObject (toResource m) SIMU.HasConfiguration \r
-    fromResource conf\r
-\r
-"""\r
-Returns the list of all models in the current project.\r
-"""\r
-allModels :: () -> <ReadGraph> [Model]\r
-allModels _ = map fromResource $ objectsWithType (currentProject ()) L0.ConsistsOf SIMU.Model\r
-\r
-importJava "org.simantics.modeling.ModelingUtils" where\r
-    """Removes the index associated with the model."""\r
-    removeIndex :: Model -> <WriteGraph> ()\r
-    \r
-    resetIssueSources :: Model -> <WriteGraph> ()\r
-    \r
-    """Copies annotation types from one model to another."""\r
-    copyAnnotationTypes :: Model -> Model -> <WriteGraph> ()\r
-    \r
-    deleteIndex :: Resource -> <WriteGraph> ()\r
-    releaseMemory :: () -> <WriteGraph> ()\r
-    \r
-    searchByType :: Resource -> Resource -> <ReadGraph> [Resource]\r
-    searchByTypeShallow :: Resource -> Resource -> <ReadGraph> [Resource]\r
-    searchByTypeAndName :: Resource -> Resource -> String -> <ReadGraph> [Resource]\r
-    searchByTypeAndNameShallow :: Resource -> Resource -> String -> <ReadGraph> [Resource]\r
-    searchByQuery :: Resource -> String -> <ReadGraph> [Resource]\r
-    searchByQueryShallow :: Resource -> String -> <ReadGraph> [Resource]\r
-    searchByTypeAndFilter :: Resource -> Resource -> (Resource -> <ReadGraph> Boolean) -> <ReadGraph> [Resource]\r
-    \r
-    listIndexEntries :: Resource -> String -> <ReadGraph> String\r
-    activateModel :: Resource -> <WriteGraph> Boolean\r
-    \r
-    @JavaName createModel\r
-    createGenericModel :: Resource -> String -> <WriteGraph> Resource\r
-\r
-importJava "org.simantics.modeling.ModelingUtils" where\r
-    @JavaName getPossibleModel\r
-    getPossibleModel :: Resource -> <ReadGraph> Model\r
-    possibleIndexRoot :: Resource -> <ReadGraph> Maybe Resource\r
-\r
-activateModelAction :: Resource -> <Proc> ()\r
-activateModelAction model = do\r
-  syncWrite (\() -> activateModel model)\r
-  ()\r
-    \r
-    
\ No newline at end of file
+include "Simantics/Entity" hiding (nameOf)
+include "Simantics/Ontologies"
+import "Simantics/Misc"
+
+type Model = Resource
+type Configuration = Resource
+
+"""
+    model name
+    
+Returns an existing model in the current project with the given `name`
+"""
+model :: String -> <ReadGraph> Model
+model name = match possibleResourceChild (currentProject ()) name with
+    Just m -> m
+    Nothing -> fail $ "Didn't find a model " + name + "." 
+
+"""
+    configurationOf model
+    
+Returns the configuration of the given `model`
+and returns the `configuration` resource
+"""
+configurationOf :: Model -> <ReadGraph> Configuration
+configurationOf m = singleObject m SIMU.HasConfiguration
+
+"""
+Returns the list of all models in the current project.
+"""
+allModels :: () -> <ReadGraph> [Model]
+allModels _ = objectsWithType (currentProject ()) L0.ConsistsOf SIMU.Model
+
+importJava "org.simantics.modeling.ModelingUtils" where
+    """Removes the index associated with the model."""
+    removeIndex :: Model -> <WriteGraph> ()
+    
+    resetIssueSources :: Model -> <WriteGraph> ()
+    
+    """Copies annotation types from one model to another."""
+    copyAnnotationTypes :: Model -> Model -> <WriteGraph> ()
+    
+    deleteIndex :: Resource -> <WriteGraph> ()
+    releaseMemory :: () -> <WriteGraph> ()
+    
+    searchByType :: Resource -> Resource -> <ReadGraph> [Resource]
+    searchByTypeShallow :: Resource -> Resource -> <ReadGraph> [Resource]
+    searchByTypeAndName :: Resource -> Resource -> String -> <ReadGraph> [Resource]
+    searchByTypeAndNameShallow :: Resource -> Resource -> String -> <ReadGraph> [Resource]
+    searchByQuery :: Resource -> String -> <ReadGraph> [Resource]
+    searchByQueryShallow :: Resource -> String -> <ReadGraph> [Resource]
+    searchByTypeAndFilter :: Resource -> Resource -> (Resource -> <ReadGraph> Boolean) -> <ReadGraph> [Resource]
+    
+    listIndexEntries :: Resource -> String -> <ReadGraph> String
+
+    """
+    Activates the specified model but does not wait for any of the effects
+    caused by the activation to be completed. In most cases the blocking
+    version [syncActivateModel](#syncActivateModel) should be used instead
+    of this function.
+    """
+    activateModel :: Resource -> <WriteGraph> Boolean
+    
+    @JavaName createModel
+    createGenericModel :: Resource -> String -> <WriteGraph> Resource
+
+importJava "org.simantics.modeling.ModelingUtils" where
+    @JavaName getPossibleModel
+    getPossibleModel :: Resource -> <ReadGraph> Model
+    possibleIndexRoot :: Resource -> <ReadGraph> Maybe Resource
+
+activateModelAction :: Resource -> <Proc> ()
+activateModelAction model = do
+  syncWrite (\() -> activateModel model)
+  ()
+
+"""
+Activates the specified model and blocks until all effects caused by the
+activation have been completed. This function is a synchronous version of
+the older [activateModel](#activateModel) function that does not wait for
+activation completion, i.e. works asynchronously. In most cases it is
+recommended to use this functions instead of 
+
+The effect completion waiting works based on the `org.simantics.db.service.ServiceActivityMonitor`
+service offered by the database client. Therefore implementation that want
+to support waiting for activation completion need to register/unregister
+activities with this service accordingly.
+"""
+syncActivateModel :: Resource -> <Proc> Boolean
+syncActivateModel model = do
+    result = syncWrite (\() -> activateModel model)
+    syncGraph ()
+    result
\ No newline at end of file