Salome HOME
Update copyrights
[modules/gui.git] / src / TOOLSGUI / ToolsGUI.cxx
1 // Copyright (C) 2007-2019  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 //  SALOME TOOLSGUI : implementation of desktop "Tools" optioins
24 //  File   : ToolsGUI.cxx
25 //  Author : Nicolas REJNERI
26 //
27 #include "ToolsGUI.h"
28 #include <SALOMEDSClient_ClientFactory.hxx>
29 #include <SALOME_KernelServices.hxx>
30
31 /*!
32   \class ToolsGUI
33   \brief Utility class.
34 */
35
36 /*!
37   \brief Get visibility value of the "AttributeGraphic" attribute.
38   \param theObj object
39   \param theId sub-object identifier
40   \return \c true if an object (sub-object) is visible
41 */
42 bool ToolsGUI::GetVisibility( _PTR(SObject) theObj,
43                               void*         theId )
44 {
45   _PTR(GenericAttribute) anAttr;
46   if ( theObj && theObj->FindAttribute( anAttr, "AttributeGraphic" ) )
47   {
48     _PTR(AttributeGraphic) aGraphic (anAttr);
49     return aGraphic->GetVisibility( (unsigned long)theId );
50   }
51
52   return false;
53 }
54
55 /*!
56   \brief Set visibility value of the "AttributeGraphic" attribute.
57   \param theObj object
58   \return theValue new visibility value
59   \param theId sub-object identifier
60 */
61 bool ToolsGUI::SetVisibility( const char* theEntry,
62                               const bool  theValue,
63                               void*       theId )
64 {
65   _PTR(Study) aStudy = ClientFactory::Study(KERNEL::getStudyServant());
66   _PTR(SObject) anObj ( aStudy->FindObjectID( theEntry ) );
67
68   if ( anObj )
69   {
70     _PTR(GenericAttribute) aGAttr;
71     if ( anObj->FindAttribute( aGAttr, "AttributeGraphic" ) )
72     {
73       _PTR(AttributeGraphic) anAttr ( aGAttr );
74       anAttr->SetVisibility( (unsigned long)theId, theValue );
75     }
76     else if ( theValue )
77     {
78       _PTR(StudyBuilder) aBuilder (aStudy->NewBuilder());
79       _PTR(AttributeGraphic) anAttr (aBuilder->FindOrCreateAttribute(anObj, "AttributeGraphic"));
80       anAttr->SetVisibility( (unsigned long)theId, theValue );
81     }
82     return true;
83   }
84
85   return false;
86 }
87