From 131a4abe500d60f9a8771655794cd5f8d5da75a9 Mon Sep 17 00:00:00 2001 From: jfa Date: Thu, 18 Aug 2005 06:15:31 +0000 Subject: [PATCH] Avoid including of SALOMEDS classes; fix pb with objects deletion --- src/GEOMBase/GEOMBase.cxx | 178 ++++++++++----------- src/GEOMBase/GEOMBase_Helper.cxx | 168 ++++++++++---------- src/GEOMBase/Makefile.in | 2 +- src/GEOMGUI/GEOMGUI_Selection.cxx | 41 ++--- src/GEOMGUI/GEOM_Displayer.cxx | 183 +++++++++++----------- src/GEOMGUI/GeometryGUI.cxx | 34 ++++ src/GEOMGUI/GeometryGUI.h | 70 +++++---- src/GEOMGUI/GeometryGUI_Swig.cxx | 2 - src/GEOMGUI/Makefile.in | 2 +- src/GEOMToolsGUI/GEOMToolsGUI.cxx | 209 +++++++++++++------------ src/GEOMToolsGUI/GEOMToolsGUI.h | 42 ++--- src/GEOMToolsGUI/GEOMToolsGUI_1.cxx | 121 +++++++------- src/GEOM_I/GEOM_Gen_i.cc | 196 +++++++++++------------ src/GEOM_I/GEOM_Gen_i.hh | 61 ++++---- src/GEOM_I/GEOM_ICurvesOperations_i.cc | 35 +++-- src/GEOM_I/GEOM_Object_i.hh | 27 ++-- src/GEOM_I/Makefile.in | 11 +- 17 files changed, 730 insertions(+), 652 deletions(-) diff --git a/src/GEOMBase/GEOMBase.cxx b/src/GEOMBase/GEOMBase.cxx index d2aedf727..194a81c96 100644 --- a/src/GEOMBase/GEOMBase.cxx +++ b/src/GEOMBase/GEOMBase.cxx @@ -1,23 +1,23 @@ // GEOM GEOMGUI : GUI for Geometry component // // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // @@ -80,15 +80,13 @@ #include #include -#include +#include #include "GEOMImpl_Types.hxx" using namespace std; #include "SALOMEDSClient.hxx" -#include "SALOMEDS_SObject.hxx" -#include "SALOMEDS_Study.hxx" //======================================================================= @@ -124,7 +122,7 @@ TopoDS_Shape GEOMBase::GetShapeFromIOR(QString IOR) GEOM::GEOM_Object_var GeomObject = GEOM::GEOM_Object::_narrow( obj ); if (GeomObject->_is_nil()) return result; - + result = GEOM_Client().GetShape(GeometryGUI::GetGeomGen(), GeomObject); return result; } @@ -162,7 +160,7 @@ bool GEOMBase::GetTopoFromSelection(const SALOME_ListIO& aList, TopoDS_Shape& td SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) return false; _PTR(Study) aStudy = appStudy->studyDS(); - + _PTR(SObject) obj ( aStudy->FindObjectID(IO->getEntry()) ); _PTR(GenericAttribute) anAttr; if( obj ) { @@ -176,7 +174,7 @@ bool GEOMBase::GetTopoFromSelection(const SALOME_ListIO& aList, TopoDS_Shape& td } } } - + return false; } @@ -198,15 +196,15 @@ int GEOMBase::GetNameOfSelectedIObjects( const SALOME_ListIO& aList, SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) return nbSel; _PTR(Study) aStudy = appStudy->studyDS(); - + _PTR(SObject) obj ( aStudy->FindObjectID(anIObj->getEntry()) ); - + _PTR(GenericAttribute) anAttr; - + if ( obj && obj->FindAttribute( anAttr, "AttributeName") ) { _PTR(AttributeName) aNameAttr ( anAttr ); - theName = aNameAttr->Value().c_str(); + theName = aNameAttr->Value().c_str(); } } } @@ -224,7 +222,7 @@ int GEOMBase::GetNameOfSelectedIObjects( const SALOME_ListIO& aList, } else theName = QString( "%1_objects" ).arg( anObjs.length() ); - + return anObjs.length(); } } @@ -344,17 +342,17 @@ Handle(GEOM_AISShape) GEOMBase::ConvertIORinGEOMAISShape(const char * IOR, Stand SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) return resultShape; _PTR(Study) aStudy = appStudy->studyDS(); - + _PTR(SObject) anObj ( aStudy->FindObjectIOR( IOR ) ); if ( !anObj ) return resultShape; - + QPtrList aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows(); for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) { if (it.current()->getViewManager()->getType() == OCCViewer_Viewer::Type()) { Handle (AIS_InteractiveContext) ic = ((OCCViewer_Viewer*)it.current()->getViewManager()->getViewModel())->getAISContext(); - + AIS_ListOfInteractive List; ic->DisplayedObjects(List); AIS_ListOfInteractive List1; @@ -396,7 +394,7 @@ GEOM_Actor* GEOMBase::ConvertIORinGEOMActor(const char* IOR, Standard_Boolean& t SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) return GEOM_Actor::New(); _PTR(Study) aStudy = appStudy->studyDS(); - + _PTR(SObject) anObj ( aStudy->FindObjectIOR( IOR ) ); if ( !anObj ) return GEOM_Actor::New(); @@ -448,7 +446,7 @@ Handle(AIS_InteractiveObject) GEOMBase::GetAIS( const Handle(SALOME_InteractiveO if (it.current()->getViewManager()->getType() != OCCViewer_Viewer::Type()) continue; Handle (AIS_InteractiveContext) anIC = ((OCCViewer_Viewer*)it.current()->getViewManager()->getViewModel())->getAISContext(); - + AIS_ListOfInteractive aList; anIC->DisplayedObjects( aList ); anIC->ObjectsInCollector( aList ); @@ -458,7 +456,7 @@ Handle(AIS_InteractiveObject) GEOMBase::GetAIS( const Handle(SALOME_InteractiveO { Handle(SALOME_InteractiveObject) anObj = Handle(SALOME_InteractiveObject)::DownCast( anIter.Value()->GetOwner() ); - + if( !anObj.IsNull() && strcmp( anObj->getEntry(), theIO->getEntry() ) == 0 ) { if( isOnlyInActiveView ) @@ -471,7 +469,7 @@ Handle(AIS_InteractiveObject) GEOMBase::GetAIS( const Handle(SALOME_InteractiveO } } } - + return Handle(AIS_InteractiveObject)(); } @@ -489,19 +487,19 @@ Handle(GEOM_AISShape) GEOMBase::ConvertIOinGEOMAISShape(const Handle(SALOME_Inte testResult = false; return res; } - + QPtrList aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows(); for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) { if (it.current()->getViewManager()->getType() == OCCViewer_Viewer::Type()) { Handle (AIS_InteractiveContext) ic = ((OCCViewer_Viewer*)it.current()->getViewManager()->getViewModel())->getAISContext(); - + AIS_ListOfInteractive List; ic->DisplayedObjects(List); AIS_ListOfInteractive List1; ic->ObjectsInCollector(List1); List.Append(List1); - + AIS_ListIteratorOfListOfInteractive ite(List); while(ite.More()) { @@ -529,7 +527,7 @@ Handle(GEOM_AISShape) GEOMBase::ConvertIOinGEOMAISShape(const Handle(SALOME_Inte } } ite.Next(); - } + } } } testResult = false; @@ -545,7 +543,7 @@ GEOM::GEOM_Object_ptr GEOMBase::ConvertIOinGEOMShape(const Handle(SALOME_Interac { GEOM::GEOM_Object_var aShape; testResult = false; - + /* case SObject */ if(IO->hasEntry()) { SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); @@ -570,32 +568,35 @@ GEOM::GEOM_Object_ptr GEOMBase::ConvertIOinGEOMShape(const Handle(SALOME_Interac //======================================================================= // function : ConvertListOfIOInListOfIOR() -// purpose : +// purpose : //======================================================================= void GEOMBase::ConvertListOfIOInListOfIOR(const SALOME_ListIO& aList, GEOM::string_array& listIOR) { - int nbSel = aList.Extent(); + int nbSel = aList.Extent(); listIOR.length(nbSel); int j=0; SALOME_ListIteratorOfListIO It(aList); - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !appStudy ) return; - _PTR(Study) aStudy = appStudy->studyDS(); + SalomeApp_Study* appStudy = dynamic_cast + ( SUIT_Session::session()->activeApplication()->activeStudy() ); + if ( !appStudy ) return; + _PTR(Study) aStudy = appStudy->studyDS(); - for(int i=0; It.More(); It.Next(), i++) { + for (int i=0; It.More(); It.Next(), i++) { Handle(SALOME_InteractiveObject) IObject = It.Value(); - if(IObject->hasEntry()) { + if (IObject->hasEntry()) { _PTR(SObject) obj ( aStudy->FindObjectID(IObject->getEntry()) ); _PTR(GenericAttribute) anAttr; - if(obj && obj->FindAttribute(anAttr, "AttributeIOR")) { + if (obj && obj->FindAttribute(anAttr, "AttributeIOR")) { _PTR(AttributeIOR) anIOR (anAttr); - CORBA::Object_var theObj = dynamic_cast(aStudy.get())->ConvertIORToObject(anIOR->Value()); - if(theObj->_is_a("IDL:GEOM/GEOM_Object:1.0")) { + //CORBA::Object_var theObj = dynamic_cast + // (aStudy.get())->ConvertIORToObject(anIOR->Value()); + CORBA::Object_var theObj = GeometryGUI::ClientSObjectToObject(obj); + if (!CORBA::is_nil(theObj) && theObj->_is_a("IDL:GEOM/GEOM_Object:1.0")) { listIOR[j] = CORBA::string_dup(anIOR->Value().c_str()); j++; } } - } + } } listIOR.length(j); } @@ -603,26 +604,27 @@ void GEOMBase::ConvertListOfIOInListOfIOR(const SALOME_ListIO& aList, GEOM::stri //======================================================================= // function : ConvertIOinGEOMObject() -// purpose : +// purpose : //======================================================================= -GEOM::GEOM_Object_ptr GEOMBase::ConvertIOinGEOMObject( const Handle(SALOME_InteractiveObject)& theIO, +GEOM::GEOM_Object_ptr GEOMBase::ConvertIOinGEOMObject( const Handle(SALOME_InteractiveObject)& theIO, Standard_Boolean& theResult ) -{ +{ theResult = Standard_False; GEOM::GEOM_Object_var aReturnObject; if ( !theIO.IsNull() ) { const char* anEntry = theIO->getEntry(); - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); + SalomeApp_Study* appStudy = dynamic_cast + ( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) return GEOM::GEOM_Object::_nil(); _PTR(Study) aStudy = appStudy->studyDS(); _PTR(SObject) aSObj ( aStudy->FindObjectID( anEntry ) ); - - if ( aSObj ) + + if (aSObj) { - aReturnObject = GEOM::GEOM_Object::_narrow( dynamic_cast(aSObj.get())->GetObject() ); + aReturnObject = GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObj)); theResult = !CORBA::is_nil( aReturnObject ); } } @@ -632,20 +634,20 @@ GEOM::GEOM_Object_ptr GEOMBase::ConvertIOinGEOMObject( const Handle(SALOME_Inter //======================================================================= // function : ConvertListOfIOInListOfGO() -// purpose : +// purpose : //======================================================================= void GEOMBase::ConvertListOfIOInListOfGO( const SALOME_ListIO& theList, GEOM::ListOfGO& theListGO, const bool theShapesOnly ) { - int nbSel = theList.Extent(); + int nbSel = theList.Extent(); theListGO.length( nbSel ); SALOME_ListIteratorOfListIO anIter( theList ); SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) return; _PTR(Study) aStudy = appStudy->studyDS(); - + int j = 0; for ( int i=0; anIter.More(); anIter.Next(), i++ ) { @@ -654,13 +656,13 @@ void GEOMBase::ConvertListOfIOInListOfGO( const SALOME_ListIO& theList, if ( aSObj ) { - GEOM::GEOM_Object_var aGeomObj = - GEOM::GEOM_Object::_narrow(dynamic_cast(aSObj.get())->GetObject()); + GEOM::GEOM_Object_var aGeomObj = + GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(aSObj)); if ( !CORBA::is_nil( aGeomObj ) && ( !theShapesOnly || IsShape( aGeomObj ) ) ) theListGO[ j++ ] = aGeomObj; } } - + theListGO.length( j ); } @@ -671,16 +673,16 @@ void GEOMBase::ConvertListOfIOInListOfGO( const SALOME_ListIO& theList, //================================================================================= bool GEOMBase::CreateArrowForLinearEdge(const TopoDS_Shape& tds, TopoDS_Shape& ArrowCone) { - if(SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() + if(SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() != OCCViewer_Viewer::Type() || tds.ShapeType() != TopAbs_EDGE) return false; - + OCCViewer_ViewPort3d* vp3d = ((OCCViewer_ViewWindow*)SUIT_Session::session()->activeApplication()->desktop()->activeWindow())->getViewPort(); Handle( V3d_View) view3d = vp3d->getView(); Standard_Real Width, Height; view3d->Size(Width, Height); const Standard_Real aHeight = (Width + Height) / 50.0; - + try { Standard_Real first, last; Handle(Geom_Curve) curv = BRep_Tool::Curve(TopoDS::Edge(tds), first, last); @@ -693,11 +695,11 @@ bool GEOMBase::CreateArrowForLinearEdge(const TopoDS_Shape& tds, TopoDS_Shape& A curv->D1( param, middleParamPoint, V1); if(V1.Magnitude() < Precision::Confusion()) return false; - + /* Topology orientation not geom orientation */ if(tds.Orientation() == TopAbs_REVERSED) V1 *= -1.0; - + gp_Ax2 anAxis( middleParamPoint, gp_Dir(V1)); const Standard_Real radius1 = aHeight / 5.0; if(radius1 > 10.0 * Precision::Confusion() && aHeight > 10.0 * Precision::Confusion()) { @@ -707,7 +709,7 @@ bool GEOMBase::CreateArrowForLinearEdge(const TopoDS_Shape& tds, TopoDS_Shape& A } catch(Standard_Failure) { // OCC failures are hard to catch in GUI. - // This because of the position for #include that is very critic to find + // This because of the position for #include that is very critic to find // in SALOME environment : compilation error ! } return false; @@ -729,7 +731,7 @@ bool GEOMBase::VertexToPoint(const TopoDS_Shape& S, gp_Pnt& P) //================================================================================= // function : GetBipointDxDyDz() -// purpose : +// purpose : //================================================================================= void GEOMBase::GetBipointDxDyDz(gp_Pnt P1, gp_Pnt P2, double& dx, double& dy, double& dz) { @@ -777,14 +779,14 @@ bool GEOMBase::LinearEdgeExtremities(const TopoDS_Shape& S, gp_Pnt& P1, gp_Pnt& //======================================================================= double GEOMBase::Parameter(Standard_Boolean& res, const char* aValue1, const char* aTitle1, const char* aTitle, const double bottom, const double top, const int decimals) { - GEOMBase_aParameterDlg * Dialog = new GEOMBase_aParameterDlg(aValue1, aTitle1, SUIT_Session::session()->activeApplication()->desktop(), + GEOMBase_aParameterDlg * Dialog = new GEOMBase_aParameterDlg(aValue1, aTitle1, SUIT_Session::session()->activeApplication()->desktop(), aTitle, TRUE, 0, bottom, top, decimals); int r = Dialog->exec(); float X = 0.0; if(r == QDialog::Accepted) { res = Standard_True; X = Dialog->getValue(); - } + } else res = Standard_False; delete Dialog; @@ -795,7 +797,7 @@ double GEOMBase::Parameter(Standard_Boolean& res, const char* aValue1, const cha //======================================================================= // function : SelectionByNameInDialogs() // purpose : Called when user has entered a name of object in a LineEdit. -// : The selection is changed. Dialog box will receive the +// : The selection is changed. Dialog box will receive the // : corresponding signal to manage this event. //======================================================================= bool GEOMBase::SelectionByNameInDialogs(QWidget* aWidget, const QString& objectUserName, const SALOME_ListIO& aList) @@ -804,10 +806,10 @@ bool GEOMBase::SelectionByNameInDialogs(QWidget* aWidget, const QString& objectU SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) return false; _PTR(Study) ST = appStudy->studyDS(); - + std::vector<_PTR(SObject)> listSO; listSO = ST->FindObjectByName(objectUserName.latin1(), "GEOM"); - + if(listSO.size() < 1) { const QString caption = QObject::tr("GEOM_WRN_WARNING"); const QString text = QObject::tr("GEOM_NAME_INCORRECT"); @@ -833,7 +835,7 @@ bool GEOMBase::SelectionByNameInDialogs(QWidget* aWidget, const QString& objectU /* Add as a selected object */ /* Clear any previous selection : */ - /* Warning the LineEdit is purged because of signal currentSelectionChanged ! */ + /* Warning the LineEdit is purged because of signal currentSelectionChanged ! */ // Sel->ClearIObjects(); //mzn // Sel->AddIObject(SI); //mzn return true; @@ -850,7 +852,7 @@ bool GEOMBase::DefineDlgPosition(QWidget* aDlg, int& x, int& y) SUIT_Desktop* PP = SUIT_Session::session()->activeApplication()->desktop(); x = abs(PP->x() + PP->size().width() - aDlg->size().width() - 10); y = abs(PP->y() + PP->size().height() - aDlg->size().height() - 10); - return true; + return true; } @@ -868,13 +870,13 @@ QString GEOMBase::GetDefaultName(const QString& theOperation) int aNumber = 0; _PTR(SObject) obj; - do + do { aName = theOperation+"_"+QString::number(++aNumber); obj = aStudy->FindObject(aName.latin1()); - } + } while (obj); - + return aName; } @@ -887,13 +889,13 @@ void GEOMBase::ShowErrorMessage(const char* theErrorCode, const char* theComment { QString anErrorCode(theErrorCode); QString aComment(theComment); - + QString aText = ""; if (!anErrorCode.isEmpty()) aText.append("\n" + QObject::tr(anErrorCode)); if (!aComment.isEmpty()) aText.append("\n" + QString(theComment)); - + SUIT_MessageBox::error1( SUIT_Session::session()->activeApplication()->desktop(), QObject::tr( "GEOM_ERROR" ), QObject::tr("GEOM_PRP_ABORT") + aText, "OK" ); } @@ -950,7 +952,7 @@ bool GEOMBase::GetShape( const GEOM::GEOM_Object_ptr& theObject, TopoDS_Shape& t QString GEOMBase::GetName( GEOM::GEOM_Object_ptr theObj ) { SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - + if ( appStudy ) { string anIOR = SalomeApp_Application::orb()->object_to_string( theObj ); @@ -959,16 +961,16 @@ QString GEOMBase::GetName( GEOM::GEOM_Object_ptr theObj ) _PTR(SObject) aSObj ( appStudy->studyDS()->FindObjectIOR( anIOR ) ); _PTR(GenericAttribute) anAttr; - + if ( aSObj && aSObj->FindAttribute( anAttr, "AttributeName") ) { _PTR(AttributeName) aNameAttr ( anAttr ); - return QString( aNameAttr->Value().c_str() ); + return QString( aNameAttr->Value().c_str() ); } } } - - return QString(""); + + return QString(""); } bool GEOMBase::IsShape( GEOM::GEOM_Object_ptr theObj ) diff --git a/src/GEOMBase/GEOMBase_Helper.cxx b/src/GEOMBase/GEOMBase_Helper.cxx index c1824cacc..7c2707cab 100755 --- a/src/GEOMBase/GEOMBase_Helper.cxx +++ b/src/GEOMBase/GEOMBase_Helper.cxx @@ -1,23 +1,23 @@ // GEOM GEOMGUI : GUI for Geometry component // // Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org // // // @@ -59,10 +59,6 @@ using namespace std; #include -#include -#include - - //================================================================ @@ -74,7 +70,7 @@ static SUIT_ViewWindow* getActiveView() SUIT_Study* activeStudy = SUIT_Session::session()->activeApplication()->activeStudy(); if ( activeStudy ) return SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - + return 0; } @@ -92,14 +88,14 @@ GEOM::GEOM_Gen_ptr GEOMBase_Helper::getGeomEngine() // Function : GEOMBase_Helper // Purpose : //================================================================ -GEOMBase_Helper::GEOMBase_Helper( SUIT_Desktop* desktop ) +GEOMBase_Helper::GEOMBase_Helper( SUIT_Desktop* desktop ) : myDesktop( desktop ), myViewWindow( 0 ), myDisplayer( 0 ), myCommand( 0 ), isPreview( false ) { } //================================================================ // Function : ~GEOMBase_Helper -// Purpose : +// Purpose : //================================================================ GEOMBase_Helper::~GEOMBase_Helper() { @@ -118,7 +114,7 @@ GEOMBase_Helper::~GEOMBase_Helper() //================================================================ // Function : display -// Purpose : +// Purpose : //================================================================ void GEOMBase_Helper::display( const ObjectList& objList, const bool updateView ) { @@ -151,7 +147,7 @@ void GEOMBase_Helper::display( GEOM::GEOM_Object_ptr object, const bool updateVi //================================================================ // Function : erase -// Purpose : +// Purpose : //================================================================ void GEOMBase_Helper::erase( const ObjectList& objList, const bool updateView ) { @@ -165,7 +161,7 @@ void GEOMBase_Helper::erase( const ObjectList& objList, const bool updateView ) //================================================================ // Function : erase -// Purpose : +// Purpose : //================================================================ void GEOMBase_Helper::erase( GEOM::GEOM_Object_ptr object, const bool updateView ) { @@ -178,9 +174,9 @@ void GEOMBase_Helper::erase( GEOM::GEOM_Object_ptr object, const bool updateView //================================================================ // Function : redisplay -// Purpose : +// Purpose : //================================================================ -void GEOMBase_Helper::redisplay( const ObjectList& objList, +void GEOMBase_Helper::redisplay( const ObjectList& objList, const bool withChildren, const bool updateView ) { @@ -194,9 +190,9 @@ void GEOMBase_Helper::redisplay( const ObjectList& objList, //================================================================ // Function : redisplay -// Purpose : +// Purpose : //================================================================ -void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object, +void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object, const bool withChildren, const bool updateView ) { @@ -205,23 +201,25 @@ void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object, // Default color will be used getDisplayer()->UnsetColor(); getDisplayer()->UnsetWidth(); - + // Enable activisation of selection getDisplayer()->SetToActivate( true ); - + string entry = getEntry( object ); - getDisplayer()->Redisplay( new SALOME_InteractiveObject( entry.c_str(), "GEOM", strdup( GEOMBase::GetName( object ) ) ), false ); + getDisplayer()->Redisplay(new SALOME_InteractiveObject + (entry.c_str(), "GEOM", strdup(GEOMBase::GetName(object))), false); } - + if ( withChildren ) { SalomeApp_Study* aDoc = getStudy(); if ( aDoc && aDoc->studyDS() ) { _PTR(Study) aStudy = aDoc->studyDS(); - _PTR(SObject) aSObj ( aStudy->FindObjectIOR( SalomeApp_Application::orb()->object_to_string( object ) ) ); + _PTR(SObject) aSObj (aStudy->FindObjectIOR(SalomeApp_Application::orb()->object_to_string(object))); if ( aSObj ) { _PTR(ChildIterator) anIt ( aStudy->NewChildIterator( aSObj ) ); for ( anIt->InitEx( true ); anIt->More(); anIt->Next() ) { - GEOM::GEOM_Object_var aChild = GEOM::GEOM_Object::_narrow( dynamic_cast(anIt->Value().get())->GetObject() ); + GEOM::GEOM_Object_var aChild = GEOM::GEOM_Object::_narrow + (GeometryGUI::ClientSObjectToObject(anIt->Value())); if ( !CORBA::is_nil( aChild ) ) { if ( !aChild->_is_nil() ) { string entry = getEntry( aChild ); @@ -230,10 +228,10 @@ void GEOMBase_Helper::redisplay( GEOM::GEOM_Object_ptr object, } } } - } + } } } - + if ( updateView ) getDisplayer()->UpdateViewer(); } @@ -247,12 +245,12 @@ void GEOMBase_Helper::displayPreview( const bool activate, const bool toRemoveFromEngine, const double lineWidth ) { - isPreview = true; + isPreview = true; QString msg; if ( !isValid( msg ) ) { erasePreview( update ); - isPreview = false; + isPreview = false; return; } @@ -289,7 +287,7 @@ void GEOMBase_Helper::displayPreview( const bool activate, //================================================================ void GEOMBase_Helper::displayPreview( GEOM::GEOM_Object_ptr object, const bool append, - const bool activate, + const bool activate, const bool update, const double lineWidth ) { @@ -304,7 +302,7 @@ void GEOMBase_Helper::displayPreview( GEOM::GEOM_Object_ptr object, // Make a reference to GEOM_Object getDisplayer()->SetName( SalomeApp_Application::orb()->object_to_string( object ) ); - + // Build prs SALOME_Prs* aPrs = getDisplayer()->BuildPrs( object ); if ( aPrs == 0 || aPrs->IsNull() ) @@ -345,8 +343,8 @@ void GEOMBase_Helper::displayPreview( const SALOME_Prs* prs, SALOME_View* aView = dynamic_cast(aViewModel); if (aView) aView->Display( prs ); - } - + } + // Add prs to the preview list myPreview.push_back( (SALOME_Prs*)prs ); @@ -357,7 +355,7 @@ void GEOMBase_Helper::displayPreview( const SALOME_Prs* prs, //================================================================ // Function : erasePreview -// Purpose : +// Purpose : //================================================================ void GEOMBase_Helper::erasePreview( const bool update ) { @@ -375,7 +373,7 @@ void GEOMBase_Helper::erasePreview( const bool update ) SALOME_View* aView = dynamic_cast(aViewModel); if (aView) aView->Erase( *anIter, true ); - } + } } delete *anIter; } @@ -409,7 +407,8 @@ void GEOMBase_Helper::activate( const int theType ) _PTR(SObject) aRefSO; if ( !aSO->ReferencedObject( aRefSO ) ) { - GEOM::GEOM_Object_var anObj = GEOM::GEOM_Object::_narrow( dynamic_cast(aSO.get())->GetObject() ); + GEOM::GEOM_Object_var anObj = GEOM::GEOM_Object::_narrow + (GeometryGUI::ClientSObjectToObject(aSO)); if ( !anObj->_is_nil() && anObj->GetType() == theType ) aList.Append( new SALOME_InteractiveObject( aSO->GetID().c_str(), "GEOM", aSO->GetName().c_str()) ); } @@ -427,7 +426,7 @@ void GEOMBase_Helper::activate( const int theType ) void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMode ) { SALOME_ListIO aListOfIO; - + ObjectList::const_iterator anIter = theObjs.begin(); for ( ; anIter != theObjs.end(); ++anIter ) { @@ -498,7 +497,8 @@ void GEOMBase_Helper::addInStudy( GEOM::GEOM_Object_ptr theObj, const char* theN GEOM::GEOM_Object_ptr aFatherObj = getFather( theObj ); - getGeomEngine()->AddInStudy( dynamic_cast(aStudy.get())->GetStudy(), theObj, theName, aFatherObj ); + getGeomEngine()->AddInStudy(GeometryGUI::ClientStudyToStudy(aStudy), + theObj, theName, aFatherObj); } //================================================================ @@ -540,7 +540,7 @@ int GEOMBase_Helper::getStudyId() const //================================================================ // Function : getStudy -// Purpose : Returns the active study. It is recommended to use +// Purpose : Returns the active study. It is recommended to use // this method instead of direct desktop->getActiveStudy() calls //================================================================ SalomeApp_Study* GEOMBase_Helper::getStudy() const @@ -548,14 +548,14 @@ SalomeApp_Study* GEOMBase_Helper::getStudy() const SUIT_Desktop* aDesktop = getDesktop(); if (!aDesktop) return 0; - - QPtrList anAppList = SUIT_Session::session()->applications(); - + + QPtrList anAppList = SUIT_Session::session()->applications(); + SUIT_Application* anApp = 0; for ( QPtrListIterator it( anAppList ); it.current() ; ++it ) { anApp = it.current(); - if ( anApp->desktop() == aDesktop ) + if ( anApp->desktop() == aDesktop ) break; } @@ -564,7 +564,7 @@ SalomeApp_Study* GEOMBase_Helper::getStudy() const //================================================================ // Function : getEntry -// Purpose : +// Purpose : //================================================================ char* GEOMBase_Helper::getEntry( GEOM::GEOM_Object_ptr object ) const { @@ -583,7 +583,7 @@ char* GEOMBase_Helper::getEntry( GEOM::GEOM_Object_ptr object ) const //================================================================ // Function : getDisplayer -// Purpose : +// Purpose : //================================================================ GEOM_Displayer* GEOMBase_Helper::getDisplayer() { @@ -594,7 +594,7 @@ GEOM_Displayer* GEOMBase_Helper::getDisplayer() //================================================================ // Function : clearShapeBuffer -// Purpose : +// Purpose : //================================================================ void GEOMBase_Helper::clearShapeBuffer( GEOM::GEOM_Object_ptr theObj ) { @@ -619,34 +619,34 @@ void GEOMBase_Helper::clearShapeBuffer( GEOM::GEOM_Object_ptr theObj ) if ( anIt->Value()->FindAttribute(anAttr, "AttributeIOR") ) { _PTR(AttributeIOR) anIOR ( anAttr ); TCollection_AsciiString asciiIOR( (char*)anIOR->Value().c_str() ); - GEOM_Client().RemoveShapeFromBuffer( asciiIOR ); + GEOM_Client().RemoveShapeFromBuffer( asciiIOR ); } } } //================================================================ // Function : openCommand -// Purpose : +// Purpose : //================================================================ -bool GEOMBase_Helper::openCommand() +bool GEOMBase_Helper::openCommand() { bool res = false; if ( !getStudy() || hasCommand() ) return res; - + GEOM::GEOM_IOperations_var anOp = GEOM::GEOM_IOperations::_narrow( getOperation() ); if ( !anOp->_is_nil() ) { myCommand = new GEOM_Operation( SUIT_Session::session()->activeApplication(), anOp.in() ); myCommand->start(); res = true; } - + return res; } //================================================================ // Function : abortCommand -// Purpose : +// Purpose : //================================================================ bool GEOMBase_Helper::abortCommand() { @@ -655,13 +655,13 @@ bool GEOMBase_Helper::abortCommand() myCommand->abort(); myCommand = 0; - - return true; + + return true; } //================================================================ // Function : commitCommand -// Purpose : +// Purpose : //================================================================ bool GEOMBase_Helper::commitCommand( const char* ) { @@ -671,12 +671,12 @@ bool GEOMBase_Helper::commitCommand( const char* ) myCommand->commit(); myCommand = 0; - return true; + return true; } //================================================================ // Function : hasCommand -// Purpose : +// Purpose : //================================================================ bool GEOMBase_Helper::hasCommand() const { @@ -685,7 +685,7 @@ bool GEOMBase_Helper::hasCommand() const //================================================================ // Function : getOperation -// Purpose : +// Purpose : //================================================================ GEOM::GEOM_IOperations_ptr GEOMBase_Helper::getOperation() { @@ -699,13 +699,13 @@ GEOM::GEOM_IOperations_ptr GEOMBase_Helper::getOperation() //================================================================ // Function : checkViewWindow -// Purpose : +// Purpose : //================================================================ bool GEOMBase_Helper::checkViewWindow() { if ( myViewWindow ){ QPtrList aViewWindowsList = SUIT_Session::session()->activeApplication()->desktop()->windows(); - for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) + for ( QPtrListIterator it( aViewWindowsList ); it.current(); ++it ) { if ( myViewWindow == it.current() ) return true; @@ -718,7 +718,7 @@ bool GEOMBase_Helper::checkViewWindow() //================================================================ // Function : onAccept // Purpose : This method should be called from dialog's slots onOk() and onApply() -// It perfroms user input validation, then it +// It perfroms user input validation, then it // performs a proper operation and manages transactions, etc. //================================================================ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction ) @@ -726,12 +726,12 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction ) SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( !appStudy ) return false; _PTR(Study) aStudy = appStudy->studyDS(); - + bool aLocked = (_PTR(AttributeStudyProperties) (aStudy->GetProperties()))->IsLocked(); if ( aLocked ) { MESSAGE("GEOMBase_Helper::onAccept - ActiveStudy is locked"); SUIT_MessageBox::warn1 ( (QWidget*)SUIT_Session::session()->activeApplication()->desktop(), - QObject::tr("WRN_WARNING"), + QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED"), QObject::tr("BUT_OK") ); return false; @@ -773,7 +773,7 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction ) withChildren = false; display( *it, false ); } - else { // asv : fix of PAL6454. If publish==false, then the original shape was modified, and need to be re-cached in GEOM_Client + else { // asv : fix of PAL6454. If publish==false, then the original shape was modified, and need to be re-cached in GEOM_Client // before redisplay clearShapeBuffer( *it ); withChildren = true; @@ -816,8 +816,8 @@ void GEOMBase_Helper::showError() msg = QObject::tr( "GEOM_PRP_ABORT" ); SUIT_MessageBox::error1( SUIT_Session::session()->activeApplication()->desktop(), - QObject::tr( "GEOM_ERROR_STATUS" ), - msg, + QObject::tr( "GEOM_ERROR_STATUS" ), + msg, QObject::tr( "BUT_OK" ) ); } @@ -858,8 +858,8 @@ bool GEOMBase_Helper::isValid( QString& ) //================================================================ // Function : execute -// Purpose : This method is called by onAccept(). -// It should perform the required operation and put all new or modified objects into +// Purpose : This method is called by onAccept(). +// It should perform the required operation and put all new or modified objects into // argument.Should return if some error occurs during its execution. //================================================================ bool GEOMBase_Helper::execute( ObjectList& objects ) @@ -899,9 +899,9 @@ QString GEOMBase_Helper::getPrefix( GEOM::GEOM_Object_ptr theObj ) const TopoDS_Shape aShape; if ( !GEOMBase::GetShape( theObj, aShape ) ) return ""; - + long aType = aShape.ShapeType(); - + switch ( aType ) { case TopAbs_VERTEX : return QObject::tr( "GEOM_VERTEX" ); @@ -923,14 +923,14 @@ QString GEOMBase_Helper::getPrefix( GEOM::GEOM_Object_ptr theObj ) const const SALOME_ListIO& GEOMBase_Helper::selectedIO() { mySelected.Clear(); - + SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); if ( app ) { SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr(); if ( aSelMgr ) aSelMgr->selectedObjects( mySelected ); } - + return mySelected; } diff --git a/src/GEOMBase/Makefile.in b/src/GEOMBase/Makefile.in index 871e7f452..c80cb2cee 100644 --- a/src/GEOMBase/Makefile.in +++ b/src/GEOMBase/Makefile.in @@ -66,6 +66,6 @@ LIB_SERVER_IDL = CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome CXXFLAGS += $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome -LDFLAGS += -L$(KERNEL_ROOT_DIR)/lib/salome -L$(GUI_ROOT_DIR)/lib/salome $(CAS_LDPATH) -lDlgRef -lGEOM -lsuit -lOCCViewer -lVTKViewer -lSalomeDS -lTKPrim +LDFLAGS += -L$(KERNEL_ROOT_DIR)/lib/salome -L$(GUI_ROOT_DIR)/lib/salome $(CAS_LDPATH) -lDlgRef -lGEOM -lsuit -lOCCViewer -lVTKViewer -lTKPrim @CONCLUDE@ diff --git a/src/GEOMGUI/GEOMGUI_Selection.cxx b/src/GEOMGUI/GEOMGUI_Selection.cxx index 1d1111eee..c7494b8c7 100644 --- a/src/GEOMGUI/GEOMGUI_Selection.cxx +++ b/src/GEOMGUI/GEOMGUI_Selection.cxx @@ -1,12 +1,13 @@ -#include - #include "GEOMGUI_Selection.h" + +#include "GeometryGUI.h" #include "GEOM_Displayer.h" -#include "GEOMImpl_Types.hxx" #include #include +#include + #include #include #include @@ -14,22 +15,27 @@ #include #include -#include + #include #include #include #include #include -#include #include #include +#include "GEOMImpl_Types.hxx" + +// OCCT Includes #include #include #include +// VTK Includes +#include + GEOMGUI_Selection::GEOMGUI_Selection() { } @@ -41,7 +47,7 @@ GEOMGUI_Selection::~GEOMGUI_Selection() QtxValue GEOMGUI_Selection::globalParam( const QString& p ) const { if ( p == "isOCC" ) return QtxValue( activeViewType() == OCCViewer_Viewer::Type() ); - + return SalomeApp_Selection::globalParam( p ); } @@ -111,7 +117,7 @@ QString GEOMGUI_Selection::displayMode( const int index ) const } } } - } + } else if ( viewType == VTKViewer_Viewer::Type() ) { // assuming VTK SVTK_Prs* vtkPrs = (SVTK_Prs*) prs; vtkActorCollection* lst = vtkPrs->GetObjects(); @@ -124,7 +130,7 @@ QString GEOMGUI_Selection::displayMode( const int index ) const int dm = salActor->getDisplayMode(); if ( dm == 0 ) return "Wireframe"; - else if ( dm == 1 ) + else if ( dm == 1 ) return "Shading"; } // if ( salome actor ) } // if ( actor ) @@ -144,9 +150,9 @@ bool GEOMGUI_Selection::isComponent( const int index ) const _PTR(Study) study = appStudy->studyDS(); QString anEntry = entry( index ); - if ( study && !anEntry.isNull() ) { + if ( study && !anEntry.isNull() ) { _PTR(SObject) aSO( study->FindObjectID( anEntry.latin1() ) ); - if ( aSO && aSO->GetFatherComponent() ) + if ( aSO && aSO->GetFatherComponent() ) return aSO->GetFatherComponent()->GetIOR() == aSO->GetIOR(); } } @@ -158,18 +164,17 @@ GEOM::GEOM_Object_ptr GEOMGUI_Selection::getObject( const int index ) const SalomeApp_Study* appStudy = dynamic_cast (SUIT_Session::session()->activeApplication()->activeStudy()); - if ( appStudy && index >= 0 && index < count() ) { + if (appStudy && index >= 0 && index < count()) { _PTR(Study) study = appStudy->studyDS(); - QString anEntry = entry( index ); + QString anEntry = entry(index); - if ( study && !anEntry.isNull() ) { - _PTR(SObject) aSO( study->FindObjectID( anEntry.latin1() ) ); - if ( aSO ) { - SALOMEDS_SObject* aDSObj = dynamic_cast( aSO.get() ); - return GEOM::GEOM_Object::_narrow( aDSObj->GetObject() ); + if (study && !anEntry.isNull()) { + _PTR(SObject) aSO (study->FindObjectID(anEntry.latin1())); + if (aSO) { + CORBA::Object_var anObj = GeometryGUI::ClientSObjectToObject(aSO); + return GEOM::GEOM_Object::_narrow(anObj); } } } return GEOM::GEOM_Object::_nil(); } - diff --git a/src/GEOMGUI/GEOM_Displayer.cxx b/src/GEOMGUI/GEOM_Displayer.cxx index 5caaf1b39..26313ac05 100644 --- a/src/GEOMGUI/GEOM_Displayer.cxx +++ b/src/GEOMGUI/GEOM_Displayer.cxx @@ -1,23 +1,23 @@ // GEOM GEOMGUI : GUI for Geometry component // // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // @@ -26,10 +26,9 @@ // Module : GEOM // $Header$ -#include - #include "GEOM_Displayer.h" -#include "GEOMImpl_Types.hxx" + +#include "GeometryGUI.h" #include "GEOM_TypeFilter.h" #include "GEOM_EdgeFilter.h" @@ -38,8 +37,9 @@ #include "GEOM_LogicalFilter.h" #include "GEOM_OCCFilter.h" -#include "GEOM_AssemblyBuilder.h" #include "GEOM_Actor.h" +#include "GEOM_AssemblyBuilder.h" +#include "GEOM_AISShape.hxx" #include "GEOM_AISTrihedron.hxx" #include "GEOM_VTKTrihedron.hxx" @@ -56,37 +56,42 @@ #include #include -#include -#include -#include #include +#include #include #include -#include -#include - -#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) +#include +#include -#include -#include -#include +// OCCT Includes #include +#include #include #include -#include +#include +#include #include #include -#include +#include #include -#include -#include +#include +#include +#include + +// VTK Includes #include +// STL Includes #include +// CORBA Headers +#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) + +#include "GEOMImpl_Types.hxx" + using namespace std; //================================================================ @@ -130,7 +135,7 @@ static inline int getTopAbsMode( const int implType ) SUIT_SelectionFilter* GEOM_Displayer::getFilter( const int theMode ) { SUIT_SelectionFilter* aFilter; - + int aTopAbsMode = getTopAbsMode( theMode ); if ( aTopAbsMode != -1 ) aFilter = new GEOM_TypeFilter( getStudy(), aTopAbsMode, true ); //@ aFilter = new GEOM_TypeFilter( ( TopAbs_ShapeEnum )aTopAbsMode ); @@ -139,22 +144,22 @@ SUIT_SelectionFilter* GEOM_Displayer::getFilter( const int theMode ) { case GEOM_LINE : aFilter = new GEOM_EdgeFilter( getStudy(), StdSelect_Line ); break; case GEOM_CIRCLE : aFilter = new GEOM_EdgeFilter( getStudy(), StdSelect_Circle ); break; - + case GEOM_PLANE : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Plane ); break; case GEOM_CYLINDER : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Cylinder ); break; case GEOM_SPHERE : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Sphere ); break; case GEOM_TORUS : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Torus ); break; case GEOM_REVOLUTION: aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Revol ); break; case GEOM_CONE : aFilter = new GEOM_FaceFilter( getStudy(), StdSelect_Cone ); break; - + case GEOM_PREVIEW : aFilter = new GEOM_PreviewFilter( getStudy() ); break; - + case GEOM_ALLSHAPES : aFilter = new GEOM_SelectionFilter(getStudy(), true ); break; case GEOM_ALLGEOM : aFilter = new SalomeApp_TypeFilter( getStudy(), "GEOM" ); break; - + default : aFilter = new GEOM_TypeFilter( getStudy(), theMode ); break; } - + return aFilter; } @@ -166,10 +171,10 @@ static char* getEntry( GEOM::GEOM_Object_ptr object ) { SUIT_Session* session = SUIT_Session::session(); SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); - if ( app ) + if ( app ) { string IOR = app->orb()->object_to_string( object ); - if ( IOR != "" ) + if ( IOR != "" ) { SalomeApp_Study* study = ( SalomeApp_Study* )app->activeStudy(); _PTR(SObject) SO ( study->studyDS()->FindObjectIOR( IOR ) ); @@ -188,10 +193,10 @@ static const char* getName( GEOM::GEOM_Object_ptr object ) { SUIT_Session* session = SUIT_Session::session(); SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); - if ( app ) + if ( app ) { string IOR = app->orb()->object_to_string( object ); - if ( IOR != "" ) + if ( IOR != "" ) { SalomeApp_Study* study = ( SalomeApp_Study* )app->activeStudy(); _PTR(SObject) aSObj ( study->studyDS()->FindObjectIOR( IOR ) ); @@ -218,7 +223,7 @@ static const char* getName( GEOM::GEOM_Object_ptr object ) GEOM_Displayer::GEOM_Displayer( SalomeApp_Study* study ) { myStudy = study; - + /* Shading Color */ SUIT_Session* session = SUIT_Session::session(); SUIT_ResourceMgr* resMgr = session->resourceMgr(); @@ -277,7 +282,7 @@ SALOME_View* GEOM_Displayer::GetActiveView() * Display interactive object in the current viewer */ //================================================================= -void GEOM_Displayer::Display( const Handle(SALOME_InteractiveObject)& theIO, +void GEOM_Displayer::Display( const Handle(SALOME_InteractiveObject)& theIO, const bool updateViewer, SALOME_View* theViewFrame ) { @@ -285,7 +290,7 @@ void GEOM_Displayer::Display( const Handle(SALOME_InteractiveObject)& theIO, if ( vf ) { SALOME_Prs* prs = buildPresentation( theIO, vf ); - + if ( prs ) { vf->BeforeDisplay( this ); @@ -294,7 +299,7 @@ void GEOM_Displayer::Display( const Handle(SALOME_InteractiveObject)& theIO, if ( updateViewer ) vf->Repaint(); - + delete prs; // delete presentation because displayer is its owner } } @@ -334,7 +339,7 @@ void GEOM_Displayer::Erase( const Handle(SALOME_InteractiveObject)& theIO, return; SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); - + if ( vf ) { SALOME_Prs* prs = vf->CreatePrs( theIO->getEntry() ); if ( prs ) { @@ -375,7 +380,7 @@ void GEOM_Displayer::EraseAll ( const bool forced, SALOME_View* theViewFrame ) { SALOME_View* vf = theViewFrame ? theViewFrame : GetActiveView(); - + if ( vf ) { vf->EraseAll( forced ); if ( updateViewer ) @@ -515,7 +520,7 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs ) { aTrh = new GEOM_AISTrihedron( aPlc ); - if ( HasColor() ) + if ( HasColor() ) aTrh->SetColor( (Quantity_NameOfColor)GetColor() ); if ( HasWidth() ) @@ -540,7 +545,7 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs ) if ( !aTrh.IsNull() ) { aTrh->SetComponent( aPlc ); - aTrh->SetToUpdate(); + aTrh->SetToUpdate(); } } } @@ -562,7 +567,7 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs ) // Setup shape properties here ..., e.g. display mode, color, transparency, etc AISShape->SetDisplayMode( myDisplayMode ); AISShape->SetShadingColor( myShadingColor ); - + if ( HasColor() ) { AISShape->SetColor( (Quantity_NameOfColor)GetColor() ); @@ -645,12 +650,12 @@ void GEOM_Displayer::Update( SALOME_VTKPrs* prs ) return; vtkActorCollection* theActors = 0; - + if ( myType == GEOM_MARKER && !myShape.IsNull() && myShape.ShapeType() == TopAbs_FACE ) { myToActivate = false; GEOM_VTKTrihedron* aTrh = GEOM_VTKTrihedron::New(); - + if ( HasColor() ) { Quantity_Color aColor( (Quantity_NameOfColor)GetColor() ); @@ -669,25 +674,25 @@ void GEOM_Displayer::Update( SALOME_VTKPrs* prs ) // aTrh->SetSize( 0.5 * vf->GetTrihedronSize() ); vtkPrs->AddObject( aTrh ); - + theActors = vtkActorCollection::New(); theActors->AddItem( aTrh ); } else theActors = GEOM_AssemblyBuilder::BuildActors( myShape, 0, 0, Standard_True ); - + theActors->InitTraversal(); - + vtkActor* anActor = (vtkActor*)theActors->GetNextActor(); vtkProperty* aProp = 0; - + if ( HasColor() || HasWidth() ) { aProp = vtkProperty::New(); aProp->SetRepresentationToWireframe(); } - + if ( HasColor() ) { Quantity_Color aColor( (Quantity_NameOfColor)GetColor() ); @@ -702,7 +707,7 @@ void GEOM_Displayer::Update( SALOME_VTKPrs* prs ) while ( anActor != NULL ) { SALOME_Actor* GActor = SALOME_Actor::SafeDownCast( anActor ); - + GActor->setIO( myIO ); if ( aProp ) @@ -722,9 +727,9 @@ void GEOM_Displayer::Update( SALOME_VTKPrs* prs ) GActor->PickableOn(); else GActor->PickableOff(); - + vtkPrs->AddObject( GActor ); - + anActor = (vtkActor*)theActors->GetNextActor(); } @@ -748,17 +753,17 @@ SALOME_Prs* GEOM_Displayer::BuildPrs( GEOM::GEOM_Object_ptr theObj ) myViewFrame = GetActiveView(); if ( myViewFrame == 0 ) return 0; - + SALOME_Prs* aPrs = myViewFrame->CreatePrs(); if ( aPrs == 0 ) return 0; - internalReset(); + internalReset(); setShape( GEOM_Client().GetShape( GeometryGUI::GetGeomGen(), theObj ) ); myType = theObj->GetType(); // Update presentation - UpdatePrs( aPrs ); + UpdatePrs( aPrs ); return aPrs; } @@ -793,44 +798,44 @@ SALOME_Prs* GEOM_Displayer::BuildPrs( const TopoDS_Shape& theShape ) * GEOM_Displayer::buildPresentation * Builds/finds object's presentation for the current viewer * Calls corresponding Update() method by means of double dispatch - * [ internal ] + * [ internal ] */ //================================================================= -SALOME_Prs* GEOM_Displayer::buildPresentation( const Handle(SALOME_InteractiveObject)& theIO, +SALOME_Prs* GEOM_Displayer::buildPresentation( const Handle(SALOME_InteractiveObject)& theIO, SALOME_View* theViewFrame ) { SALOME_Prs* prs = 0; internalReset(); myViewFrame = theViewFrame ? theViewFrame : GetActiveView(); - - if ( myViewFrame ) + + if ( myViewFrame ) { prs = myViewFrame->CreatePrs( !theIO.IsNull() ? theIO->getEntry() : 0 ); - if ( prs ) + if ( prs ) { - if ( !theIO.IsNull() ) + if ( !theIO.IsNull() ) { // set interactive object setIO( theIO ); // Find SOBject (because shape should be published previously) SUIT_Session* session = SUIT_Session::session(); SUIT_Application* app = session->activeApplication(); - if ( app ) + if ( app ) { SalomeApp_Study* study = dynamic_cast( app->activeStudy() ); if ( study ) { _PTR(SObject) SO ( study->studyDS()->FindObjectID( theIO->getEntry() ) ); - if ( SO ) + if ( SO ) { // get CORBA reference to data object - CORBA::Object_var object = dynamic_cast(SO.get())->GetObject(); - if ( !CORBA::is_nil( object ) ) + CORBA::Object_var object = GeometryGUI::ClientSObjectToObject(SO); + if ( !CORBA::is_nil( object ) ) { // downcast to GEOM object GEOM::GEOM_Object_var GeomObject = GEOM::GEOM_Object::_narrow( object ); - if ( !GeomObject->_is_nil() ) + if ( !GeomObject->_is_nil() ) { // finally set shape setShape( GEOM_Client().GetShape( GeometryGUI::GetGeomGen(), GeomObject ) ); @@ -875,7 +880,7 @@ void GEOM_Displayer::LocalSelection( const Handle(SALOME_InteractiveObject)& the return; SalomeApp_SelectionMgr* sm = app->selectionMgr(); - + // remove all filters from selection sm->clearFilters(); @@ -885,7 +890,7 @@ void GEOM_Displayer::LocalSelection( const Handle(SALOME_InteractiveObject)& the SALOME_Prs* prs = vf->CreatePrs( theIO.IsNull() ? 0 : theIO->getEntry() ); vf->LocalSelection( prs, theMode ); delete prs; // delete presentation because displayer is its owner - } + } } //================================================================= @@ -916,11 +921,11 @@ void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes, SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); if ( !app ) return; - + SALOME_View* vf = GetActiveView(); if ( vf == 0 ) return; - + // Close local context vf->GlobalSelection( update ); @@ -934,9 +939,9 @@ void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes, clearTemporary( sm ); //@ aSel->ClearIndex(); - + sm->clearFilters(); - + // Remove filters from AIS_InteractiveContext Handle(AIS_InteractiveContext) ic; SOCC_Viewer* viewer = dynamic_cast( vf ); @@ -946,7 +951,7 @@ void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes, if ( !ic.IsNull() ) ic->RemoveFilters(); } - + if ( theModes.Contains( GEOM_ALLOBJECTS ) ) return; @@ -967,7 +972,7 @@ void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes, if ( aFilter ) aListOfFilters.append( aFilter ); } - + aFilter = new GEOM_LogicalFilter( aListOfFilters, GEOM_LogicalFilter::LO_OR ); } else @@ -994,7 +999,7 @@ void GEOM_Displayer::GlobalSelection( const TColStd_MapOfInteger& theModes, void GEOM_Displayer::LocalSelection( const SALOME_ListIO& theIOList, const int theMode ) { SALOME_ListIteratorOfListIO Iter( theIOList ); - for ( ; Iter.More(); Iter.Next() ) + for ( ; Iter.More(); Iter.Next() ) LocalSelection( Iter.Value(), theMode ); } @@ -1095,20 +1100,20 @@ bool GEOM_Displayer::ToActivate() const //================================================================= /*! * GEOM_Displayer::clearTemporary - * Removes from selection temporary objects + * Removes from selection temporary objects */ //================================================================= void GEOM_Displayer::clearTemporary( SalomeApp_SelectionMgr* theSelMgr ) { SALOME_ListIO selected, toSelect; theSelMgr->selectedObjects( selected ); - + for ( SALOME_ListIteratorOfListIO it( selected ) ; it.More(); it.Next() ) { Handle(SALOME_InteractiveObject) io = it.Value(); - if ( !io.IsNull() && io->hasEntry() && strncmp( io->getEntry(), "TEMP_", 5 ) != 0 ) + if ( !io.IsNull() && io->hasEntry() && strncmp( io->getEntry(), "TEMP_", 5 ) != 0 ) toSelect.Append( it.Value() ); } - + theSelMgr->setSelectedObjects( toSelect, true ); } diff --git a/src/GEOMGUI/GeometryGUI.cxx b/src/GEOMGUI/GeometryGUI.cxx index cabc16ab1..2e1b295e8 100644 --- a/src/GEOMGUI/GeometryGUI.cxx +++ b/src/GEOMGUI/GeometryGUI.cxx @@ -82,6 +82,40 @@ bool GeometryGUI::InitGeomGen() return true; } +//======================================================================= +// function : ClientSObjectToObject +// purpose : +//======================================================================= +CORBA::Object_var GeometryGUI::ClientSObjectToObject (_PTR(SObject) theSObject) +{ + _PTR(GenericAttribute) anAttr; + CORBA::Object_var anObj; + try { + std::string aValue = theSObject->GetIOR(); + if (strcmp(aValue.c_str(), "") != 0) { + CORBA::ORB_ptr anORB = SalomeApp_Application::orb(); + anObj = anORB->string_to_object(aValue.c_str()); + } + } catch(...) { + INFOS("ClientSObjectToObject - Unknown exception was occured!!!"); + } + return anObj._retn(); +} + +//======================================================================= +// function : ClientStudyToStudy +// purpose : +//======================================================================= +SALOMEDS::Study_var GeometryGUI::ClientStudyToStudy (_PTR(Study) theStudy) +{ + SALOME_NamingService *aNamingService = SalomeApp_Application::namingService(); + CORBA::Object_var aSMObject = aNamingService->Resolve("/myStudyManager"); + SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(aSMObject); + int aStudyID = theStudy->StudyId(); + SALOMEDS::Study_var aDSStudy = aStudyManager->GetStudyByID(aStudyID); + return aDSStudy._retn(); +} + //================================================================================= // class : CustomItem // purpose : Set Font to a text. diff --git a/src/GEOMGUI/GeometryGUI.h b/src/GEOMGUI/GeometryGUI.h index 2f56a0029..860cd795c 100644 --- a/src/GEOMGUI/GeometryGUI.h +++ b/src/GEOMGUI/GeometryGUI.h @@ -1,23 +1,23 @@ // GEOM GEOMGUI : GUI for Geometry component // // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // @@ -34,9 +34,18 @@ #include "GEOMGUI.h" #include "GEOM_Client.hxx" #include "SALOME_InteractiveObject.hxx" + +#include "SALOMEDSClient.hxx" + +// QT Includes #include -#include "gp_Ax3.hxx" +// OCCT Includes +#include + +// IDL headers +#include "SALOMEconfig.h" +#include CORBA_CLIENT_HEADER(SALOMEDS) #ifdef WNT #include @@ -63,7 +72,7 @@ class SALOME_WNT_EXPORT GeometryGUI : public SalomeApp_Module public: // Constructor - GeometryGUI(); + GeometryGUI(); // Destructor ~GeometryGUI(); @@ -71,15 +80,18 @@ public: virtual void initialize( CAM_Application* ); virtual QString engineIOR() const; - static bool InitGeomGen(); //BugID IPAL9186: SRN: To be called by Python scripts + static bool InitGeomGen(); //BugID IPAL9186: SRN: To be called by Python scripts static GEOM::GEOM_Gen_var GetGeomGen() { return myComponentGeom; } - + + static CORBA::Object_var ClientSObjectToObject (_PTR(SObject) theSObject); + static SALOMEDS::Study_var ClientStudyToStudy (_PTR(Study) theStudy); + GEOM_Client& GetShapeReader() { return myShapeReader; } Standard_CString& GetFatherior() { return myFatherior; } //void SetState( const int state ) { myState = state; } //int GetState() const { return myState; } - + // Get active dialog box QDialog* GetActiveDialogBox(){ return myActiveDialogBox; } // Set active dialog box @@ -91,7 +103,7 @@ public: void EmitSignalDefaultStepValueChanged( double newVal ); void OnGUIEvent( int id ); - + virtual bool OnKeyPress( QKeyEvent*, SUIT_ViewWindow* ); virtual bool OnMousePress( QMouseEvent*, SUIT_ViewWindow* ); virtual bool OnMouseMove( QMouseEvent*, SUIT_ViewWindow* ); @@ -137,10 +149,13 @@ protected: private: GEOMGUI* getLibrary( const QString& libraryName ); - void createGeomAction( const int id, const QString& po_id, const QString& icon_id = QString(""), const int key = 0, const bool toggle = false ); - void createPopupItem( const int, const QString& clients, const QString& types, - const bool isSingle = false, const int isVisible = -1, - const bool isExpandAll = false, const bool isOCC = false, const int parentId = -1 ); + void createGeomAction( const int id, const QString& po_id, + const QString& icon_id = QString(""), + const int key = 0, const bool toggle = false ); + void createPopupItem( const int, const QString& clients, const QString& types, + const bool isSingle = false, const int isVisible = -1, + const bool isExpandAll = false, const bool isOCC = false, + const int parentId = -1 ); private: static GEOM::GEOM_Gen_var myComponentGeom; // GEOM engine @@ -158,4 +173,3 @@ private: }; #endif - diff --git a/src/GEOMGUI/GeometryGUI_Swig.cxx b/src/GEOMGUI/GeometryGUI_Swig.cxx index a99523bb3..1dc5ac24e 100644 --- a/src/GEOMGUI/GeometryGUI_Swig.cxx +++ b/src/GEOMGUI/GeometryGUI_Swig.cxx @@ -59,8 +59,6 @@ #include "utilities.h" #include "SALOMEDSClient.hxx" -#include "SALOMEDS_SObject.hxx" -#include "SALOMEDS_Study.hxx" // OCCT Includes #include diff --git a/src/GEOMGUI/Makefile.in b/src/GEOMGUI/Makefile.in index 1322b3582..a14ea4cb1 100644 --- a/src/GEOMGUI/Makefile.in +++ b/src/GEOMGUI/Makefile.in @@ -73,6 +73,6 @@ LIB_SERVER_IDL = CPPFLAGS += $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(GUI_ROOT_DIR)/include/salome CXXFLAGS += $(BOOST_CPPFLAGS) -I$(KERNEL_ROOT_DIR)/include/salome -I$(GUI_ROOT_DIR)/include/salome -LDFLAGS += -lGEOMFiltersSelection -L$(KERNEL_ROOT_DIR)/lib/salome -L$(GUI_ROOT_DIR)/lib/salome -lOCCViewer -lVTKViewer -lSalomeApp -lCAM -lGEOMClient -lSOCC -lSVTK -lGEOMObject -lToolsGUI -lSalomeDS -lEvent +LDFLAGS += -lGEOMFiltersSelection -L$(KERNEL_ROOT_DIR)/lib/salome -L$(GUI_ROOT_DIR)/lib/salome -lOCCViewer -lVTKViewer -lSalomeApp -lCAM -lGEOMClient -lSOCC -lSVTK -lGEOMObject -lToolsGUI -lEvent @CONCLUDE@ diff --git a/src/GEOMToolsGUI/GEOMToolsGUI.cxx b/src/GEOMToolsGUI/GEOMToolsGUI.cxx index 5bbaa653c..473ccd7ec 100644 --- a/src/GEOMToolsGUI/GEOMToolsGUI.cxx +++ b/src/GEOMToolsGUI/GEOMToolsGUI.cxx @@ -1,23 +1,23 @@ // GEOM GEOMGUI : GUI for Geometry component // // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // @@ -27,6 +27,7 @@ // $Header$ #include "GEOMToolsGUI.h" + #include "GeometryGUI.h" #include "GEOM_Actor.h" #include "GEOMBase.h" @@ -49,28 +50,27 @@ #include #include +#include "utilities.h" + +// QT Includes #include #include -#include "utilities.h" +// OCCT Includes +#include using namespace std; typedef QMap FilterMap; -#include - - - - //======================================================================= // function : getFileName -// purpose : Selection of a file name for Import/Export. Returns also +// purpose : Selection of a file name for Import/Export. Returns also // the selected file type code through argument. //======================================================================= -static QString getFileName( QWidget* parent, - const QString& initial, - const FilterMap& filterMap, +static QString getFileName( QWidget* parent, + const QString& initial, + const FilterMap& filterMap, const QString& caption, bool open, QString& format ) @@ -80,7 +80,7 @@ static QString getFileName( QWidget* parent, for ( FilterMap::const_iterator it = filterMap.begin(); it != filterMap.end(); ++it ) filters.push_back( it.key() ); - SUIT_FileDlg* fd = new SUIT_FileDlg( parent, open, true, true ); + SUIT_FileDlg* fd = new SUIT_FileDlg( parent, open, true, true ); if ( !caption.isEmpty() ) fd->setCaption( caption ); @@ -105,7 +105,7 @@ static QString getFileName( QWidget* parent, // function : GEOMToolsGUI() // purpose : Constructor //======================================================================= -GEOMToolsGUI::GEOMToolsGUI( GeometryGUI* parent ) +GEOMToolsGUI::GEOMToolsGUI( GeometryGUI* parent ) : GEOMGUI( parent ) { } @@ -122,7 +122,7 @@ GEOMToolsGUI::~GEOMToolsGUI() //======================================================================= // function : OnGUIEvent() -// purpose : +// purpose : //======================================================================= bool GEOMToolsGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) { @@ -239,12 +239,12 @@ void GEOMToolsGUI::OnEditDelete() bool aLocked = (_PTR(AttributeStudyProperties)(aStudy->GetProperties()))->IsLocked(); if ( aLocked ) { SUIT_MessageBox::warn1 ( app->desktop(), - QObject::tr("WRN_WARNING"), + QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED"), QObject::tr("BUT_OK") ); return; } - + // VSR 17/11/04: check if all objects selected belong to GEOM component --> start // modifications of ASV 01.06.05 QString parentComp = getParentComponent( aStudy, selected ); @@ -253,14 +253,14 @@ void GEOMToolsGUI::OnEditDelete() if ( parentComp != geomComp ) { SUIT_MessageBox::warn1 ( app->desktop(), - QObject::tr("ERR_ERROR"), + QObject::tr("ERR_ERROR"), QObject::tr("NON_GEOM_OBJECTS_SELECTED").arg( getGeometryGUI()->moduleName() ), QObject::tr("BUT_OK") ); return; } // VSR 17/11/04: check if all objects selected belong to GEOM component <-- finish - if ( SUIT_MessageBox::warn2( app->desktop(), + if ( SUIT_MessageBox::warn2( app->desktop(), QObject::tr( "GEOM_WRN_WARNING" ), QObject::tr( "GEOM_REALLY_DELETE" ), QObject::tr( "GEOM_BUT_YES" ), @@ -269,7 +269,7 @@ void GEOMToolsGUI::OnEditDelete() // QAD_Operation* op = new SALOMEGUI_ImportOperation(.....); // op->start(); - + // prepare list of SALOME_Views QPtrList views; SALOME_View* view; @@ -282,7 +282,7 @@ void GEOMToolsGUI::OnEditDelete() if ( view ) views.append( view ); } - + _PTR(StudyBuilder) aStudyBuilder (aStudy->NewBuilder()); _PTR(GenericAttribute) anAttr; GEOM_Displayer* disp = new GEOM_Displayer( appStudy ); @@ -300,59 +300,60 @@ void GEOMToolsGUI::OnEditDelete() if ( !strcmp( obj->GetIOR().c_str(), geomIOR ) ) continue; - // iterate through all childres of obj, find IOR attributes on children and remove shapes that - // correspond to these IORs - for ( _PTR(ChildIterator) it ( aStudy->NewChildIterator( obj ) ); it->More();it->Next() ) { - _PTR(SObject) child ( it->Value() ); - if ( child->FindAttribute( anAttr, "AttributeIOR" ) ) { - _PTR(AttributeIOR) anIOR( anAttr ); + // iterate through all children of obj, find IOR attributes on children + // and remove shapes that correspond to these IORs + for (_PTR(ChildIterator) it (aStudy->NewChildIterator(obj)); it->More(); it->Next()) { + _PTR(SObject) child (it->Value()); + if (child->FindAttribute(anAttr, "AttributeIOR")) { + _PTR(AttributeIOR) anIOR (anAttr); // Delete child( s ) shape in Client : - const TCollection_AsciiString ASCior( (char*)anIOR->Value().c_str() ) ; - getGeometryGUI()->GetShapeReader().RemoveShapeFromBuffer( ASCior ); - - for ( view = views.first(); view; view = views.next() ) { - CORBA::Object_var corbaObj = (dynamic_cast(child.get()))->GetObject(); - GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow( corbaObj ); - if ( !CORBA::is_nil( geomObj ) ) - disp->Erase( geomObj, true, view ); - } + const TCollection_AsciiString ASCior ((char*)anIOR->Value().c_str()); + getGeometryGUI()->GetShapeReader().RemoveShapeFromBuffer(ASCior); + + CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(child); + GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow(corbaObj); + if (!CORBA::is_nil(geomObj)) { + for (view = views.first(); view; view = views.next()) { + disp->Erase(geomObj, true, view); + } + } } - } // for ( childres of obj ) + } // for ( children of obj ) // Erase main graphical object - for ( view = views.first(); view; view = views.next() ) + for ( view = views.first(); view; view = views.next() ) disp->Erase( io, true, view ); // Delete main shape in Client : if ( obj->FindAttribute( anAttr, "AttributeIOR" ) ) { _PTR(AttributeIOR) anIOR( anAttr ); - const TCollection_AsciiString ASCIor( (char*)anIOR->Value().c_str() ) ; + const TCollection_AsciiString ASCIor( (char*)anIOR->Value().c_str() ); getGeometryGUI()->GetShapeReader().RemoveShapeFromBuffer( ASCIor ); } - // Remove objects from Study - aStudyBuilder->RemoveObject( obj ); - - CORBA::Object_var corbaObj = (dynamic_cast(obj.get()))->GetObject(); + CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject(obj); GEOM::GEOM_Object_var geomObj = GEOM::GEOM_Object::_narrow( corbaObj ); if ( !CORBA::is_nil( geomObj ) ) GeometryGUI::GetGeomGen()->RemoveObject( geomObj ); - + + // Remove objects from Study + aStudyBuilder->RemoveObject( obj ); + //deleted = true; } // MAIN LOOP of selected - + selected.Clear(); aSelMgr->setSelectedObjects( selected ); getGeometryGUI()->updateObjBrowser(); } // if ( selected not empty ) } // if ( selMgr && appStudy ) - + app->updateActions(); //SRN: BugID IPAL9377, case 1 for GEOM module - + } // if ( app ) - + // if ( deleted ) // op->finish(); // else @@ -365,8 +366,8 @@ void GEOMToolsGUI::OnEditDelete() // purpose : //============================================================================== void GEOMToolsGUI::OnEditCopy() -{ -/* +{ +/* SALOME_Selection* Sel = SALOME_Selection::Selection(QAD_Application::getDesktop()->getActiveStudy()->getSelection() ); GEOM::string_array_var listIOR = new GEOM::string_array; @@ -377,20 +378,20 @@ void GEOMToolsGUI::OnEditCopy() Sel->ClearIObjects(); SALOMEDS::Study_var aStudy = QAD_Application::getDesktop()->getActiveStudy()->getStudyDocument(); - int aStudyID = aStudy->StudyId(); + int aStudyID = aStudy->StudyId(); for (unsigned int ind = 0; ind < listIOR->length();ind++) { GEOM::GEOM_Object_var aShapeInit = myGeom->GetIORFromString(listIOR[ind]); try { GEOM::GEOM_IInsertOperations_var IOp = myGeom->GetIInsertOperations(aStudyID); - GEOM::GEOM_Object_var result = IOp->MakeCopy(aShapeInit) ; + GEOM::GEOM_Object_var result = IOp->MakeCopy(aShapeInit); myGeomBase->Display(result); } catch (const SALOME::SALOME_Exception& S_ex) { QtCatchCorbaException(S_ex); } } - + QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_READY")); */ } @@ -404,7 +405,7 @@ bool GEOMToolsGUI::Import() { SUIT_Application* app = getGeometryGUI()->getApp(); if (! app) return false; - + SalomeApp_Study* stud = dynamic_cast ( app->activeStudy() ); if ( !stud ) { cout << "FAILED to cast active study to SalomeApp_Study" << endl; @@ -415,7 +416,7 @@ bool GEOMToolsGUI::Import() bool aLocked = (_PTR(AttributeStudyProperties)(aStudy->GetProperties()))->IsLocked(); if ( aLocked ) { SUIT_MessageBox::warn1 ( app->desktop(), - QObject::tr("WRN_WARNING"), + QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED"), QObject::tr("BUT_OK") ); return false; @@ -423,9 +424,9 @@ bool GEOMToolsGUI::Import() GEOM::GEOM_Gen_var eng = GeometryGUI::GetGeomGen(); if ( CORBA::is_nil( eng ) ) { - SUIT_MessageBox::error1( app->desktop(), + SUIT_MessageBox::error1( app->desktop(), QObject::tr("WRN_WARNING"), - QObject::tr( "GEOM Engine is not started" ), + QObject::tr( "GEOM Engine is not started" ), QObject::tr("BUT_OK") ); return false; } @@ -433,7 +434,7 @@ bool GEOMToolsGUI::Import() GEOM::GEOM_IInsertOperations_var aInsOp = eng->GetIInsertOperations( aStudy->StudyId() ); if ( aInsOp->_is_nil() ) return false; - + GEOM::GEOM_Object_var anObj; // Obtain a list of available import formats @@ -441,15 +442,15 @@ bool GEOMToolsGUI::Import() GEOM::string_array_var aFormats, aPatterns; aInsOp->ImportTranslators( aFormats, aPatterns ); - for ( int i = 0, n = aFormats->length(); i < n; i++ ) + for ( int i = 0, n = aFormats->length(); i < n; i++ ) aMap.insert( (char*)aPatterns[i], (char*)aFormats[i] ); QString fileType; QString file = getFileName(app->desktop(), "", aMap, tr("GEOM_MEN_IMPORT"), true, fileType ); - if( file.isEmpty() || fileType.isEmpty() ) + if( file.isEmpty() || fileType.isEmpty() ) return false; - + GEOM_Operation* anOp = new GEOM_Operation( app, aInsOp.in() ); try { SUIT_OverrideCursor wc; @@ -458,29 +459,31 @@ bool GEOMToolsGUI::Import() anOp->start(); - anObj = aInsOp->Import( file.latin1(), fileType.latin1() ); + anObj = aInsOp->Import( file.latin1(), fileType.latin1() ); if ( !anObj->_is_nil() && aInsOp->IsDone() ) { anObj->SetName( GEOMBase::GetDefaultName( QObject::tr( "GEOM_IMPORT" ) ).latin1() ); QString aPublishObjName = GEOMBase::GetDefaultName( SUIT_Tools::file( file, /*withExten=*/true )); - GeometryGUI::GetGeomGen()->PublishInStudy(dynamic_cast(aStudy.get())->GetStudy(), - SALOMEDS::SObject::_nil(), - anObj, - aPublishObjName ); + + SALOMEDS::Study_var aDSStudy = GeometryGUI::ClientStudyToStudy(aStudy); + GeometryGUI::GetGeomGen()->PublishInStudy(aDSStudy, + SALOMEDS::SObject::_nil(), + anObj, + aPublishObjName); GEOM_Displayer( stud ).Display( anObj.in() ); // update data model and object browser getGeometryGUI()->updateObjBrowser( true ); - - anOp->commit(); + + anOp->commit(); } else { anOp->abort(); wc.suspend(); - SUIT_MessageBox::error1( app->desktop(), + SUIT_MessageBox::error1( app->desktop(), QObject::tr( "GEOM_ERROR" ), - QObject::tr("GEOM_PRP_ABORT") + "\n" + QString( aInsOp->GetErrorCode() ), + QObject::tr("GEOM_PRP_ABORT") + "\n" + QString( aInsOp->GetErrorCode() ), QObject::tr("BUT_OK") ); } } @@ -502,23 +505,23 @@ bool GEOMToolsGUI::Export() { SalomeApp_Application* app = getGeometryGUI()->getApp(); if (!app) return false; - + SalomeApp_Study* stud = dynamic_cast ( app->activeStudy() ); if ( !stud ) { cout << "FAILED to cast active study to SalomeApp_Study" << endl; return false; } _PTR(Study) aStudy = stud->studyDS(); - + GEOM::GEOM_Gen_var eng = GeometryGUI::GetGeomGen(); if ( CORBA::is_nil( eng ) ) { - SUIT_MessageBox::error1( app->desktop(), + SUIT_MessageBox::error1( app->desktop(), QObject::tr("WRN_WARNING"), - QObject::tr( "GEOM Engine is not started" ), + QObject::tr( "GEOM Engine is not started" ), QObject::tr("BUT_OK") ); return false; } - + GEOM::GEOM_IInsertOperations_var aInsOp = eng->GetIInsertOperations( aStudy->StudyId() ); if ( aInsOp->_is_nil() ) return false; @@ -527,7 +530,7 @@ bool GEOMToolsGUI::Export() FilterMap aMap; GEOM::string_array_var aFormats, aPatterns; aInsOp->ExportTranslators( aFormats, aPatterns ); - for ( int i = 0, n = aFormats->length(); i < n; i++ ) + for ( int i = 0, n = aFormats->length(); i < n; i++ ) aMap.insert( (char*)aPatterns[i], (char*)aFormats[i] ); // Get selected objects @@ -546,21 +549,21 @@ bool GEOMToolsGUI::Export() if ( !found || anObj->_is_nil() ) continue; - + QString fileType; - QString file = getFileName(app->desktop(), QString( IObject->getName() ), aMap, + QString file = getFileName(app->desktop(), QString( IObject->getName() ), aMap, tr("GEOM_MEN_EXPORT"), false, fileType); - + // User has pressed "Cancel" --> stop the operation if ( file.isEmpty() || fileType.isEmpty() ) return false; - + GEOM_Operation* anOp = new GEOM_Operation( app, aInsOp.in() ); try { SUIT_OverrideCursor wc; - + app->putInfo( tr("GEOM_PRP_EXPORT").arg(SUIT_Tools::file( file, /*withExten=*/true )) ); - + anOp->start(); @@ -572,21 +575,21 @@ bool GEOMToolsGUI::Export() { anOp->abort(); wc.suspend(); - SUIT_MessageBox::error1( app->desktop(), + SUIT_MessageBox::error1( app->desktop(), QObject::tr( "GEOM_ERROR" ), - QObject::tr("GEOM_PRP_ABORT") + "\n" + QString( aInsOp->GetErrorCode() ), + QObject::tr("GEOM_PRP_ABORT") + "\n" + QString( aInsOp->GetErrorCode() ), QObject::tr("BUT_OK") ); return false; } - } + } catch (const SALOME::SALOME_Exception& S_ex) { //QtCatchCorbaException(S_ex); anOp->abort(); return false; } } - - return true; + + return true; } @@ -597,7 +600,7 @@ QString GEOMToolsGUI::getParentComponent( _PTR( Study ) study, const SALOME_List for ( SALOME_ListIteratorOfListIO it( iobjs ); it.More(); it.Next() ) { Handle(SALOME_InteractiveObject) io = it.Value(); - if ( !io->hasEntry() ) + if ( !io->hasEntry() ) continue; QString compName = getParentComponent( study->FindObjectID( io->getEntry() ) ); diff --git a/src/GEOMToolsGUI/GEOMToolsGUI.h b/src/GEOMToolsGUI/GEOMToolsGUI.h index d85bdd0f8..6d239c330 100644 --- a/src/GEOMToolsGUI/GEOMToolsGUI.h +++ b/src/GEOMToolsGUI/GEOMToolsGUI.h @@ -1,23 +1,23 @@ // GEOM GEOMGUI : GUI for Geometry component // // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // @@ -32,9 +32,9 @@ #include "GEOMGUI.h" #include -#include #include +#include //================================================================================= // class : GEOMToolsGUI @@ -51,8 +51,8 @@ public : private: // Import and export topology methods bool Import(); - bool Export(); - + bool Export(); + void OnEditCopy(); void OnEditDelete(); @@ -69,7 +69,7 @@ private: void OnOpen(); // returns name of Module (Component) of given objects (usually selected objects) - // if objects belong to different Components, a NULL string is returned. + // if objects belong to different Components, a NULL string is returned. QString getParentComponent( _PTR( Study ), const SALOME_ListIO& ); QString getParentComponent( _PTR(SObject) ); }; diff --git a/src/GEOMToolsGUI/GEOMToolsGUI_1.cxx b/src/GEOMToolsGUI/GEOMToolsGUI_1.cxx index 2c05e3457..5f317478c 100644 --- a/src/GEOMToolsGUI/GEOMToolsGUI_1.cxx +++ b/src/GEOMToolsGUI/GEOMToolsGUI_1.cxx @@ -1,25 +1,25 @@ // GEOM GEOMGUI : GUI for Geometry component // // Copyright (C) 2004 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org or email : webmaster.salome@opencascade.org +// // -// // // File : GEOMToolsGUI_1.cxx // Author : Sergey ANIKIN @@ -29,13 +29,15 @@ #include #include "GEOMToolsGUI.h" + #include "GeometryGUI.h" -#include "GEOM_Actor.h" -#include "GEOMBase.h" #include "GEOMToolsGUI_TransparencyDlg.h" #include "GEOMToolsGUI_NbIsosDlg.h" // Method ISOS adjustement #include "GEOMToolsGUI_NameDlg.h" +#include "GEOM_Actor.h" +#include "GEOMBase.h" + #include #include @@ -59,11 +61,17 @@ #include #include +#include "SALOMEDSClient.hxx" + +#include "utilities.h" + +// OCCT Includes #include #include #include #include +// VTK Includes #include #include #include @@ -71,19 +79,14 @@ #include #include +// QT Includes #include #include #include #include -#include "utilities.h" - using namespace std; -#include "SALOMEDSClient.hxx" -#include "SALOMEDS_Study.hxx" - - void GEOMToolsGUI::OnSettingsColor() { @@ -92,14 +95,14 @@ void GEOMToolsGUI::OnSettingsColor() SUIT_Desktop* desk = sess->activeApplication()->desktop(); QColor anInitColor = resMgr->colorValue( "Geometry", "SettingsShadingColor", QColor( "yellow" ) ); - + QColor aDialogColor = QColorDialog::getColor(anInitColor, desk ); - if( aDialogColor.isValid() ) + if( aDialogColor.isValid() ) { QString type = desk->activeWindow()->getViewManager()->getType(); if( type != OCCViewer_Viewer::Type() && type != VTKViewer_Viewer::Type() ) MESSAGE("Settings Color is not supported for current Viewer"); - + resMgr->setValue( "Geometry", "SettingsShadingColor", aDialogColor ); } } @@ -116,25 +119,25 @@ void GEOMToolsGUI::OnSettingsIsos() if ( type != OCCViewer_Viewer::Type() ) return; - + OCCViewer_Viewer* vm = (OCCViewer_Viewer*)vman->getViewModel(); Handle (AIS_InteractiveContext) ic = vm->getAISContext(); - + int IsoU = resMgr->integerValue( "Geometry:SettingsIsoU", 1 ); int IsoV = resMgr->integerValue( "Geometry:SettingsIsoV", 1 ); - + ic->DefaultDrawer()->UIsoAspect()->SetNumber( IsoU ); ic->DefaultDrawer()->VIsoAspect()->SetNumber( IsoV ); - - GEOMBase_NbIsosDlg* NbIsosDlg = new GEOMBase_NbIsosDlg(desk, tr("GEOM_MEN_ISOS"), TRUE); - + + GEOMBase_NbIsosDlg* NbIsosDlg = new GEOMBase_NbIsosDlg(desk, tr("GEOM_MEN_ISOS"), TRUE); + NbIsosDlg->SpinBoxU->setValue(IsoU); NbIsosDlg->SpinBoxV->setValue(IsoV); - + if(NbIsosDlg->exec()) { IsoU = NbIsosDlg->SpinBoxU->text().toInt(); IsoV = NbIsosDlg->SpinBoxV->text().toInt(); - + ic->DefaultDrawer()->UIsoAspect()->SetNumber(UIso); ic->DefaultDrawer()->VIsoAspect()->SetNumber(VIso); resMgr->setValue("Geometry:SettingsIsoU", isoU); @@ -154,7 +157,7 @@ void GEOMToolsGUI::OnSettingsStep() double dd = GEOMBase::Parameter( res, QString("%1").arg(step), tr("GEOM_MEN_STEP_LABEL"), tr("GEOM_STEP_TITLE"), 0.001, 10000.0, 3); if(res) { resMgr->setValue( "Geometry", "SettingsGeomStep", dd ); - + /* Emit signal to GeometryGUI_SpinBoxes */ getGeometryGUI()->EmitSignalDefaultStepValueChanged( dd ); } @@ -177,21 +180,21 @@ void GEOMToolsGUI::OnRename() bool aLocked = (_PTR(AttributeStudyProperties)(aStudy->GetProperties()))->IsLocked(); if ( aLocked ) { SUIT_MessageBox::warn1 ( app->desktop(), - QObject::tr("WRN_WARNING"), + QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED"), QObject::tr("BUT_OK") ); return; } - + for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) { Handle(SALOME_InteractiveObject) IObject = It.Value(); - + _PTR(SObject) obj ( aStudy->FindObjectID(IObject->getEntry()) ); _PTR(GenericAttribute) anAttr; if ( obj ) { if( obj->FindAttribute(anAttr, "AttributeName") ) { _PTR(AttributeName) aName (anAttr); - + QString newName = GEOMToolsGUI_NameDlg::getName( app->desktop(), aName->Value().c_str() ); if ( !newName.isEmpty() ) { aName->SetValue( newName.latin1() ); // rename the SObject @@ -210,7 +213,7 @@ void GEOMToolsGUI::OnCheckGeometry() { SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); PythonConsole* pyConsole = app->pythonConsole(); - + if(pyConsole) pyConsole->exec("from GEOM_usinggeom import *"); } @@ -282,36 +285,36 @@ void GEOMToolsGUI::OnNbIsos() if ( !isOCC ) return; - + OCCViewer_Viewer* vm = dynamic_cast( window->getViewManager()->getViewModel() ); Handle (AIS_InteractiveContext) ic = vm->getAISContext(); - + ic->InitCurrent(); if ( ic->MoreCurrent() ) { Handle(GEOM_AISShape) CurObject = Handle(GEOM_AISShape)::DownCast(ic->Current()); Handle(AIS_Drawer) CurDrawer = CurObject->Attributes(); - + int UIso = CurDrawer->UIsoAspect()->Number(); int VIso = CurDrawer->VIsoAspect()->Number(); - + GEOMToolsGUI_NbIsosDlg * NbIsosDlg = new GEOMToolsGUI_NbIsosDlg( SUIT_Session::session()->activeApplication()->desktop() ); - + NbIsosDlg->setU( UIso ); NbIsosDlg->setV( VIso ); - + if ( NbIsosDlg->exec() ) { SUIT_OverrideCursor(); for(; ic->MoreCurrent(); ic->NextCurrent()) { CurObject = Handle(GEOM_AISShape)::DownCast(ic->Current()); Handle(AIS_Drawer) CurDrawer = CurObject->Attributes(); - + int nbUIso = NbIsosDlg->getU(); int nbVIso = NbIsosDlg->getV(); - + CurDrawer->SetUIsoAspect( new Prs3d_IsoAspect(Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 0.5 , nbUIso) ); CurDrawer->SetVIsoAspect( new Prs3d_IsoAspect(Quantity_NOC_GRAY75, Aspect_TOL_SOLID, 0.5 , nbVIso) ); - + ic->SetLocalAttributes(CurObject, CurDrawer); ic->Redisplay(CurObject); } @@ -343,12 +346,12 @@ void GEOMToolsGUI::OnOpen() useSubItems = true; obj = subobj; } - else + else anIter->Next(); } obj->FindAttribute(anAttr, "AttributePersistentRef"); - - while(useSubItems?anIter->More():!anAttr->_is_nil()) { + + while(useSubItems?anIter->More():!anAttr->_is_nil()) { if(!obj->FindAttribute(anAttr, "AttributeIOR") && obj->FindAttribute(anAttr, "AttributePersistentRef")) { _PTR(SComponent) FComp ( obj->GetFatherComponent() ); @@ -376,7 +379,7 @@ void GEOMToolsGUI::OnOpen() } else { return; } - } + } else { MESSAGE("loadComponentData(): Driver is null"); return; @@ -394,7 +397,7 @@ void GEOMToolsGUI::OnOpen() // SALOMEDS::SComponent_var SC = aStudy->FindComponent("GEOM"); // if (!CORBA::is_nil(SC)) // aStudyBuilder->LoadWith(SC,driver); - } + } } else { MESSAGE("Component is null"); @@ -403,8 +406,8 @@ void GEOMToolsGUI::OnOpen() if(useSubItems) { anIter->Next(); obj.reset( anIter->Value() ); - } - else + } + else anAttr = NULL; } } diff --git a/src/GEOM_I/GEOM_Gen_i.cc b/src/GEOM_I/GEOM_Gen_i.cc index bb5a92348..44d4c23b6 100644 --- a/src/GEOM_I/GEOM_Gen_i.cc +++ b/src/GEOM_I/GEOM_Gen_i.cc @@ -7,7 +7,7 @@ #include "GEOM_Gen_i.hh" #include "GEOM_Object_i.hh" -#include +#include #include "Utils_CorbaException.hxx" #include "OpUtil.hxx" @@ -33,16 +33,16 @@ //============================================================================ // function : GEOM_Gen_i() -// purpose : constructor to be called for servant creation. +// purpose : constructor to be called for servant creation. //============================================================================ GEOM_Gen_i::GEOM_Gen_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, + PortableServer::ObjectId * contId, + const char *instanceName, const char *interfaceName) : Engines_Component_i(orb, poa, contId, instanceName, interfaceName) { - _thisObj = this ; + _thisObj = this; _id = _poa->activate_object(_thisObj); name_service = new SALOME_NamingService(_orb); @@ -88,13 +88,13 @@ char* GEOM_Gen_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, char* GEOM_Gen_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, const char* aLocalPersistentID, CORBA::Boolean isMultiFile, - CORBA::Boolean isASCII) -{ + CORBA::Boolean isASCII) +{ SALOMEDS::Study_var aStudy = theSObject->GetStudy(); Handle(GEOM_Object) anObject = _impl->GetObject(aStudy->StudyId(), const_cast(aLocalPersistentID)); - TCollection_AsciiString anEntry; - TDF_Tool::Entry(anObject->GetEntry(), anEntry); + TCollection_AsciiString anEntry; + TDF_Tool::Entry(anObject->GetEntry(), anEntry); GEOM::GEOM_Object_var obj = GetObject(anObject->GetDocID(), anEntry.ToCString()); CORBA::String_var aPersRefString = _orb->object_to_string(obj); @@ -103,7 +103,7 @@ char* GEOM_Gen_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, //============================================================================ // function : CanPublishInStudy -// purpose : +// purpose : //============================================================================ bool GEOM_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR) { @@ -114,7 +114,7 @@ bool GEOM_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR) //============================================================================ // function : PublishInStudy -// purpose : +// purpose : //============================================================================ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, SALOMEDS::SObject_ptr theSObject, @@ -129,9 +129,9 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, if(aShape->_is_nil()) return aResultSO; SALOMEDS::GenericAttribute_var anAttr; - SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); + SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); - SALOMEDS::SComponent_var aFather = theStudy->FindComponent("GEOM"); + SALOMEDS::SComponent_var aFather = theStudy->FindComponent("GEOM"); if (aFather->_is_nil()) { aFather = aStudyBuilder->NewComponent("GEOM"); anAttr = aStudyBuilder->FindOrCreateAttribute(aFather, "AttributeName"); @@ -142,11 +142,11 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, aStudyBuilder->DefineComponentInstance(aFather, GEOM_Gen::_this()); } if (aFather->_is_nil()) return aResultSO; - + if (CORBA::is_nil(theSObject)) { aResultSO = aStudyBuilder->NewObject(aFather); } else { - if (!theSObject->ReferencedObject(aResultSO)) + if (!theSObject->ReferencedObject(aResultSO)) aResultSO = SALOMEDS::SObject::_duplicate(theSObject); //SRN: Added Aug 24,2004 : for the method AddInStudy with theFather argumenet != NULL //THROW_SALOME_CORBA_EXCEPTION("Publish in study supervision graph error",SALOME::BAD_PARAM); } @@ -157,7 +157,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, anAttr = aStudyBuilder->FindOrCreateAttribute(aResultSO, "AttributePixMap"); SALOMEDS::AttributePixMap_var aPixmap = SALOMEDS::AttributePixMap::_narrow(anAttr); - TCollection_AsciiString aShapeName("Shape_"); + TCollection_AsciiString aShapeName("Shape_"); if ( aShape->GetType() == GEOM_GROUP ) { GEOM::GEOM_IGroupOperations_var anOp = GetIGroupOperations( theStudy->StudyId() ); @@ -206,7 +206,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, } else if ( aShape->GetShapeType() == GEOM::VERTEX ) { aPixmap->SetPixMap( "ICON_OBJBROWSER_VERTEX" ); aShapeName = "Vertex_"; - } + } //if (strlen(theName) == 0) aShapeName += TCollection_AsciiString(aResultSO->Tag()); //else aShapeName = TCollection_AsciiString(strdup(theName)); @@ -221,7 +221,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, do { aNewShapeName = aShapeName + TCollection_AsciiString(++i); obj = theStudy->FindObject( aNewShapeName.ToCString() ); - } + } while ( !obj->_is_nil() ); aShapeName = aNewShapeName; } @@ -239,7 +239,7 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, return aResultSO._retn(); } - + //============================================================================ // function : Save() // purpose : save OCAF/Geom document @@ -276,7 +276,7 @@ SALOMEDS::TMPFile* GEOM_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent, //============================================================================ // function : SaveASCII() // purpose : -//============================================================================ +//============================================================================ SALOMEDS::TMPFile* GEOM_Gen_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent, const char* theURL, bool isMultiFile) { @@ -288,7 +288,7 @@ SALOMEDS::TMPFile* GEOM_Gen_i::SaveASCII(SALOMEDS::SComponent_ptr theComponent, //============================================================================ // function : Load() // purpose : -//============================================================================ +//============================================================================ CORBA::Boolean GEOM_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, const SALOMEDS::TMPFile& theStream, const char* theURL, @@ -327,7 +327,7 @@ CORBA::Boolean GEOM_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, //============================================================================ // function : LoadASCII() // purpose : -//============================================================================ +//============================================================================ CORBA::Boolean GEOM_Gen_i::LoadASCII(SALOMEDS::SComponent_ptr theComponent, const SALOMEDS::TMPFile& theStream, const char* theURL, @@ -377,7 +377,7 @@ SALOMEDS::TMPFile* GEOM_Gen_i::CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA:: if (anObject->_is_nil()) return aStreamFile._retn(); aStreamFile = anObject->GetShapeStream(); - + // Assign an ID the type of GEOM_Object theObjectID = anObject->GetType(); @@ -416,21 +416,21 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::PasteInto(const SALOMEDS::TMPFile& theStream, } catch (Standard_Failure) { return false; } - + // SObject of the created shape is theObject or new Child of Component if theObject == geom component SALOMEDS::SObject_var aNewSO; if (strcmp(theObject->GetFatherComponent()->GetID(),theObject->GetID()) == 0) { aNewSO = aStudyBuilder->NewObject(theObject); } else aNewSO = SALOMEDS::SObject::_duplicate(theObject); - - //Create a new GEOM_Object - Handle(GEOM_Object) anObj = _impl->AddObject(aNewSO->GetStudy()->StudyId(), theObjectID); - Handle(GEOM_Function) aFunction = anObj->AddFunction(GEOMImpl_CopyDriver::GetID(), COPY_WITHOUT_REF); + + //Create a new GEOM_Object + Handle(GEOM_Object) anObj = _impl->AddObject(aNewSO->GetStudy()->StudyId(), theObjectID); + Handle(GEOM_Function) aFunction = anObj->AddFunction(GEOMImpl_CopyDriver::GetID(), COPY_WITHOUT_REF); aFunction->SetValue(aTopology); - TCollection_AsciiString anEntry; - TDF_Tool::Entry(anObj->GetEntry(), anEntry); + TCollection_AsciiString anEntry; + TDF_Tool::Entry(anObj->GetEntry(), anEntry); GEOM::GEOM_Object_var obj = GetObject(anObj->GetDocID(), anEntry.ToCString()); // Add IORAttribute to the Study and set IOR of the created GEOM_Object to it @@ -459,26 +459,26 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::AddInStudy(SALOMEDS::Study_ptr theStudy, GEOM: { SALOMEDS::SObject_var aResultSO; if(theObject->_is_nil() || theStudy->_is_nil()) return aResultSO; - - SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); + + SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); char* IOR; if(!theFather->_is_nil()) { - IOR = _orb->object_to_string(theFather); + IOR = _orb->object_to_string(theFather); SALOMEDS::SObject_var aFatherSO = theStudy->FindObjectIOR(IOR); if(aFatherSO->_is_nil()) return aResultSO._retn(); aResultSO = aStudyBuilder->NewObject(aFatherSO); //aStudyBuilder->Addreference(aResultSO, aResultSO); - } + } aResultSO = PublishInStudy(theStudy, aResultSO, theObject, theName); if(aResultSO->_is_nil()) return aResultSO._retn(); GEOM::ListOfGO_var aList = theObject->GetDependency(); - Standard_Integer aLength = aList->length(); + Standard_Integer aLength = aList->length(); if(aLength < 1) return aResultSO._retn(); - //Publish the arguments + //Publish the arguments for(Standard_Integer i = 0; i< aLength; i++) { GEOM::GEOM_Object_var anObject = aList[i]; if(anObject->_is_nil()) continue; @@ -488,18 +488,18 @@ SALOMEDS::SObject_ptr GEOM_Gen_i::AddInStudy(SALOMEDS::Study_ptr theStudy, GEOM: SALOMEDS::SObject_var aSubSO = aStudyBuilder->NewObject(aResultSO); aStudyBuilder->Addreference(aSubSO, aSO); } - + return aResultSO._retn(); } //============================================================================ -// function : register() +// function : register() // purpose : register 'name' in 'name_service' //============================================================================ void GEOM_Gen_i::register_name(char * name) { GEOM::GEOM_Gen_ptr g = GEOM::GEOM_Gen::_narrow(_this()); - name_service->Register(g, strdup(name)); + name_service->Register(g, strdup(name)); } //============================================================================ @@ -522,7 +522,7 @@ void GEOM_Gen_i::Redo(CORBA::Long theStudyID) //============================================================================ // function : GetIBasicOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_IBasicOperations_ptr GEOM_Gen_i::GetIBasicOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -530,19 +530,19 @@ GEOM::GEOM_IBasicOperations_ptr GEOM_Gen_i::GetIBasicOperations(CORBA::Long theS Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetIBasicOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_IBasicOperations_i* aServant = new GEOM_IBasicOperations_i(_poa, engine, _impl->GetIBasicOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_IBasicOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetITransformOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_ITransformOperations_ptr GEOM_Gen_i::GetITransformOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -550,19 +550,19 @@ GEOM::GEOM_ITransformOperations_ptr GEOM_Gen_i::GetITransformOperations(CORBA::L Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetITransformOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_ITransformOperations_i* aServant = new GEOM_ITransformOperations_i(_poa, engine, _impl->GetITransformOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_ITransformOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetI3DPrimOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_I3DPrimOperations_ptr GEOM_Gen_i::GetI3DPrimOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -570,19 +570,19 @@ GEOM::GEOM_I3DPrimOperations_ptr GEOM_Gen_i::GetI3DPrimOperations(CORBA::Long th Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetI3DPrimOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_I3DPrimOperations_i* aServant = new GEOM_I3DPrimOperations_i(_poa, engine, _impl->GetI3DPrimOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_I3DPrimOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetIShapesOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_IShapesOperations_ptr GEOM_Gen_i::GetIShapesOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -590,19 +590,19 @@ GEOM::GEOM_IShapesOperations_ptr GEOM_Gen_i::GetIShapesOperations(CORBA::Long th Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetIShapesOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_IShapesOperations_i* aServant = new GEOM_IShapesOperations_i(_poa, engine, _impl->GetIShapesOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_IShapesOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetIBlocksOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_IBlocksOperations_ptr GEOM_Gen_i::GetIBlocksOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -610,19 +610,19 @@ GEOM::GEOM_IBlocksOperations_ptr GEOM_Gen_i::GetIBlocksOperations(CORBA::Long th Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetIBlocksOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_IBlocksOperations_i* aServant = new GEOM_IBlocksOperations_i(_poa, engine, _impl->GetIBlocksOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_IBlocksOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetIBooleanOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_IBooleanOperations_ptr GEOM_Gen_i::GetIBooleanOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -630,19 +630,19 @@ GEOM::GEOM_IBooleanOperations_ptr GEOM_Gen_i::GetIBooleanOperations(CORBA::Long Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetIBooleanOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_IBooleanOperations_i* aServant = new GEOM_IBooleanOperations_i(_poa, engine, _impl->GetIBooleanOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_IBooleanOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetICurvesOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_ICurvesOperations_ptr GEOM_Gen_i::GetICurvesOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -650,19 +650,19 @@ GEOM::GEOM_ICurvesOperations_ptr GEOM_Gen_i::GetICurvesOperations(CORBA::Long th Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetICurvesOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_ICurvesOperations_i* aServant = new GEOM_ICurvesOperations_i(_poa, engine, _impl->GetICurvesOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_ICurvesOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetILocalOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_ILocalOperations_ptr GEOM_Gen_i::GetILocalOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -670,19 +670,19 @@ GEOM::GEOM_ILocalOperations_ptr GEOM_Gen_i::GetILocalOperations(CORBA::Long theS Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetILocalOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_ILocalOperations_i* aServant = new GEOM_ILocalOperations_i(_poa, engine, _impl->GetILocalOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_ILocalOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetIHealingOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_IHealingOperations_ptr GEOM_Gen_i::GetIHealingOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -690,19 +690,19 @@ GEOM::GEOM_IHealingOperations_ptr GEOM_Gen_i::GetIHealingOperations(CORBA::Long Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::IHealingOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_IHealingOperations_i* aServant = new GEOM_IHealingOperations_i(_poa, engine, _impl->GetIHealingOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_IHealingOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetIInsertOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_IInsertOperations_ptr GEOM_Gen_i::GetIInsertOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -710,19 +710,19 @@ GEOM::GEOM_IInsertOperations_ptr GEOM_Gen_i::GetIInsertOperations(CORBA::Long th Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetIInsertOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_IInsertOperations_i* aServant = new GEOM_IInsertOperations_i(_poa, engine, _impl->GetIInsertOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_IInsertOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetIMeasureOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_IMeasureOperations_ptr GEOM_Gen_i::GetIMeasureOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -730,19 +730,19 @@ GEOM::GEOM_IMeasureOperations_ptr GEOM_Gen_i::GetIMeasureOperations(CORBA::Long Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetIMeasureOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_IMeasureOperations_i* aServant = new GEOM_IMeasureOperations_i(_poa, engine, _impl->GetIMeasureOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_IMeasureOperations_var operations = aServant->_this(); return operations._retn(); } //============================================================================ // function : GetIGroupOperations -// purpose : +// purpose : //============================================================================ GEOM::GEOM_IGroupOperations_ptr GEOM_Gen_i::GetIGroupOperations(CORBA::Long theStudyID) throw ( SALOME::SALOME_Exception ) @@ -750,12 +750,12 @@ GEOM::GEOM_IGroupOperations_ptr GEOM_Gen_i::GetIGroupOperations(CORBA::Long theS Unexpect aCatch(SALOME_SalomeException); MESSAGE( "GEOM_Gen_i::GetIGroupOperations" ); - GEOM::GEOM_Gen_ptr engine = _this(); + GEOM::GEOM_Gen_ptr engine = _this(); GEOM_IGroupOperations_i* aServant = new GEOM_IGroupOperations_i(_poa, engine, _impl->GetIGroupOperations(theStudyID)); - // activate the CORBA servant + // activate the CORBA servant GEOM::GEOM_IGroupOperations_var operations = aServant->_this(); return operations._retn(); } @@ -771,7 +771,7 @@ GEOM::GEOM_Object_ptr GEOM_Gen_i::AddSubShape (GEOM::GEOM_Object_ptr theMainShap if(theMainShape == NULL || theIndices.length() < 1) return GEOM::GEOM_Object::_nil(); Handle(GEOM_Object) aMainsShape = _impl->GetObject(theMainShape->GetStudyID(), theMainShape->GetEntry()); if (aMainsShape.IsNull()) return GEOM::GEOM_Object::_nil(); - + Handle(TColStd_HArray1OfInteger) anArray = new TColStd_HArray1OfInteger(1, theIndices.length()); for(Standard_Integer i = 0; iSetValue(i+1, theIndices[i]); @@ -788,13 +788,13 @@ GEOM::GEOM_Object_ptr GEOM_Gen_i::AddSubShape (GEOM::GEOM_Object_ptr theMainShap * RemoveObject */ //============================================================================= -void GEOM_Gen_i::RemoveObject(GEOM::GEOM_Object_ptr theObject) +void GEOM_Gen_i::RemoveObject(GEOM::GEOM_Object_ptr theObject) { Handle(GEOM_Object) anObject = _impl->GetObject(theObject->GetStudyID(), theObject->GetEntry()); if (anObject.IsNull()) return; _impl->RemoveObject(anObject); - return; -} + return; +} //================================================================================= @@ -815,34 +815,35 @@ GEOM::GEOM_Object_ptr GEOM_Gen_i::GetIORFromString(const char* stringIOR) { if(strcmp(stringIOR,"") != 0){ CORBA::Object_var anObject = _orb->string_to_object(stringIOR); if(!CORBA::is_nil(anObject)) - aGeomObject = GEOM::GEOM_Object::_narrow(anObject.in()) ; + aGeomObject = GEOM::GEOM_Object::_narrow(anObject.in()); } - return aGeomObject._retn() ; + return aGeomObject._retn(); } //================================================================================= // function : GetObject() -// purpose : +// purpose : //================================================================================= -GEOM::GEOM_Object_ptr GEOM_Gen_i::GetObject(CORBA::Long theStudyID, const char* theEntry) +GEOM::GEOM_Object_ptr GEOM_Gen_i::GetObject (CORBA::Long theStudyID, const char* theEntry) { GEOM::GEOM_Object_var obj; Handle(GEOM_Object) handle_object = _impl->GetObject(theStudyID, (char*)theEntry); - if(handle_object.IsNull()) return NULL; + if (handle_object.IsNull()) return NULL; + TCollection_AsciiString stringIOR = handle_object->GetIOR(); - if(stringIOR.Length() > 1) { + if (stringIOR.Length() > 1) { CORBA::Object_var corba_object = _orb->string_to_object(stringIOR.ToCString()); - if(!CORBA::is_nil(corba_object)) obj = GEOM::GEOM_Object::_narrow(corba_object); - return obj._retn(); - } + if (!CORBA::is_nil(corba_object)) obj = GEOM::GEOM_Object::_narrow(corba_object); + return obj._retn(); + } + + GEOM::GEOM_Gen_ptr engine = _this(); + GEOM_Object_i* servant = new GEOM_Object_i (_poa, engine, handle_object); - GEOM::GEOM_Gen_ptr engine = _this(); - GEOM_Object_i* servant = new GEOM_Object_i(_poa, engine, handle_object); - obj = servant->_this(); - stringIOR = _orb->object_to_string(obj); + stringIOR = _orb->object_to_string(obj); handle_object->SetIOR(stringIOR); - return obj._retn(); + return obj._retn(); } @@ -852,14 +853,13 @@ GEOM::GEOM_Object_ptr GEOM_Gen_i::GetObject(CORBA::Long theStudyID, const char* extern "C" { PortableServer::ObjectId * GEOMEngine_factory(CORBA::ORB_ptr orb, - PortableServer::POA_ptr poa, + PortableServer::POA_ptr poa, PortableServer::ObjectId * contId, - const char *instanceName, + const char *instanceName, const char * interfaceName) { GEOM_Gen_i * myGEOM_Gen_i = new GEOM_Gen_i(orb, poa, contId, instanceName, interfaceName); - myGEOM_Gen_i->register_name("/myGEOM_Gen"); // NRI : 11/07/2002 : Add for Supervision example - return myGEOM_Gen_i->getId() ; + myGEOM_Gen_i->register_name("/myGEOM_Gen"); // NRI : 11/07/2002 : Add for Supervision example + return myGEOM_Gen_i->getId(); } } - diff --git a/src/GEOM_I/GEOM_Gen_i.hh b/src/GEOM_I/GEOM_Gen_i.hh index e0b09d6b9..1111c11ba 100644 --- a/src/GEOM_I/GEOM_Gen_i.hh +++ b/src/GEOM_I/GEOM_Gen_i.hh @@ -6,16 +6,14 @@ // IDL headers #include #include CORBA_SERVER_HEADER(GEOM_Gen) -#include CORBA_SERVER_HEADER(SALOMEDS) -#include CORBA_SERVER_HEADER(SALOMEDS_Attributes) +#include CORBA_CLIENT_HEADER(SALOMEDS) +#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) -#include "SALOME_Component_i.hxx" +#include "SALOME_Component_i.hxx" #include "SALOME_NamingService.hxx" -//#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC - #include "GEOM_IBasicOperations_i.hh" #include "GEOM_ITransformOperations_i.hh" #include "GEOM_I3DPrimOperations_i.hh" @@ -29,6 +27,8 @@ #include "GEOM_IMeasureOperations_i.hh" #include "GEOM_IGroupOperations_i.hh" +//#include // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC + //===================================================================== // GEOM_Gen_i : class definition @@ -40,12 +40,13 @@ class GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Comp //-----------------------------------------------------------------------// // Constructor / Destructor // //-----------------------------------------------------------------------// - // constructor to be called for servant creation. + + // constructor to be called for servant creation. GEOM_Gen_i(); GEOM_Gen_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, - PortableServer::ObjectId * contId, - const char *instanceName, + PortableServer::ObjectId * contId, + const char *instanceName, const char *interfaceName); // destructor, doing nothing (for now) @@ -57,7 +58,7 @@ class GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Comp //-----------------------------------------------------------------------// // Inherited methods from SALOMEDS::Driver // - //-----------------------------------------------------------------------// + //-----------------------------------------------------------------------// SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent, const char* theURL, @@ -66,7 +67,7 @@ class GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Comp SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent, const char* theURL, bool isMultiFile); - + CORBA::Boolean Load(SALOMEDS::SComponent_ptr theComponent, const SALOMEDS::TMPFile& theStream, const char* theURL, @@ -103,13 +104,18 @@ class GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Comp CORBA::Long theObjectID, SALOMEDS::SObject_ptr theObject); - //Adds theObject in the study with a name = theName, if theFather is not null the object is placed under theFather - SALOMEDS::SObject_ptr AddInStudy(SALOMEDS::Study_ptr theStudy, GEOM::GEOM_Object_ptr theObject, const char* theName, GEOM::GEOM_Object_ptr theFather); + /*! \brief Adds theObject in the study with a name = theName, if + * theFather is not null the object is placed under theFather + */ + SALOMEDS::SObject_ptr AddInStudy (SALOMEDS::Study_ptr theStudy, + GEOM::GEOM_Object_ptr theObject, + const char* theName, + GEOM::GEOM_Object_ptr theFather); //-----------------------------------------------------------------------// - // Transaction methods // - //-----------------------------------------------------------------------// - + // Transaction methods // + //-----------------------------------------------------------------------// + //Undos one transaction in the document associated with theStudyID virtual void Undo(CORBA::Long theStudyID); @@ -118,12 +124,12 @@ class GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Comp //-----------------------------------------------------------------------// // Operations methods // - //-----------------------------------------------------------------------// + //-----------------------------------------------------------------------// //Returns a pointer to BasicOperations interface virtual GEOM::GEOM_IBasicOperations_ptr GetIBasicOperations (CORBA::Long theStudyID) throw (SALOME::SALOME_Exception); - + //Returns a pointer to TransformOperations interface virtual GEOM::GEOM_ITransformOperations_ptr GetITransformOperations (CORBA::Long theStudyID) throw (SALOME::SALOME_Exception); @@ -169,7 +175,8 @@ class GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Comp throw (SALOME::SALOME_Exception); //Adds a new sub shape - virtual GEOM::GEOM_Object_ptr AddSubShape(GEOM::GEOM_Object_ptr theMainShape, const GEOM::ListOfLong& theIndices); + virtual GEOM::GEOM_Object_ptr AddSubShape (GEOM::GEOM_Object_ptr theMainShape, + const GEOM::ListOfLong& theIndices); virtual void RemoveObject(GEOM::GEOM_Object_ptr theObject); @@ -177,25 +184,25 @@ class GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual public Engines_Comp virtual GEOM::GEOM_Object_ptr GetIORFromString(const char* stringIOR); - virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy, - CORBA::Boolean isPublished, + virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy, + CORBA::Boolean isPublished, CORBA::Boolean& isValidScript); char* GetDumpName (const char* theStudyEntry); GEOM::string_array* GetAllDumpNames(); - //********************************************************************************************************// - // Internal methods - //********************************************************************************************************// + //-----------------------------------------------------------------------// + // Internal methods // + //-----------------------------------------------------------------------// + virtual GEOM::GEOM_Object_ptr GetObject(CORBA::Long theStudyID, const char* theEntry); private: - + ::GEOMImpl_Gen* _impl; SALOME_NamingService * name_service; - char * _name; - + char * _name; }; -#endif +#endif diff --git a/src/GEOM_I/GEOM_ICurvesOperations_i.cc b/src/GEOM_I/GEOM_ICurvesOperations_i.cc index d8f185ece..6ae20ca13 100644 --- a/src/GEOM_I/GEOM_ICurvesOperations_i.cc +++ b/src/GEOM_I/GEOM_ICurvesOperations_i.cc @@ -36,7 +36,7 @@ GEOM_ICurvesOperations_i::~GEOM_ICurvesOperations_i() /*! * MakeCirclePntVecR */ -//============================================================================= +//============================================================================= GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCirclePntVecR (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, CORBA::Double theR) @@ -69,7 +69,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCirclePntVecR /*! * MakeCircleThreePnt */ -//============================================================================= +//============================================================================= GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCircleThreePnt (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2, GEOM::GEOM_Object_ptr thePnt3) @@ -104,7 +104,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeCircleThreePnt /*! * MakeEllipse */ -//============================================================================= +//============================================================================= GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipse (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, CORBA::Double theRMajor, double theRMinor) @@ -137,7 +137,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeEllipse /*! * MakeArc */ -//============================================================================= +//============================================================================= GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeArc (GEOM::GEOM_Object_ptr thePnt1, GEOM::GEOM_Object_ptr thePnt2, @@ -173,7 +173,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeArc /*! * MakePolyline */ -//============================================================================= +//============================================================================= GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakePolyline (const GEOM::ListOfGO& thePoints) { @@ -209,7 +209,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakePolyline /*! * MakeSplineBezier */ -//============================================================================= +//============================================================================= GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSplineBezier (const GEOM::ListOfGO& thePoints) { @@ -245,7 +245,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSplineBezier /*! * MakeSplineInterpolation */ -//============================================================================= +//============================================================================= GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSplineInterpolation (const GEOM::ListOfGO& thePoints) { @@ -281,10 +281,11 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSplineInterpolation /*! * MakeSketcher */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcher (const char* theCommand, const GEOM::ListOfDouble& theWorkingPlane) +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcher + (const char* theCommand, const GEOM::ListOfDouble& theWorkingPlane) { - GEOM::GEOM_Object_var aGEOMObject; + GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_nil(); //Set a not done flag GetOperations()->SetNotDone(); @@ -297,9 +298,10 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcher (const char* theCom // Make Sketcher Handle(GEOM_Object) anObject = - GetOperations()->MakeSketcher(theCommand, aWorkingPlane); + GetOperations()->MakeSketcher(strdup(theCommand), aWorkingPlane); if (!GetOperations()->IsDone() || anObject.IsNull()) - return aGEOMObject._retn(); + //return aGEOMObject._retn(); + return GEOM::GEOM_Object::_nil(); return GetObject(anObject); } @@ -309,10 +311,11 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcher (const char* theCom /*! * MakeSketcherOnPlane */ -//============================================================================= -GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcherOnPlane (const char* theCommand, GEOM::GEOM_Object_ptr theWorkingPlane) +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcherOnPlane + (const char* theCommand, GEOM::GEOM_Object_ptr theWorkingPlane) { - GEOM::GEOM_Object_var aGEOMObject; + GEOM::GEOM_Object_var aGEOMObject = GEOM::GEOM_Object::_nil(); //Set a not done flag GetOperations()->SetNotDone(); @@ -322,7 +325,7 @@ GEOM::GEOM_Object_ptr GEOM_ICurvesOperations_i::MakeSketcherOnPlane (const char* // Make Sketcher Handle(GEOM_Object) anObject = - GetOperations()->MakeSketcherOnPlane(theCommand, aWorkingPlane); + GetOperations()->MakeSketcherOnPlane(strdup(theCommand), aWorkingPlane); if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); diff --git a/src/GEOM_I/GEOM_Object_i.hh b/src/GEOM_I/GEOM_Object_i.hh index 06bea0b09..3191df9ad 100644 --- a/src/GEOM_I/GEOM_Object_i.hh +++ b/src/GEOM_I/GEOM_Object_i.hh @@ -4,12 +4,13 @@ #include - -#include CORBA_SERVER_HEADER(SALOMEDS) +#include CORBA_CLIENT_HEADER(SALOMEDS) #include CORBA_SERVER_HEADER(GEOM_Gen) #include "SALOME_GenericObj_i.hh" + #include "GEOM_Object.hxx" + #include class GEOM_Object_i : public virtual POA_GEOM::GEOM_Object, public virtual SALOME::GenericObj_i @@ -17,22 +18,22 @@ class GEOM_Object_i : public virtual POA_GEOM::GEOM_Object, public virtual SALOM public: GEOM_Object_i(PortableServer::POA_ptr thePOA, GEOM::GEOM_Gen_ptr theEngine, Handle(GEOM_Object) theImpl); ~GEOM_Object_i(); - + virtual char* GetEntry(); - + virtual CORBA::Long GetStudyID(); - + virtual CORBA::Long GetType(); - virtual GEOM::shape_type GetShapeType(); + virtual GEOM::shape_type GetShapeType(); virtual void SetName(const char* theName); - virtual char* GetName(); + virtual char* GetName(); virtual void SetStudyEntry(const char* theEntry); - virtual char* GetStudyEntry(); + virtual char* GetStudyEntry(); virtual GEOM::ListOfGO* GetDependency(); @@ -44,18 +45,18 @@ class GEOM_Object_i : public virtual POA_GEOM::GEOM_Object, public virtual SALOM virtual bool IsMainShape() { return _impl->IsMainShape(); } - virtual GEOM::ListOfLong* GetSubShapeIndices(); - + virtual GEOM::ListOfLong* GetSubShapeIndices(); + virtual GEOM::GEOM_Object_ptr GetMainShape(); - virtual bool IsShape(); + virtual bool IsShape(); Handle(GEOM_Object) GetImpl() { return _impl; } private: - GEOM::GEOM_Gen_ptr _engine; - Handle(GEOM_Object) _impl; + GEOM::GEOM_Gen_ptr _engine; + Handle(GEOM_Object) _impl; TopoDS_Shape _geom; }; diff --git a/src/GEOM_I/Makefile.in b/src/GEOM_I/Makefile.in index ec731fbd2..ec0ab37e5 100644 --- a/src/GEOM_I/Makefile.in +++ b/src/GEOM_I/Makefile.in @@ -54,9 +54,11 @@ LIB_SRC = \ GEOM_Gen_i.cc \ GEOM_DumpPython.cc +# SALOME_Component.idl +LIB_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl #\ + #SALOME_Exception.idl SALOME_GenericObj.idl -LIB_SERVER_IDL = SALOME_Component.idl SALOMEDS.idl SALOME_Exception.idl \ - GEOM_Gen.idl SALOME_GenericObj.idl +LIB_SERVER_IDL = GEOM_Gen.idl # Executables targets BIN = @@ -84,7 +86,9 @@ EXPORT_HEADERS = GEOM_Object_i.hh \ # additionnal information to compil and link file CPPFLAGS += $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome CXXFLAGS += $(OCC_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome -LDFLAGS += -lTOOLSDS -lSalomeNS -lSalomeContainer -lGEOMArchimede -lGEOMbasic -lGEOMimpl $(CAS_LDPATH) -lTKIGES -lTKSTEP -lTKFillet -lTKOffset -lGEOMSketcher -L${KERNEL_ROOT_DIR}/lib/salome -lSalomeGenericObj +LDFLAGS += -lGEOMArchimede -lGEOMbasic -lGEOMimpl -lGEOMSketcher \ + $(CAS_LDPATH) -lTKIGES -lTKSTEP -lTKFillet -lTKOffset \ + -L${KERNEL_ROOT_DIR}/lib/salome -lSalomeNS -lSalomeContainer -lSalomeGenericObj # additional file to be cleaned MOSTLYCLEAN = @@ -92,4 +96,3 @@ CLEAN = DISTCLEAN = @CONCLUDE@ - -- 2.30.2