Salome HOME
Copyrights update
[modules/gui.git] / src / CAM / CAM_DataModel.cxx
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/
18 //
19 #include "CAM_DataModel.h"
20
21 #include "CAM_Module.h"
22 #include "CAM_RootObject.h"
23
24 /*!Constructor. Initialise module by \a module.*/
25 CAM_DataModel::CAM_DataModel( CAM_Module* module )
26 : myRoot( 0 ),
27 myModule( module )
28 {
29 }
30
31 /*!Destructor. Do nothing.*/
32 CAM_DataModel::~CAM_DataModel()
33 {
34 }
35
36 void CAM_DataModel::initialize()
37 {
38   //! Default implementation, does nothing.\n
39   //! Can be used for creation of root object.
40 }
41
42 /*!Get root object.
43  *\retval CAM_DataObject pointer - root object.
44  */
45 CAM_DataObject* CAM_DataModel::root() const
46 {
47   return myRoot;
48 }
49
50 /*!Sets root object to \a newRoot.\n
51  *Emit root changed, if it was.
52  *\param newRoot - new root object
53  */
54 void CAM_DataModel::setRoot( const CAM_DataObject* newRoot )
55 {
56   if ( myRoot == newRoot )
57     return;
58
59   if ( myRoot )
60     myRoot->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) );
61
62   myRoot = (CAM_DataObject*)newRoot;
63
64   if ( myRoot )
65     myRoot->connect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) );
66
67   emit rootChanged( this );
68 }
69
70 /*!Gets module.
71  *\retval CAM_Module pointer - module.
72  */
73 CAM_Module* CAM_DataModel::module() const
74 {
75   return myModule;
76 }
77
78 /*!Nullify root, if \a obj equal root.*/
79 void CAM_DataModel::onDestroyed( SUIT_DataObject* obj )
80 {
81   if ( myRoot == obj )
82     myRoot = 0;
83 }