X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Utils.h;h=5b2e0b89ba662fb1caa7aa102767b8e7f04a880c;hp=ab468bf32e2713ea9632ac4def9771df4fa23c98;hb=ad3cb4c93852dbc834d7075c087bbc749197454b;hpb=e4737e85f0da6d3f90fd08f6be1c2825195fe16f diff --git a/src/SMESHGUI/SMESHGUI_Utils.h b/src/SMESHGUI/SMESHGUI_Utils.h index ab468bf32..5b2e0b89b 100644 --- a/src/SMESHGUI/SMESHGUI_Utils.h +++ b/src/SMESHGUI/SMESHGUI_Utils.h @@ -1,99 +1,220 @@ -// 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 - -#ifndef SMESHGUI_Utils_HeaderFile -#define SMESHGUI_Utils_HeaderFile - -#include "SALOME_InteractiveObject.hxx" - -class QString; - -class QAD_Study; -class QAD_StudyFrame; -class SALOME_Selection; - -#include "SALOMEconfig.h" -#include CORBA_CLIENT_HEADER(SALOMEDS) +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 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, or (at your option) any later version. +// +// 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.com +// + +// SMESH SMESHGUI : GUI for SMESH component +// File : SMESHGUI_Utils.h +// Author : Open CASCADE S.A.S. +// +#ifndef SMESHGUI_UTILS_H +#define SMESHGUI_UTILS_H + +// SMESH includes +#include "SMESH_SMESHGUI.hxx" + +// CORBA includes +#include + +// SALOME KERNEL includes +#include +#include + +// SALOME GUI includes +#include +#include + +//OCC includes +#include + +#include +#include CORBA_CLIENT_HEADER(SMESH_Mesh) + +class SUIT_ViewWindow; +class SUIT_Desktop; +class SUIT_Study; +class SUIT_ResourceMgr; + +class CAM_Module; + +class SALOMEDSClient_Study; +class SALOMEDSClient_SObject; + +class SalomeApp_Study; +class SalomeApp_Module; +class LightApp_SelectionMgr; + +class SMDS_MeshFace; + +namespace SMESH +{ +SMESHGUI_EXPORT + SUIT_Desktop* + GetDesktop( const CAM_Module* ); + +SMESHGUI_EXPORT + LightApp_SelectionMgr* + GetSelectionMgr( const SalomeApp_Module* ); + +SMESHGUI_EXPORT + SalomeApp_Study* + GetAppStudy( const CAM_Module* ); + +SMESHGUI_EXPORT + SUIT_ResourceMgr* + GetResourceMgr( const SalomeApp_Module* ); + +SMESHGUI_EXPORT + _PTR(Study) + GetCStudy( const SalomeApp_Study* ); +SMESHGUI_EXPORT + CORBA::Object_var DataOwnerToObject( const LightApp_DataOwnerPtr& ); -namespace SMESH{ + template typename TInterface::_var_type + DataOwnerToInterface( const LightApp_DataOwnerPtr& theDataOwner ) + { + CORBA::Object_var anObj = DataOwnerToObject(theDataOwner); + if(!CORBA::is_nil(anObj)) + return TInterface::_narrow(anObj); + return TInterface::_nil(); + } - QAD_Study* GetActiveStudy(); +SMESHGUI_EXPORT + SUIT_Study* GetActiveStudy(); - QAD_StudyFrame* GetActiveStudyFrame(); +SMESHGUI_EXPORT + SUIT_ViewWindow* GetActiveWindow(); - SALOMEDS::Study_var GetActiveStudyDocument(); +SMESHGUI_EXPORT + _PTR(Study) GetActiveStudyDocument(); - SALOMEDS::SObject_var FindSObject(CORBA::Object_ptr theObject); +SMESHGUI_EXPORT + _PTR(SObject) FindSObject( CORBA::Object_ptr ); +SMESHGUI_EXPORT + void SetName( _PTR(SObject), const QString& ); - void SetName(SALOMEDS::SObject_ptr theSObject, const char* theName); - void SetValue(SALOMEDS::SObject_ptr theSObject, const char* theValue); +SMESHGUI_EXPORT + void SetValue( _PTR(SObject), const QString& ); + void setFileType( _PTR(SObject), const QString& ); + void setFileName( _PTR(SObject), const QString& ); +SMESHGUI_EXPORT + CORBA::Object_var SObjectToObject( _PTR(SObject), + _PTR(Study) ); - CORBA::Object_var SObjectToObject(SALOMEDS::SObject_ptr theSObject, - SALOMEDS::Study_ptr theStudy); - - CORBA::Object_var SObjectToObject(SALOMEDS::SObject_ptr theSObject); - +SMESHGUI_EXPORT + CORBA::Object_var SObjectToObject( _PTR(SObject) ); template typename TInterface::_var_type - SObjectToInterface(SALOMEDS::SObject_ptr theSObject) + SObjectToInterface( _PTR(SObject) theSObject ) { CORBA::Object_var anObj = SObjectToObject(theSObject); if(!CORBA::is_nil(anObj)) - return TInterface::_narrow(anObj); + return TInterface::_narrow(anObj); return TInterface::_nil(); } - - CORBA::Object_var IObjectToObject(const Handle(SALOME_InteractiveObject)& theIO); +SMESHGUI_EXPORT + _PTR(SObject) ObjectToSObject( CORBA::Object_ptr ); + +SMESHGUI_EXPORT + CORBA::Object_var IObjectToObject( const Handle(SALOME_InteractiveObject)& ); template typename TInterface::_var_type - IObjectToInterface(const Handle(SALOME_InteractiveObject)& theIO) + IObjectToInterface( const Handle(SALOME_InteractiveObject)& theIO ) { CORBA::Object_var anObj = IObjectToObject(theIO); if(!CORBA::is_nil(anObj)) - return TInterface::_narrow(anObj); + return TInterface::_narrow(anObj); return TInterface::_nil(); } - - CORBA::Object_var IORToObject(const char* theIOR); +SMESHGUI_EXPORT + CORBA::Object_var IORToObject( const QString& ); template typename TInterface::_var_type - IORToInterface(const char* theIOR) + IORToInterface( const QString& theIOR ) { - CORBA::Object_var anObj = IORToObject(theIOR); - if(!CORBA::is_nil(anObj)) - return TInterface::_narrow(anObj); + CORBA::Object_var anObj = IORToObject( theIOR ); + if ( !CORBA::is_nil( anObj ) ) + return TInterface::_narrow( anObj ); return TInterface::_nil(); } - - - int GetNameOfSelectedIObjects(SALOME_Selection* theSel, QString& theName); - - SALOMEDS::SObject_var GetMeshOrSubmesh(SALOMEDS::SObject_ptr theSObject); - - void ModifiedMesh(SALOMEDS::SObject_ptr theSObject, bool theIsRight); +SMESHGUI_EXPORT + int GetNameOfSelectedIObjects( LightApp_SelectionMgr*, QString& ); + +SMESHGUI_EXPORT + _PTR(SObject) GetMeshOrSubmesh( _PTR(SObject) ); + +SMESHGUI_EXPORT + void ModifiedMesh( _PTR(SObject), bool, bool = false ); + +SMESHGUI_EXPORT + void ShowHelpFile( const QString& ); + + /*! + * \brief Return the normal to a face + * \param theFace - input face + * \retval gp_XYZ - normal to a face + */ +SMESHGUI_EXPORT + gp_XYZ getNormale( const SMDS_MeshFace* theFace ); + + + // type to use instead of SMESH_IDSource_var for automatic UnRegister() + typedef SALOME::GenericObj_wrap IDSource_wrap; + + /*! + * \brief Class useful to convert a string returned from a CORBA call + * to other string types w/o memory leak. + * + * Usage (of instantiations): QString s = toQStr( objVar->GetName() ); + * std::string ss = toStdStr( objVar->GetName() ); + */ + template < class _STRING > + class toStrT : public _STRING { + CORBA::String_var myStr; + public: + toStrT( char* s ): _STRING( s ), myStr(s) + {} + operator const char*() const + { return myStr.in(); } + }; + // Instantiations: + struct toQStr : public toStrT< QString > { + toQStr( char* s ): toStrT< QString >(s) {} + }; + struct toStdStr : public toStrT< std::string > { + toStdStr( char* s ): toStrT< std::string >(s) {} + }; + + QString fromUtf8( const char* txt ); + QString fromUtf8( const std::string& txt ); + struct toUtf8: public std::string + { + toUtf8( const QString& txt ); + operator const char*() const { return c_str(); } + }; } - -#endif +#endif // SMESHGUI_UTILS_H