Salome HOME
36f72afd98a10378d045ce54b07f179127ab3068
[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 /*!
37   Default implementation, does nothing.
38   Can be used for creation of root object.
39 */
40 void CAM_DataModel::initialize()
41 {
42 }
43
44 /*!Get root object.
45  *\retval CAM_DataObject pointer - root object.
46  */
47 CAM_DataObject* CAM_DataModel::root() const
48 {
49   return myRoot;
50 }
51
52 /*!Sets root object to \a newRoot.\n
53  *Emit root changed, if it was.
54  *\param newRoot - new root object
55  */
56 void CAM_DataModel::setRoot( const CAM_DataObject* newRoot )
57 {
58   if ( myRoot == newRoot )
59     return;
60
61   if ( myRoot )
62     myRoot->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) );
63
64   myRoot = (CAM_DataObject*)newRoot;
65
66   if ( myRoot )
67     myRoot->connect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) );
68
69   emit rootChanged( this );
70 }
71
72 /*!Gets module.
73  *\retval CAM_Module pointer - module.
74  */
75 CAM_Module* CAM_DataModel::module() const
76 {
77   return myModule;
78 }
79
80 /*!Nullify root, if \a obj equal root.*/
81 void CAM_DataModel::onDestroyed( SUIT_DataObject* obj )
82 {
83   if ( myRoot == obj )
84     myRoot = 0;
85 }