+ static boost::shared_ptr<ModelAPI_PluginManager> get();
+
+ /// Registers the plugin that creates features.
+ /// It is obligatory for each plugin to call this function on loading to be found by
+ /// the plugin manager on call of the feature)
+ virtual void registerPlugin(ModelAPI_Plugin* thePlugin) = 0;
+
+ /// Returns the root document of the application (that may contains sub-documents)
+ virtual boost::shared_ptr<ModelAPI_Document> rootDocument() = 0;
+
+ /// Return true if root document has been already created
+ virtual bool hasRootDocument() = 0;
+
+ /// Returns the current document that used for current work in the application
+ virtual boost::shared_ptr<ModelAPI_Document> currentDocument() = 0;
+
+ /// Defines the current document that used for current work in the application
+ virtual void setCurrentDocument(boost::shared_ptr<ModelAPI_Document> theDoc) = 0;