Salome HOME
Merge branch 'eap/23514'
[modules/kernel.git] / idl / SALOMEDS.idl
index d3f37f12445c9698c6f47c72c1f9b2f947b3c466..8e8f4f218952fc666f754901263fdb2cf1b539ed 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -125,6 +125,8 @@ during each working session.
   interface Study
   {
 
+//! Invalid study reference
+    exception StudyInvalidReference {};
 //! Invalid study context
     exception StudyInvalidContext {};
 //! Invalid study component
@@ -137,7 +139,7 @@ during each working session.
     exception StudyObjectAlreadyExists {};
 //! Invalid name of the %study exception
     exception StudyNameError {};
-//! Invalid study comment 
+//! Invalid study comment
     exception StudyCommentError {};
 
 /*! \brief The name of the %Study
@@ -153,15 +155,15 @@ during each working session.
 //! Sequence containing %SObjects
     typedef sequence<SObject> ListOfSObject;
 //!  Get the persistent reference to the %Study.
-    PersistentReference  GetPersistentReference();
+    PersistentReference  GetPersistentReference() raises(StudyInvalidReference);
 //! Get a transient reference to the %Study.
-    SalomeReference      GetTransientReference();
+    SalomeReference      GetTransientReference() raises(StudyInvalidReference);
 
 /*! \brief indicate whether the %Study is empty
 
     \return True if the %Study is empty
 */
-    boolean IsEmpty();
+    boolean IsEmpty() raises(StudyInvalidReference);
 /*! \brief  Find a %SComponent by its name.
 
    \param aComponentName    It's a string value in the Comment Attribute of the Component,
@@ -170,11 +172,11 @@ during each working session.
 <em>See \ref example1 for an example of this method usage in batchmode of %SALOME application.</em>
 
 */
-    SComponent FindComponent  (in string aComponentName);
+    SComponent FindComponent  (in string aComponentName) raises(StudyInvalidReference);
 
 /*! \brief  Find a %SComponent by ID of the according %SObject
 */
-    SComponent FindComponentID(in ID aComponentID);
+    SComponent FindComponentID(in ID aComponentID) raises(StudyInvalidReference);
 /*! \brief  Find a %SObject by the Name Attribute of this %SObject
 
     \param anObjectName String parameter defining the name of the object
@@ -182,40 +184,40 @@ during each working session.
 
 <em>See \ref example19 for an example of this method usage in batchmode of %SALOME application.</em>
 */
-    SObject       FindObject      (in string anObjectName);
+    SObject       FindObject      (in string anObjectName) raises(StudyInvalidReference);
 /*! \brief  Find a %SObject by its ID
 
     \param aObjectID This parameter defines the ID of the required object
     \return The obtained %SObject
 */
-    SObject       FindObjectID    (in ID aObjectID);
+    SObject       FindObjectID    (in ID aObjectID) raises(StudyInvalidReference);
 /*! \brief Create a %SObject by its ID
 
     \param aObjectID This parameter defines the ID of the required object
     \return The created %SObject
 */
-    SObject       CreateObjectID    (in ID aObjectID);
+    SObject       CreateObjectID    (in ID aObjectID) raises(StudyInvalidReference);
 /*!  \brief Find a %SObject by IOR of the object belonging to this %SObject.
 
     \param anObjectName This parameter defines the IOR of the object
     \return The obtained %SObject
 */
-    SObject       FindObjectIOR   (in ID aObjectIOR);
+    SObject       FindObjectIOR   (in ID aObjectIOR) raises(StudyInvalidReference);
 /*! \brief  Find in the study all %SObjects produced by a given %Component.
 
     \param anObjectName The Name Attribute of the searched %SObjects should correspond to <VAR>anObjectName</VAR>.
     \param aComponentName The name of the component, which objects are searched for.
 */
-    ListOfSObject FindObjectByName(in string anObjectName, in string aComponentName);
+    ListOfSObject FindObjectByName(in string anObjectName, in string aComponentName) raises(StudyInvalidReference);
 /*! \brief  Find a %SObject by the path to it.
 
     \param thePath The path to the required %SObject.
     \return The obtained %SObject.
 */
-    SObject FindObjectByPath(in string thePath);
+    SObject FindObjectByPath(in string thePath) raises(StudyInvalidReference);
 /*! \brief Get the path to the %SObject.
 */
-    string  GetObjectPath(in Object theObject);
+    string GetObjectPath(in Object theObject) raises(StudyInvalidReference);
 
 /*! \brief  Set the context of the %Study.
 
@@ -223,44 +225,44 @@ during each working session.
 
 <em>See \ref example23 for an example of this method usage in batchmode of %SALOME application.</em>
 */
-    void SetContext(in string thePath);
+    void SetContext(in string thePath) raises (StudyInvalidReference, StudyInvalidContext);
 /*!  \brief Get the context of the %Study.
-    
+
 <em>See \ref example23 for an example of this method usage in batchmode of %SALOME application.</em>
 */
-    string GetContext();
+    string GetContext() raises (StudyInvalidReference, StudyInvalidContext);
 /*!  \brief Get a list of names of objects corresponding to the context.
 
    \note  If the parameter <VAR>theContext</VAR> is empty, then the current context will be used.
 */
-    ListOfStrings GetObjectNames(in string theContext);
+    ListOfStrings GetObjectNames(in string theContext) raises (StudyInvalidReference, StudyInvalidContext);
 /*! \brief Get a list of names of directories and subdirectories corresponding to the context.
 
    \note  If the parameter <VAR>theContext</VAR> is empty, then the current context will be used.
 */
-    ListOfStrings GetDirectoryNames(in string theContext);
+    ListOfStrings GetDirectoryNames(in string theContext) raises (StudyInvalidReference, StudyInvalidContext);
 /*! \brief  Get a list of names of Files corresponding to the context.
 
     \note  If the parameter <VAR>theContext</VAR> is empty, then the current context will be used.
 */
-    ListOfStrings GetFileNames(in string theContext);
+    ListOfStrings GetFileNames(in string theContext) raises (StudyInvalidReference, StudyInvalidContext);
 /*! \brief Get a list of names of Components corresponding to the context.
 
    \note  If the parameter <VAR>theContext</VAR> is empty, then the current context will be used.
 */
-    ListOfStrings GetComponentNames(in string theContext);
+    ListOfStrings GetComponentNames(in string theContext) raises(StudyInvalidReference);
 /*!  \brief Create a new iterator of child levels of the given %SObject.
 
     \param aSO The given %SObject
     \return A new iterator of child levels of the given %SObject.
 */
-    ChildIterator      NewChildIterator(in SObject aSO);
+    ChildIterator NewChildIterator(in SObject aSO) raises(StudyInvalidReference);
 
 /*!  \brief Create a new iterator of the %SComponents.
 
     \return A new iterator of the %SComponents.
 */
-    SComponentIterator NewComponentIterator();
+    SComponentIterator NewComponentIterator() raises(StudyInvalidReference);
 
 /*! \brief  Create a new %StudyBuilder to add or modify an object in the study.
 
@@ -268,12 +270,12 @@ during each working session.
 
 <em>See \ref example20 for an example of this method usage in batchmode of %SALOME application.</em>
 */
-    StudyBuilder NewBuilder() ;
+    StudyBuilder NewBuilder() raises(StudyInvalidReference);
 /*! \brief Labels dependency
 
     Updates the map with IOR attribute. It's an inner method used for optimization.
 */
-    void UpdateIORLabelMap(in string anIOR, in string anEntry);
+    void UpdateIORLabelMap(in string anIOR, in string anEntry) raises(StudyInvalidReference);
 
 /*! \brief Getting properties of the study
 
@@ -282,7 +284,7 @@ during each working session.
 <em>See \ref example20 for an example of this method usage in batchmode of %SALOME application.</em>
 
 */
-    AttributeStudyProperties GetProperties();
+    AttributeStudyProperties GetProperties() raises(StudyInvalidReference);
 /*! \brief  Indicate whether the %study has been saved
 */
     attribute boolean IsSaved;
@@ -290,33 +292,33 @@ during each working session.
 
   Returns True if the %study has been modified and not saved.
 */
-    boolean IsModified();
+    boolean IsModified() raises(StudyInvalidReference);
 
 /*! \brief  Mark the %study as being modified and not saved.
 */
-    void Modified();
+    void Modified() raises(StudyInvalidReference);
 
 /*! \brief  Indicate the file where the %study has been saved
 */
-    attribute string  URL;
+    attribute string URL;
 
 /*! \brief List of %SObjects
 
     Returns the list of %SObjects which refers to %anObject.
 */
-    ListOfSObject FindDependances(in SObject anObject);
+    ListOfSObject FindDependances(in SObject anObject) raises(StudyInvalidReference);
 
 /*! \brief The date of the last saving of the study
 
     Returns the date of the last saving of study with format: "DD/MM/YYYY HH:MM"
 */
-    string GetLastModificationDate();
+    string GetLastModificationDate() raises(StudyInvalidReference);
 /*! \brief The list of modification dates of the study
 
     Returns the list of modification dates (without creation date) with format "DD/MM/YYYY HH:MM".
       Note : the first modification begins the list.
 */
-    ListOfDates GetModificationsDate();
+    ListOfDates GetModificationsDate() raises(StudyInvalidReference);
 /*! \brief Object conversion.
 
     Converts an object into IOR.
@@ -332,38 +334,38 @@ during each working session.
 
 /*!  \brief Get a new %UseCaseBuilder.
 */
-    UseCaseBuilder  GetUseCaseBuilder();
+    UseCaseBuilder  GetUseCaseBuilder() raises(StudyInvalidReference);
 
 /*! \brief  Close the components in the study, remove itself from the %StudyManager.
 */
-    void Close();
+    void Close() raises(StudyInvalidReference);
 
 /*! \brief  Enable (if isEnabled = True)/disable automatic addition of new %SObjects to the use case.
 */
-    void EnableUseCaseAutoFilling(in boolean isEnabled);
+    void EnableUseCaseAutoFilling(in boolean isEnabled) raises(StudyInvalidReference);
 
 /*!
     Functions for internal usage only
 */
-    void AddPostponed(in string theIOR);
+    void AddPostponed(in string theIOR) raises(StudyInvalidReference);
 
-    void AddCreatedPostponed(in string theIOR);
+    void AddCreatedPostponed(in string theIOR) raises(StudyInvalidReference);
 
-    void RemovePostponed(in long theUndoLimit);
+    void RemovePostponed(in long theUndoLimit) raises(StudyInvalidReference);
 
-    void UndoPostponed(in long theWay);
+    void UndoPostponed(in long theWay) raises(StudyInvalidReference);
 
     boolean DumpStudy(in string thePath,
                       in string theBaseName,
                       in boolean isPublished,
-                      in boolean isMultiFile);
+                      in boolean isMultiFile) raises(StudyInvalidReference);
 
 /*! \brief  Get an AttributeParameter used to store common parameters for given %theSavePoint.
 
     \param theID identifies a common parameters set (Example: "Interface Applicative")
     \param theSavePoint is number of a set of parameters as there can be several sets
 */
-    AttributeParameter GetCommonParameters(in string theID, in long theSavePoint);
+    AttributeParameter GetCommonParameters(in string theID, in long theSavePoint) raises(StudyInvalidReference);
 
 /*! \brief  Get an AttributeParameter used to store parameters for given %theModuleName.
 
@@ -371,7 +373,7 @@ during each working session.
     \param theModuleName is a name of the module (Example: "Geometry")
     \param theSavePoint is number of a set of parameters as there can be several sets
 */
-    AttributeParameter GetModuleParameters(in string theID, in string theModuleName, in long theSavePoint);
+    AttributeParameter GetModuleParameters(in string theID, in string theModuleName, in long theSavePoint) raises(StudyInvalidReference);
 
 
 /*! \brief Get a default Python script to restore visual parameters for given %theModuleName.
@@ -379,7 +381,7 @@ during each working session.
     \param theModuleName is a name of the module (Example: "Geometry")
     \param indent is a string to use for script indentation
 */
-    string GetDefaultScript(in string theModuleName, in string indent);
+    string GetDefaultScript(in string theModuleName, in string indent) raises(StudyInvalidReference);
 
 /*!
     Private method, returns an implementation of this Study.
@@ -390,117 +392,117 @@ during each working session.
     long long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal);
 
 
-/*! \brief  Mark this Study as being locked by the given locker. 
+/*! \brief  Mark this Study as being locked by the given locker.
 
     The lock status can be checked by method IsStudyLocked
     \param theLockerID identifies a locker of the study can be for ex. IOR of the engine that locks the study.
 */
-    void SetStudyLock(in string theLockerID);
+    void SetStudyLock(in string theLockerID) raises(StudyInvalidReference);
 
 /*! \brief Indicate if the Study is locked
 
-   Returns True if the Study was marked locked. 
+   Returns True if the Study was marked locked.
 */
-    boolean IsStudyLocked();
+    boolean IsStudyLocked() raises(StudyInvalidReference);
 
-/*! \brief  Mark this Study as being unlocked by the given locker. 
+/*! \brief  Mark this Study as being unlocked by the given locker.
 
      The lock status can be checked by method IsStudyLocked
     \param theLockerID identifies a locker of the study can be for ex. IOR of the engine that unlocks the study.
 */
-    void UnLockStudy(in string theLockerID);
+    void UnLockStudy(in string theLockerID) raises(StudyInvalidReference);
 
-/*! \brief  Get the list of IDs of the Study's lockers. 
+/*! \brief  Get the list of IDs of the Study's lockers.
 */
-    ListOfStrings GetLockerID();
+    ListOfStrings GetLockerID() raises(StudyInvalidReference);
 
-/*! \brief  Create real variable with Name theVarName and value theValue 
+/*! \brief  Create real variable with Name theVarName and value theValue
 
     (or set if variable value into theValue already exists)
     \param theVarName is a name of the variable
     \param theVarName is a value of the variable.
 */
-    void SetReal( in string theVarName, in double theValue );
+    void SetReal( in string theVarName, in double theValue ) raises(StudyInvalidReference);
 
-/*! \brief  Create integer variable with Name theVarName and value theValue 
+/*! \brief  Create integer variable with Name theVarName and value theValue
 
     (or set if variable value into theValue already exists)
     \param theVarName is a name of the variable
     \param theVarName is a value of the variable.
 */
-    void SetInteger( in string theVarName, in long theValue );
-/*! \brief  Create boolean variable with Name theVarName and value theValue 
+    void SetInteger( in string theVarName, in long theValue ) raises(StudyInvalidReference);
+/*! \brief  Create boolean variable with Name theVarName and value theValue
 
     (or set if variable value into theValue already exists)
     \param theVarName is a name of the variable
     \param theVarName is a value of the variable.
 */
-    void SetBoolean( in string theVarName, in boolean theValue );
+    void SetBoolean( in string theVarName, in boolean theValue ) raises(StudyInvalidReference);
 
-/*! \brief  Create string variable with Name theVarName and value theValue 
+/*! \brief  Create string variable with Name theVarName and value theValue
 
     (or set if variable value into theValue already exists)
     \param theVarName is a name of the variable
     \param theVarName is a value of the variable.
 */
-    void SetString( in string theVarName, in string theValue );
+    void SetString( in string theVarName, in string theValue ) raises(StudyInvalidReference);
 
 /*! \brief  Set current value as double for string variable
 */
-    void SetStringAsDouble( in string theVarName, in double theValue );
+    void SetStringAsDouble( in string theVarName, in double theValue ) raises(StudyInvalidReference);
 
 /*! \brief Get value of a real variable
 
     \param theVarName is a name of the variable.
 */
-    double GetReal( in string theVarName );
+    double GetReal( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Get value of an integer variable
 
     \param theVarName is a name of the variable.
 */
-    long GetInteger( in string theVarName );
+    long GetInteger( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Get value of a boolean variable
 
     \param theVarName is a name of the variable.
 */
-    boolean GetBoolean( in string theVarName );
+    boolean GetBoolean( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Get value of a string variable
 
     \param theVarName is a name of the variable.
 */
-    string GetString( in string theVarName );
-    
+    string GetString( in string theVarName ) raises(StudyInvalidReference);
+
 
 /*! \brief Indicate if a variable is real
 
     Return true if variable is real otherwise return false.
     \param theVarName is a name of the variable.
 */
-    boolean IsReal( in string theVarName );
+    boolean IsReal( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Indicate if a variable is integer
 
     Return true if variable is integer otherwise return false.
     \param theVarName is a name of the variable.
 */
-    boolean IsInteger( in string theVarName );
+    boolean IsInteger( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Indicate if a variable is boolean
 
     Return true if variable is boolean otherwise return false.
     \param theVarName is a name of the variable.
 */
-    boolean IsBoolean( in string theVarName );
+    boolean IsBoolean( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Indicate if a variable is string
 
     Return true if variable is string otherwise return false.
     \param theVarName is a name of the variable.
 */
-    boolean IsString( in string theVarName );
+    boolean IsString( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Indicate if a variable exists in the study
 
@@ -508,11 +510,11 @@ during each working session.
     otherwise return false.
     \param theVarName is a name of the variable.
 */
-    boolean IsVariable( in string theVarName );
+    boolean IsVariable( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Get names of all variables from the study.
 */
-    ListOfStrings GetVariableNames();
+    ListOfStrings GetVariableNames() raises(StudyInvalidReference);
 
 /*! \brief Remove a variable
 
@@ -521,7 +523,7 @@ during each working session.
    \param theVarName Name of the variable.
    \return Status of operation.
 */
-    boolean RemoveVariable( in string theVarName );
+    boolean RemoveVariable( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Rename a variable
 
@@ -531,7 +533,7 @@ during each working session.
    \param theNewVarName New name for the variable.
    \return Status of operation.
 */
-    boolean RenameVariable( in string theVarName, in string theNewVarName );
+    boolean RenameVariable( in string theVarName, in string theNewVarName ) raises(StudyInvalidReference);
 
 /*! \brief Indicate whether variable is used
 
@@ -540,85 +542,30 @@ during each working session.
    \param theVarName Name of the variable.
    \return Variable usage.
 */
-    boolean IsVariableUsed( in string theVarName );
+    boolean IsVariableUsed( in string theVarName ) raises(StudyInvalidReference);
 
 /*! \brief Parse variables used for object creation
 
-   \param string with variables, separated by special symbol. 
+   \param string with variables, separated by special symbol.
    \return Variables list.
 */
-    ListOfListOfStrings ParseVariables( in string theVars );
+    ListOfListOfStrings ParseVariables( in string theVars ) raises(StudyInvalidReference);
 
 /*!
      Attach an observer to the Study
 
-    \param theObserver
-*/
-     void attach(in SALOMEDS::Observer theObserver, in boolean modify);   
-  };
-
-  //===========================================================================
- /*! \brief %SimanStudy Interface
-
-    The Siman (simulation management) study is an interface extension to the %Study
-    with functions for working with SIMAN server. Is allows to get data from SIMAN (check-out operation)
-    and to store it back (check-in operation).
-    This interface is correctly working if SALOME is compiled with SimanIO library, launched with siman
-    option and  connection to SIMAN server is established and alive. Only one study per application,
-    checked out from the SIMAN is SimanStudy. For other studies all functionality is unaccessible.
-*/
-
-  interface SimanStudy
-  {
-
-//! No connection with SIMAN server
-    exception SimanStudyNoConnection {};
-//! There is no SimanStudy with: study with checked out data.
-    exception SimanStudyNotExists {};
-
-/*! \brief The ID of the study in SIMAN server
-
-   This is equivalent to the methods setStudyId() & getStudyId()
-*/
-    attribute string      StudyId;
-    
-/*! \brief The ID of the scenario in SIMAN server
-
-   This is equivalent to the methods setScenarioId() & getScenarioId()
-*/
-    attribute string      ScenarioId;
-/*! \brief The ID of the user in SIMAN server
-
-   This is equivalent to the methods setUserId() & getUserId()
-*/
-    attribute string      UserId;
-
-/*! \brief Get data from SIMAN and put it to the given study
-
-   This method is called for just created study to make it referenced
-   by this Siman study. Also it fills this study by the checked out
-   data from SIMAN server.
-   Warning: StudyID, ScenarioID and User Id must be set before calling of this method!
-
-   \param theTarget referenced study for checking out
-*/
-    void CheckOut(in Study theTarget);
-
-/*! \brief Get data from the source study and store in SIMAN
-    
-    It works only with already checked out study.
-    \param theModuleName name of the module the check in must be perfrormed for. If empty, check in is performed for all modules.
+    \param theObserver observer being attached
+    \param modify when \c true, observer receives any object's modification events;
+           otherwise observer receives object's creation events only
 */
-    void CheckIn(in string theModuleName);
-
-/*! \brief Returns the %Study with checked out data
+     void attach(in SALOMEDS::Observer theObserver, in boolean modify);
+/*!
+     Detach an observer from the Study
 
-   If study is null, there is no such study in this application instance, or Salome was
-   launched without siman option.
+    \param theObserver observer to be detached
 */
-    Study getReferencedStudy();
-
-};
+     void detach(in SALOMEDS::Observer theObserver);
+  };
 
   //==========================================================================
 /*! \brief %Study Builder Interface
@@ -654,7 +601,7 @@ during each working session.
     Defines the instance to the %SComponent.
 */
     void       DefineComponentInstance (in SComponent aComponent,in Object ComponentIOR) raises(LockProtection);
-        
+
 /*! \brief Deletion of a %SComponent
 
   Removes a %SComponent.
@@ -722,7 +669,7 @@ during each working session.
 */
 
     GenericAttribute FindOrCreateAttribute(in  SObject        anObject,
-                                        in  string         aTypeOfAttribute) raises(LockProtection);
+                                         in  string         aTypeOfAttribute) raises(LockProtection);
 
 /*! \brief Looking for an attribute assigned to a %SObject
 
@@ -734,8 +681,8 @@ during each working session.
  */
 
     boolean FindAttribute(in  SObject        anObject,
-                                out GenericAttribute anAttribute,
-                                in  string         aTypeOfAttribute);
+                                 out GenericAttribute anAttribute,
+                                 in  string         aTypeOfAttribute);
 /*! \brief Deleting the attribute assigned to the %SObject
 
     Removes the attribute of a specific type which is assigned to the object.
@@ -745,7 +692,7 @@ during each working session.
 <em>See \ref example17 for an example of this method usage in batchmode of %SALOME application.</em>
 */
     void RemoveAttribute(in  SObject        anObject,
-                        in  string         aTypeOfAttribute) raises(LockProtection);
+                         in  string         aTypeOfAttribute) raises(LockProtection);
 /*!
     Adds a reference between %anObject and %theReferencedObject.
     \param anObject The %SObject which will get a reference
@@ -753,7 +700,7 @@ during each working session.
 */
 
     void Addreference(in SObject anObject,
-                     in SObject theReferencedObject) ;
+                      in SObject theReferencedObject) ;
 
 /*!
     Removes a reference from %anObject to another object.
@@ -792,7 +739,7 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
 /*! \brief Creation of a new command
 
    Creates a new command which can contain several different actions.
-   
+
 <em>See \ref example3 for an example of this method usage in batchmode of %SALOME application.</em>
 
 */
@@ -811,10 +758,10 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
     Returns True if at this moment there is a command under execution.
 */
     boolean HasOpenCommand();
-/*! \brief Cancelation of the command
+/*! \brief Cancellation of the command
 
     Cancels all actions declared within the command.
-    
+
 <em>See \ref example17 for an example of this method usage in batchmode of %SALOME application.</em>
 */
     void AbortCommand(); // command management
@@ -845,7 +792,7 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
     void Redo() raises (LockProtection);
 /*!
     Returns True if at this moment there are any actions which can be canceled.
-    
+
 <em>See \ref example16 for an example of this method usage in batchmode of %SALOME application.</em>
 
 */
@@ -909,7 +856,7 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
 
 /*!
     Shutdown the StudyManager process.
-*/    
+*/
     oneway void ShutdownWithExit();
 
 /*! \brief Creation of a new study
@@ -921,7 +868,7 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
 <em>See \ref example17 for an example of this method usage in batchmode of %SALOME application.</em>
 
 */
-    Study NewStudy(in string study_name);
+    Study NewStudy(in string study_name) raises (SALOME::SALOME_Exception);
 
 /*! \brief Open a study
 
@@ -957,26 +904,26 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
 /*! \brief Saving the study in a specified HDF file (or files).
 
     Saves the study in a specified file (or files).
-    \param aUrl The path to the definite file in whcih the study will be saved
+    \param aUrl The path to the definite file in which the study will be saved
     \param aStudy The study which will be saved
     \param theMultiFile If this parameter is True the study will be saved in several files.
 
 <em>See \ref example1 for an example of this method usage in batchmode of %SALOME application.</em>
 */
     boolean  SaveAs(in URL   aUrl, // if the file already exists
-               in Study aStudy,
-               in boolean theMultiFile); // overwrite (as option)
+                in Study aStudy,
+                in boolean theMultiFile); // overwrite (as option)
 /*! \brief Saving the study in a specified ASCII file (or files).
 
     Saves the study in a specified ASCII file (or files).
 
-    \param aUrl The path to the definite file in whcih the study will be saved
+    \param aUrl The path to the definite file in which the study will be saved
     \param aStudy The study which will be saved
     \param theMultiFile If this parameter is True the study will be saved in several files.
 */
     boolean  SaveAsASCII(in URL   aUrl, // if the file already exists
-                     in Study aStudy,
-                     in boolean theMultiFile); // overwrite (as option)
+                      in Study aStudy,
+                      in boolean theMultiFile); // overwrite (as option)
 
 
 /*! \brief List of open studies.
@@ -1034,11 +981,11 @@ Gets the list of open studies
 */
     string ConvertObjectToIOR(in Object theObject);
 /*! \brief Object conversion.
-           
+
     Converts IOR into an object.
     \return    An object
 */
-    Object ConvertIORToObject(in string theIOR); 
+    Object ConvertIORToObject(in string theIOR);
 
 /*!
     Private method, returns an implementation of this StudyManager.
@@ -1046,14 +993,7 @@ Gets the list of open studies
    \param thePID is a process ID of the caller
    \param isLocal is set True if the StudyManager is launched locally with the caller
 */
-    long long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal); 
-
-/*! \brief Returns the siman study based on the given study.
-           
-    Creates a new Siman study, or returns just a previously created.
-    \return Siman study, or none if it is not siman mode
-*/
-    SimanStudy GetSimanStudy();
+    long long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal);
 
   };
 
@@ -1064,7 +1004,7 @@ Gets the list of open studies
    The objects in the %study are built by the %StudyBuilder. The %SObject interface
    provides methods for elementary inquiries, like getting an object %ID or its attribuites.
  \note
+
    <BR><VAR>Tag</VAR> of an item in %SALOME application is an integer value uniquely defining an item
    in the tree-type data structure.
    <BR><VAR>ID</VAR> of an item is a description of item's position in the tree-type data structure.
@@ -1083,69 +1023,71 @@ Gets the list of open studies
     boolean IsNull();
 
 /*! Gets an object %ID
-
    \return ID of the %SObject.
 */
     ID GetID();
-/*!  Acquisition of the father %Component of the %SObject
 
+/*!  Acquisition of the father %Component of the %SObject
   \return The father %Component of the %SObject.
 */
     SComponent GetFatherComponent();
-/*! Acquisition of the father %SObject of the %SObject
 
+/*! Acquisition of the father %SObject of the %SObject
    \return the father %SObject of the given %SObject.
 */
     SObject    GetFather();
-/*! Gets the %tag of a %SObject
 
+/*! Gets the %tag of a %SObject
     \return the %tag of a %SObject.
 */
     short      Tag();
-/*! Gets the depth of a %SObject
 
+/*! Returns a tag of the last child %SObject (if any) of this %SObject.
+    Returns zero if this %SObject has no children.
+*/
+    short      GetLastChildTag();
+
+/*! Gets the depth of a %SObject
     \return the depth of a %SObject.
 */
     short      Depth();
-/*! Looks for subobjects of a given %SObject.
 
+/*! Looks for subobjects of a given %SObject.
     \param atag Tag of the given %SObject
     \return True if it finds a subobject of the %SObject with a definite tag as well as the required subobject.
 */
-
     boolean FindSubObject (in long atag, out SObject obj);
-/*! Looks for attributes of a given %SObject
 
+/*! Looks for attributes of a given %SObject
    \param aTypeOfAttribute String value defining the type of the required attribute of the given %SObject.
    \return True if it finds an attribute of a definite type of the given %SObject as well as the discovered attribute.
 
 <em>See \ref example1 for an example of this method usage in batchmode of %SALOME application.</em>
 */
     boolean FindAttribute(out GenericAttribute anAttribute,
-                                 in  string         aTypeOfAttribute);
-/*! Looks for a %SObject which the given %SObject refers to.
+                                  in  string         aTypeOfAttribute);
 
+/*! Looks for a %SObject which the given %SObject refers to.
     \return The object which the given %SObject refers to as well as True if it finds
     this object.
 */
     boolean ReferencedObject(out SObject obj); // A REVOIR
-/*! Gets all attributes of a given %SObject
 
+/*! Gets all attributes of a given %SObject
     \return The list of all attributes of the given %SObject.
 
 <em>See \ref example17 for an example of this method usage in batchmode of %SALOME application.</em>
 
 */
     ListOfAttributes     GetAllAttributes();
-/*! Gets the study of a given %SObject.
 
+/*! Gets the study of a given %SObject.
     \return The study containing the given %SObject.
 */
     Study GetStudy();
 
 /*! Gets the CORBA object by its own IOR attribute.
     Returns nil, if can't.
-
     \return The CORBA object of the %SObject.
 */
     Object GetObject();
@@ -1210,8 +1152,8 @@ Gets the list of open studies
     string Type();
 
     //! Get the class type
-    string GetClassType();     
-       
+    string GetClassType();
+
     //! Get SObject
     SObject GetSObject();
 
@@ -1433,7 +1375,7 @@ can be called by any component and which provide the following functionality:
 <ul>
     <li> publishing in the study of the objects created by a definite component
     <li> saving/loading of the data created by a definite component. These methods are called by the StudyManager when loading/saving a study containing the data created by a definite component.
-    <li> transforming of the transient references into persistant references (or vice versa) of the SObjects when saving (or loading) a study
+    <li> transforming of the transient references into persistent references (or vice versa) of the SObjects when saving (or loading) a study
     <li> copy/paste common functionality. These methods can be called by any component in order to copy/paste its object created in the study
 </ul>
 
@@ -1524,9 +1466,9 @@ study is saved these references are transformed into persintent IDs.
 
 */
     string IORToLocalPersistentID (in SObject theSObject,
-                                  in string IORString,
-                                  in boolean isMultiFile,
-                                  in boolean isASCII);
+                                   in string IORString,
+                                   in boolean isMultiFile,
+                                   in boolean isASCII);
 /*!
   Transforms PersistentID into IOR of the object. It is called for each
    object in the %study.
@@ -1543,9 +1485,9 @@ study is open, these references are transformed into persintent IORs.
 
 */
     string LocalPersistentIDToIOR (in SObject theSObject,
-                                  in string aLocalPersistentID,
-                                  in boolean isMultiFile,
-                                  in boolean isASCII)
+                                   in string aLocalPersistentID,
+                                   in boolean isMultiFile,
+                                   in boolean isASCII)
       raises (SALOME::SALOME_Exception);
 
     // Publishing in the study