Salome HOME
45190056fb73a7f069531bdbeb83bd5b722dca43
[modules/gui.git] / src / TOOLSGUI / ToolsGUI.cxx
1 //  Copyright (C) 2007-2008  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.
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 //  SALOME TOOLSGUI : implementation of desktop "Tools" optioins
23 //  File   : ToolsGUI.cxx
24 //  Author : Nicolas REJNERI
25 //
26 #include "ToolsGUI.h"
27
28 /*!
29   \class ToolsGUI
30   \brief Utility class.
31 */
32
33 /*!
34   \brief Get visibility value of the "AttributeGraphic" attribute.
35   \param theStudy study
36   \param theObj object
37   \param theId sub-object identifier
38   \return \c true if an object (sub-object) is visible
39 */
40 bool ToolsGUI::GetVisibility( _PTR(Study)   theStudy,
41                               _PTR(SObject) theObj,
42                               void*         theId )
43 {
44   _PTR(GenericAttribute) anAttr;
45   if ( theObj && theObj->FindAttribute( anAttr, "AttributeGraphic" ) )
46   {
47     _PTR(AttributeGraphic) aGraphic (anAttr);
48     return aGraphic->GetVisibility( (unsigned long)theId );
49   }
50
51   return false;
52 }
53
54 /*!
55   \brief Set visibility value of the "AttributeGraphic" attribute.
56   \param theStudy study
57   \param theObj object
58   \return theValue new visibility value
59   \param theId sub-object identifier
60 */
61 bool ToolsGUI::SetVisibility( _PTR(Study) theStudy,
62                               const char* theEntry,
63                               const bool  theValue,
64                               void*       theId )
65 {
66   _PTR(SObject) anObj ( theStudy->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 (theStudy->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