Salome HOME
Copyrights update
[modules/gui.git] / src / SalomeApp / SalomeApp_TypeFilter.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 "SalomeApp_TypeFilter.h"
20
21 #include "LightApp_DataOwner.h"
22 #include "SalomeApp_Study.h"
23
24 #include <SALOMEDS_SObject.hxx>
25
26 /*!
27   Constructor.
28 */
29 SalomeApp_TypeFilter::SalomeApp_TypeFilter( SalomeApp_Study* study, const QString& kind )
30   : SalomeApp_Filter( study ) 
31 {
32   myKind = kind;
33 }
34
35 /*!
36   Destructor.
37 */
38 SalomeApp_TypeFilter::~SalomeApp_TypeFilter()
39 {
40 }
41
42 /*!
43   Check: data owner is valid?
44 */
45 bool SalomeApp_TypeFilter::isOk( const SUIT_DataOwner* sOwner ) const
46 {  
47   const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*> ( sOwner );
48
49   SalomeApp_Study* aDoc =  getStudy();
50   if (owner && aDoc && aDoc->studyDS())
51     {
52       _PTR(Study) aStudy = aDoc->studyDS();
53       QString entry = owner->entry();
54       
55       _PTR(SObject) aSObj( aStudy->FindObjectID( entry.latin1() ) );
56       if (aSObj)
57         {
58           _PTR(SComponent) aComponent(aSObj->GetFatherComponent());
59           if ( aComponent && (aComponent->ComponentDataType() == myKind.latin1()) )
60             return true;
61         }
62     }
63
64   return false;
65 }