]> SALOME platform Git repositories - modules/gui.git/blob - src/SalomeApp/SalomeApp_Module.cxx
Salome HOME
Process properly visibility state (eye icon) for 'light' modules
[modules/gui.git] / src / SalomeApp / SalomeApp_Module.cxx
1 // Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 // File:      SalomeApp_Module.cxx
24 // Created:   10/25/2004 11:39:56 AM
25 // Author:    Sergey LITONIN
26
27 #include "SalomeApp_Module.h"
28 #include "SalomeApp_DataModel.h"
29 #include "SalomeApp_Application.h"
30 #include "SalomeApp_Study.h"
31 #include "SalomeApp_DataObject.h"
32
33 #include "LightApp_Selection.h"
34
35 #include "CAM_DataModel.h"
36
37 // temporary commented
38 //#include "OB_Browser.h"
39
40 #include <SALOME_ListIO.hxx>
41 #include <SALOME_ListIteratorOfListIO.hxx>
42 #include <SALOME_InteractiveObject.hxx>
43           
44 #include <LightApp_DataObject.h>
45
46 #include <SUIT_Session.h>
47 #include <SUIT_DataBrowser.h>
48 #include <SUIT_ViewManager.h>
49 #include <SUIT_MessageBox.h>
50 #include <SUIT_Desktop.h>
51
52 #include <QString>
53
54 /*!Constructor.*/
55 SalomeApp_Module::SalomeApp_Module( const QString& name )
56   : LightApp_Module( name )
57 {
58 }
59
60 /*!Destructor.*/
61 SalomeApp_Module::~SalomeApp_Module()
62 {
63 }
64
65 /*!Gets application.*/
66 SalomeApp_Application* SalomeApp_Module::getApp() const
67 {
68   return (SalomeApp_Application*)application();
69 }
70
71 /*!Create new instance of data model and return it.*/
72 CAM_DataModel* SalomeApp_Module::createDataModel()
73 {
74   return new SalomeApp_DataModel(this);
75 }
76
77 /*!Create and return instance of LightApp_Selection.*/
78 LightApp_Selection* SalomeApp_Module::createSelection() const
79 {
80   return LightApp_Module::createSelection();
81 }
82
83 /*!
84   Converts objects-containers to list of objects, those are contained
85   Other objects must be added without conversion
86   \param source - source list of objects
87   \param dest - list of converted objects
88 */
89 void SalomeApp_Module::extractContainers( const SALOME_ListIO& source, SALOME_ListIO& dest ) const
90 {
91   SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
92   if( !study )
93   {
94     dest = source;
95     return;
96   }
97
98   SALOME_ListIteratorOfListIO anIt( source );
99   for( ; anIt.More(); anIt.Next() )
100   {
101     Handle( SALOME_InteractiveObject ) obj = anIt.Value();
102     if( obj->hasEntry() )
103     {
104       _PTR(SObject) SO = study->studyDS()->FindObjectID( obj->getEntry() );
105       if( SO && QString( SO->GetID().c_str() ) == SO->GetFatherComponent()->GetID().c_str() )
106       { //component is selected
107         _PTR(SComponent) SC( SO->GetFatherComponent() );
108         _PTR(ChildIterator) anIter ( study->studyDS()->NewChildIterator( SC ) );
109         anIter->InitEx( true );
110         while( anIter->More() )
111         {
112           _PTR(SObject) valSO ( anIter->Value() );
113           _PTR(SObject) refSO;
114           if( !valSO->ReferencedObject( refSO ) )
115           {
116             QString id = valSO->GetID().c_str(),
117                     comp = SC->ComponentDataType().c_str(),
118                     val = valSO->GetName().c_str();
119
120             Handle( SALOME_InteractiveObject ) new_obj =
121               new SALOME_InteractiveObject( id.toLatin1(), comp.toLatin1(), val.toLatin1() );
122             dest.Append( new_obj );
123           }
124           anIter->Next();
125         }
126         continue;
127       }
128     }
129     dest.Append( obj );
130   }
131 }
132
133 /*!
134  * \brief Virtual public
135  *
136  * This method is called just before the study document is saved, so the module has a possibility
137  * to store visual parameters in AttributeParameter attribut
138  */
139 void SalomeApp_Module::storeVisualParameters(int savePoint)
140 {
141 }
142
143 /*!
144  * \brief Virtual public
145  *
146  * This method is called after the study document is opened, so the module has a possibility to restore
147  * visual parameters
148  */
149 void SalomeApp_Module::restoreVisualParameters(int savePoint)
150 {
151 }