Salome HOME
a2f46aa72c2063141b0302fc2d079496030f98bd
[modules/gui.git] / src / CAM / CAM_DataModel.cxx
1 #include "CAM_DataModel.h"
2
3 #include "CAM_Module.h"
4 #include "CAM_RootObject.h"
5
6 /*!Constructor. Initialise module by \a module.*/
7 CAM_DataModel::CAM_DataModel( CAM_Module* module )
8 : myRoot( 0 ),
9 myModule( module )
10 {
11 }
12
13 /*!Destructor. Do nothing.*/
14 CAM_DataModel::~CAM_DataModel()
15 {
16 }
17
18 void CAM_DataModel::initialize()
19 {
20   //! Default implementation, does nothing.\n
21   //! Can be used for creation of root object.
22 }
23
24 /*!Get root object.
25  *\retval CAM_DataObject pointer - root object.
26  */
27 CAM_DataObject* CAM_DataModel::root() const
28 {
29   return myRoot;
30 }
31
32 /*!Sets root object to \a newRoot.\n
33  *Emit root changed, if it was.
34  *\param newRoot - new root object
35  */
36 void CAM_DataModel::setRoot( const CAM_DataObject* newRoot )
37 {
38   if ( myRoot == newRoot )
39     return;
40
41   if ( myRoot )
42     myRoot->disconnect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) );
43
44   myRoot = (CAM_DataObject*)newRoot;
45
46   if ( myRoot )
47     myRoot->connect( this, SLOT( onDestroyed( SUIT_DataObject* ) ) );
48
49   emit rootChanged( this );
50 }
51
52 /*!Gets module.
53  *\retval CAM_Module pointer - module.
54  */
55 CAM_Module* CAM_DataModel::module() const
56 {
57   return myModule;
58 }
59
60 /*!Nullify root, if \a obj equal root.*/
61 void CAM_DataModel::onDestroyed( SUIT_DataObject* obj )
62 {
63   if ( myRoot == obj )
64     myRoot = 0;
65 }