Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

exotkAIS_MaterialMenuNode.cxx

Go to the documentation of this file.
00001 
00002 //   exotkAIS_MaterialMenuNode.cxx
00004 //    Copyright (C) 2001  Stephane Routelous
00005 //
00006 //    This file is part of exoTK.
00007 //
00008 //    exoTK is free software; you can redistribute it and/or modify
00009 //    it under the terms of the GNU General Public License as published by
00010 //    the Free Software Foundation; either version 2 of the License, or
00011 //    (at your option) any later version.
00012 //
00013 //    exoTK is distributed in the hope that it will be useful,
00014 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 //    GNU General Public License for more details.
00017 //
00018 //    You should have received a copy of the GNU General Public License
00019 //    along with exoTK; if not, write to the Free Software
00020 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 
00028 #include <exotkAIS_MaterialMenuNode.hxx>
00029 
00030 #ifndef  _AIS_InteractiveObject_HeaderFile
00031 #include <AIS_InteractiveObject.hxx>
00032 #endif
00033 #ifndef  _AIS_InteractiveContext_HeaderFile
00034 #include <AIS_InteractiveContext.hxx>
00035 #endif
00036 #ifndef  _Graphic3d_MaterialAspect_HeaderFile
00037 #include <Graphic3d_MaterialAspect.hxx>
00038 #endif
00039 #ifndef  _AIS_Drawer_HeaderFile
00040 #include <AIS_Drawer.hxx>
00041 #endif
00042 #ifndef  _Prs3d_ShadingAspect_HeaderFile
00043 #include <Prs3d_ShadingAspect.hxx>
00044 #endif
00045 #ifndef  _Graphic3d_AspectFillArea3d_HeaderFile
00046 #include <Graphic3d_AspectFillArea3d.hxx>
00047 #endif
00048 #ifndef  _exotkGUI_HeaderFile
00049 #include <exotkGUI.hxx>
00050 #endif
00051 #ifndef  _exotkGUI_GUI_HeaderFile
00052 #include <exotkGUI_GUI.hxx>
00053 #endif
00054 //
00055 IMPLEMENT_STANDARD_HANDLE(exotkAIS_MaterialMenuNode, exotkTree_MenuNode)
00056 IMPLEMENT_STANDARD_RTTI(exotkAIS_MaterialMenuNode, exotkTree_MenuNode)
00057 //
00058 // Foreach ancestors, we add a IMPLEMENT_STANDARD_SUPERTYPE and 
00059 // a IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_ENTRY macro.
00060 // We must respect the order: from the direct ancestor class
00061 // to the base class.
00062 //
00063 
00064 IMPLEMENT_STANDARD_TYPE(exotkAIS_MaterialMenuNode)
00065 IMPLEMENT_STANDARD_SUPERTYPE(exotkTree_MenuNode) 
00066 IMPLEMENT_STANDARD_SUPERTYPE(exotkTree_TreeNode) 
00067 IMPLEMENT_STANDARD_SUPERTYPE(MMgt_TShared) 
00068 IMPLEMENT_STANDARD_SUPERTYPE(Standard_Transient)
00069 IMPLEMENT_STANDARD_SUPERTYPE_ARRAY()
00070 IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_ENTRY(exotkTree_MenuNode)
00071 IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_ENTRY(exotkTree_TreeNode)
00072 IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_ENTRY(MMgt_TShared)
00073 IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_ENTRY(Standard_Transient)
00074 IMPLEMENT_STANDARD_SUPERTYPE_ARRAY_END()
00075 IMPLEMENT_STANDARD_TYPE_END(exotkAIS_MaterialMenuNode)
00076 
00077 exotkAIS_MaterialMenuNode::exotkAIS_MaterialMenuNode(const Handle_AIS_InteractiveObject& anInteractiveObject)
00078 :myInteractiveObject(anInteractiveObject)
00079 {
00080 }
00081 
00082 
00083 //==================================================================================
00084 // Function name        : exotkAIS_MaterialMenuNode::~exotkAIS_MaterialMenuNode
00085 //==================================================================================
00086 // Written by       : Stephane Routelous - 2001-11-06 15:54:27
00087 // Description      : 
00088 // Return type          : 
00089 //==================================================================================
00090 exotkAIS_MaterialMenuNode::~exotkAIS_MaterialMenuNode()
00091 {
00092 }
00093 
00094 //==================================================================================
00095 // Function name        : exotkAIS_MaterialMenuNode::Execute
00096 //==================================================================================
00097 // Written by       : Stephane Routelous - 2001-11-06 15:54:29
00098 // Description      : 
00099 // Return type          : Standard_Boolean 
00100 //==================================================================================
00101 Standard_Boolean exotkAIS_MaterialMenuNode::Execute()
00102 {
00103         Standard_Boolean theReturnValue = Standard_False;
00104         if ( !myInteractiveObject.IsNull() )
00105         {
00106                 if ( myInteractiveObject->HasInteractiveContext() )
00107                 {
00108                         Handle_AIS_InteractiveContext theAISContext = myInteractiveObject->GetContext();
00109                         if ( !theAISContext.IsNull() )
00110                         {
00111                                 try
00112                                 {
00113                                         Graphic3d_MaterialAspect theOriginMaterial = myInteractiveObject->Attributes()->ShadingAspect()->Aspect()->FrontMaterial();
00114                                         Graphic3d_MaterialAspect theNewMaterial;
00115                                         Standard_Boolean theMaterialIsSelected = Standard_False;
00116                                         if ( exotkGUI::SelectMaterial(theOriginMaterial,theNewMaterial,theMaterialIsSelected) && theMaterialIsSelected)
00117                                         {
00118                                                 myInteractiveObject->SetMaterial(theNewMaterial);
00119                                                 theAISContext->Redisplay(myInteractiveObject);
00120                                         }
00121                                 }
00122                                 catch(Standard_Failure)
00123                                 {
00124                                         theReturnValue = Standard_False;
00125                                 }
00126                                 catch(...)
00127                                 {
00128                                         theReturnValue = Standard_False;
00129                                 }
00130                         }
00131                 }
00132         }
00133         return theReturnValue;
00134 }

Generated on Wed Jan 23 12:16:41 2002 for exotk by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001