X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Utils.h;h=90270f8abce44ac26fb7892a4960adf7a0103983;hp=83278e4a5018a462ff05cfb44c8ac68f385c0ecd;hb=HEAD;hpb=81a502af8470190be359d6491a20796dbad5bb97 diff --git a/src/SMESHGUI/SMESHGUI_Utils.h b/src/SMESHGUI/SMESHGUI_Utils.h index 83278e4a5..40844ae33 100644 --- a/src/SMESHGUI/SMESHGUI_Utils.h +++ b/src/SMESHGUI/SMESHGUI_Utils.h @@ -1,32 +1,51 @@ -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // -// 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. +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// 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. +// 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. // -// 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 +// 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. // -// 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.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 -#ifndef SMESHGUI_Utils_HeaderFile -#define SMESHGUI_Utils_HeaderFile +// SMESH includes +#include "SMESH_SMESHGUI.hxx" -#include +// CORBA includes +#include -#include "SALOMEDSClient_definitions.hxx" -#include "SALOME_InteractiveObject.hxx" -#include "LightApp_DataOwner.h" +// SALOME KERNEL includes +#include +#include -class QString; +// SALOME GUI includes +#include +#include + +//OCC includes +#include + +#include +#include CORBA_CLIENT_HEADER(SMESH_Mesh) class SUIT_ViewWindow; class SUIT_Desktop; @@ -42,89 +61,164 @@ class SalomeApp_Study; class SalomeApp_Module; class LightApp_SelectionMgr; -namespace SMESH { +class SMDS_MeshFace; +namespace SMESH +{ +SMESHGUI_EXPORT SUIT_Desktop* - GetDesktop(const CAM_Module* theModule); + GetDesktop( const CAM_Module* ); +SMESHGUI_EXPORT LightApp_SelectionMgr* - GetSelectionMgr(const SalomeApp_Module* theModule); + GetSelectionMgr( const SalomeApp_Module* ); +SMESHGUI_EXPORT SalomeApp_Study* - GetAppStudy(const CAM_Module* theModule); + GetAppStudy( const CAM_Module* ); +SMESHGUI_EXPORT SUIT_ResourceMgr* GetResourceMgr( const SalomeApp_Module* ); - - _PTR(Study) - GetCStudy(const SalomeApp_Study* theStudy); - CORBA::Object_var DataOwnerToObject(const LightApp_DataOwnerPtr& theOwner); +SMESHGUI_EXPORT + CORBA::Object_var DataOwnerToObject( const LightApp_DataOwnerPtr& ); template typename TInterface::_var_type - DataOwnerToInterface(const LightApp_DataOwnerPtr& theDataOwner) + DataOwnerToInterface( const LightApp_DataOwnerPtr& theDataOwner ) { CORBA::Object_var anObj = DataOwnerToObject(theDataOwner); if(!CORBA::is_nil(anObj)) - return TInterface::_narrow(anObj); + return TInterface::_narrow(anObj); return TInterface::_nil(); } - +SMESHGUI_EXPORT SUIT_Study* GetActiveStudy(); +SMESHGUI_EXPORT SUIT_ViewWindow* GetActiveWindow(); - _PTR(Study) GetActiveStudyDocument(); +SMESHGUI_EXPORT + _PTR(Study) getStudy(); - _PTR(SObject) FindSObject(CORBA::Object_ptr theObject); +SMESHGUI_EXPORT + _PTR(SObject) FindSObject( CORBA::Object_ptr ); - void SetName (_PTR(SObject) theSObject, const char* theName); - void SetValue (_PTR(SObject) theSObject, const char* theValue); +SMESHGUI_EXPORT + void SetName( _PTR(SObject), const QString& name ); - CORBA::Object_var SObjectToObject (_PTR(SObject) theSObject, - _PTR(Study) theStudy); +SMESHGUI_EXPORT + void SetValue ( _PTR(SObject), const QString& value ); + void setFileType( _PTR(SObject), const QString& fileType ); + void setFileName( _PTR(SObject), const QString& fileName ); - CORBA::Object_var SObjectToObject(_PTR(SObject) theSObject); +SMESHGUI_EXPORT + CORBA::Object_var SObjectToObject( _PTR(SObject) ); template typename TInterface::_var_type - SObjectToInterface(_PTR(SObject) 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& ior ); 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 (LightApp_SelectionMgr*, QString& theName); +SMESHGUI_EXPORT + CORBA::Object_var EntryToObject( const QString& entry ); - _PTR(SObject) GetMeshOrSubmesh (_PTR(SObject) theSObject); - - void ModifiedMesh (_PTR(SObject) theSObject, bool theIsRight); + template typename TInterface::_var_type + EntryToInterface( const QString& theEntry ) + { + CORBA::Object_var anObj = EntryToObject( theEntry ); + if ( !CORBA::is_nil( anObj ) ) + return TInterface::_narrow( anObj ); + return TInterface::_nil(); + } -// void UpdateObjBrowser (bool); +SMESHGUI_EXPORT + int GetNameOfSelectedIObjects( LightApp_SelectionMgr*, QString& name ); + +SMESHGUI_EXPORT + QString GetName( const Handle(SALOME_InteractiveObject)& theIO ); + +SMESHGUI_EXPORT + _PTR(SObject) GetMeshOrSubmesh( _PTR(SObject) ); + +SMESHGUI_EXPORT + void ShowHelpFile( const QString& helpFileName); + + /*! + * \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