]> SALOME platform Git repositories - modules/gui.git/blob - src/LightApp/LightApp_DataObject.cxx
Salome HOME
9320c256d528ff3218b879428466acabaa3fe6f2
[modules/gui.git] / src / LightApp / LightApp_DataObject.cxx
1 #include "LightApp_DataObject.h"
2
3 #include "LightApp_Study.h"
4 #include "LightApp_RootObject.h"
5
6 #include "CAM_DataModel.h"
7 #include "CAM_Module.h"
8
9 #include <SUIT_Application.h>
10 #include <SUIT_ResourceMgr.h>
11 #include <SUIT_DataObjectKey.h>
12
13 #include <qobject.h>
14
15 /*!
16         Class: LightApp_DataObject::Key
17         Level: Internal
18 */
19 class LightApp_DataObject::Key : public SUIT_DataObjectKey
20 {
21 public:
22   Key( const QString& );
23   virtual ~Key();
24
25   virtual bool isLess( const SUIT_DataObjectKey* ) const;
26   virtual bool isEqual( const SUIT_DataObjectKey* ) const;
27
28 private:
29   QString myEntry;
30 };
31
32 /*!Constructor. Initialize by \a entry.*/
33 LightApp_DataObject::Key::Key( const QString& entry )
34 : SUIT_DataObjectKey(),
35   myEntry( entry )
36 {
37 }
38
39 /*!Destructor. Do nothing.*/
40 LightApp_DataObject::Key::~Key()
41 {
42 }
43
44 /*!Checks: Is current key less than \a other.*/
45 bool LightApp_DataObject::Key::isLess( const SUIT_DataObjectKey* other ) const
46 {
47   Key* that = (Key*)other;
48   return myEntry < that->myEntry;
49 }
50
51 /*!Checks: Is current key equal with \a other.*/
52 bool LightApp_DataObject::Key::isEqual( const SUIT_DataObjectKey* other ) const
53 {
54   Key* that = (Key*)other;
55   return myEntry == that->myEntry;
56 }
57
58 /*
59         Class: LightApp_DataObject
60         Level: Public
61 */
62 /*!Constructor. Initialize by \a parent*/
63 LightApp_DataObject::LightApp_DataObject( SUIT_DataObject* parent )
64 : CAM_DataObject( parent )
65 {
66 }
67
68 /*!Destructor. Do nothing.*/
69 LightApp_DataObject::~LightApp_DataObject()
70 {
71 }
72
73 /*!Gets object ID.
74  *\retval QString
75  */
76 QString LightApp_DataObject::entry() const
77 {
78   return QString::null;
79 }
80
81 /*!Create and return new key object.*/
82 SUIT_DataObjectKey* LightApp_DataObject::key() const
83 {
84   QString str = entry();
85   return new Key( str );
86 }
87
88 /*!Gets component object.
89  *\retval SUIT_DataObject.
90  */
91 SUIT_DataObject* LightApp_DataObject::componentObject() const
92 {
93   SUIT_DataObject* compObj = 0; // for root object
94
95   if ( parent() && parent() == root() ) 
96     compObj = (SUIT_DataObject*)this; // for component-level objects
97   else 
98   {
99     compObj = parent(); // for lower level objects
100     while ( compObj && compObj->parent() != root() )
101       compObj = compObj->parent();
102   }
103   return compObj;
104 }
105
106 /*!Get component type.*/
107 QString LightApp_DataObject::componentDataType() const
108 {
109   SUIT_DataObject* aCompObj = componentObject();
110   LightApp_ModuleObject* anObj = dynamic_cast<LightApp_ModuleObject*>( aCompObj );
111   if ( anObj ) {
112     CAM_DataModel* aModel = anObj->dataModel();
113     if ( aModel )
114       return aModel->module()->name();
115   }
116   return "";
117 }
118
119 /*
120         Class: LightApp_ModuleObject
121         Level: Public
122 */
123
124 /*!Constructor.Initialize by \a parent.*/
125 LightApp_ModuleObject::LightApp_ModuleObject( SUIT_DataObject* parent )
126 : CAM_RootObject( parent ),
127   CAM_DataObject( parent )
128 {
129 }
130
131 /*!Constructor.Initialize by \a module and parent.*/
132 LightApp_ModuleObject::LightApp_ModuleObject( CAM_DataModel* dm, SUIT_DataObject* parent )
133 : CAM_RootObject( dm, parent ),
134   CAM_DataObject( parent )
135 {
136 }
137
138 /*!Destructor. Do nothing.*/
139 LightApp_ModuleObject::~LightApp_ModuleObject()
140 {
141 }
142
143 /*!Returns module name */
144 QString LightApp_ModuleObject::name() const
145 {
146   return CAM_RootObject::name();
147 }
148
149 /*!Insert new child object to the children list at specified position
150  *\add component in Study for this module object if it necessary*/
151 void LightApp_ModuleObject::insertChild( SUIT_DataObject* theObj, int thePosition )
152 {
153   CAM_RootObject::insertChild(theObj, thePosition);
154
155   CAM_DataModel* aModel = dataModel();
156
157   LightApp_RootObject* aRoot = dynamic_cast<LightApp_RootObject*>(parent());
158
159   if (aRoot)
160     aRoot->study()->addComponent(aModel);
161
162
163 }