-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, 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.h>
+// CORBA includes
+#include <omniORB4/CORBA.h>
-#include "SALOMEDSClient_definitions.hxx"
-#include "SALOME_InteractiveObject.hxx"
-#include "SalomeApp_DataOwner.h"
+// SALOME KERNEL includes
+#include <SALOMEDSClient_definitions.hxx>
+#include <SALOME_GenericObj_wrap.hxx>
-class QString;
+// SALOME GUI includes
+#include <SALOME_InteractiveObject.hxx>
+#include <LightApp_DataOwner.h>
+
+//OCC includes
+#include <gp_XYZ.hxx>
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SMESH_Mesh)
class SUIT_ViewWindow;
class SUIT_Desktop;
class SalomeApp_Study;
class SalomeApp_Module;
-class SalomeApp_SelectionMgr;
+class LightApp_SelectionMgr;
-namespace SMESH {
+class SMDS_MeshFace;
+namespace SMESH
+{
+SMESHGUI_EXPORT
SUIT_Desktop*
- GetDesktop(const CAM_Module* theModule);
+ GetDesktop( const CAM_Module* );
- SalomeApp_SelectionMgr*
- GetSelectionMgr(const SalomeApp_Module* theModule);
+SMESHGUI_EXPORT
+ LightApp_SelectionMgr*
+ 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 SalomeApp_DataOwnerPtr& theOwner);
+SMESHGUI_EXPORT
+ CORBA::Object_var DataOwnerToObject( const LightApp_DataOwnerPtr& );
template<class TInterface> typename TInterface::_var_type
- DataOwnerToInterface(const SalomeApp_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& );
- CORBA::Object_var SObjectToObject (_PTR(SObject) theSObject,
- _PTR(Study) theStudy);
+SMESHGUI_EXPORT
+ void SetValue( _PTR(SObject), const QString& );
+ void setFileType( _PTR(SObject), const QString& );
+ void setFileName( _PTR(SObject), const QString& );
- CORBA::Object_var SObjectToObject(_PTR(SObject) theSObject);
+SMESHGUI_EXPORT
+ CORBA::Object_var SObjectToObject( _PTR(SObject) );
template<class TInterface> 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<class TInterface> 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<class TInterface> 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 (SalomeApp_SelectionMgr*, QString& theName);
+SMESHGUI_EXPORT
+ CORBA::Object_var EntryToObject( const QString& );
- _PTR(SObject) GetMeshOrSubmesh (_PTR(SObject) theSObject);
-
- void ModifiedMesh (_PTR(SObject) theSObject, bool theIsRight);
+ template<class TInterface> 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& );
+
+SMESHGUI_EXPORT
+ QString GetName( const Handle(SALOME_InteractiveObject)& theIO );
+
+SMESHGUI_EXPORT
+ _PTR(SObject) GetMeshOrSubmesh( _PTR(SObject) );
+
+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<SMESH_IDSource> 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