-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015 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.
+// 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
#ifndef HYDROGUI_TOOL_H
#define HYDROGUI_TOOL_H
-#include <HYDROData_Object.h>
+#include <HYDROData_Image.h>
#include <GraphicsView_Defs.h>
+#include <GraphicsView_ViewPort.h>
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TCollection_HAsciiString.hxx>
+#include <TCollection_HExtendedString.hxx>
+
+#include <Image_PixMap.hxx>
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(GEOM_Gen)
class SUIT_ViewManager;
+class OCCViewer_ViewFrame;
class HYDROGUI_DataModel;
class HYDROGUI_Module;
class HYDROGUI_Prs;
+class QDockWidget;
+class Handle(HYDROData_Document);
+
/**
* \class HYDROGUI_Tool
* \brief This class contains several useful methods.
class HYDROGUI_Tool
{
public:
+ /**
+ * \brief Convert \a TCollection_AsciiString to \a QString
+ */
+ static QString ToQString( const TCollection_AsciiString& );
+
+ /**
+ * \brief Convert \a TCollection_ExtendedString to \a QString
+ */
+ static QString ToQString( const TCollection_ExtendedString& );
+
+ /**
+ * \brief Convert \a Handle_TCollection_HAsciiString to \a QString
+ */
+ static QString ToQString( const Handle(TCollection_HAsciiString)& );
+
+ /**
+ * \brief Convert \a Handle_TCollection_HExtendedString to \a QString
+ */
+ static QString ToQString( const Handle(TCollection_HExtendedString)& );
+
+ /**
+ * \brief Convert \a QString to \a TCollection_AsciiString
+ */
+ static TCollection_AsciiString ToAsciiString( const QString& );
+
+ /**
+ * \brief Convert \a QString to \a TCollection_ExtendedString
+ */
+ static TCollection_ExtendedString ToExtString( const QString& );
+
+ /**
+ * \brief Convert \a QString to \a Handle_TCollection_HAsciiString
+ */
+ static Handle(TCollection_HAsciiString) ToHAsciiString( const QString& );
+
+ /**
+ * \brief Convert \a QString to \a Handle_TCollection_HExtendedString
+ */
+ static Handle(TCollection_HExtendedString) ToHExtString( const QString& );
+
+ /**
+ * \brief Get the active study id.
+ * \return active study id
+ */
+ static int GetActiveStudyId();
+
+ /**
+ * \brief Get path to the temporary directory.
+ * \param theToCreate flag used to create a directory if it doesn't exist
+ * \return path
+ */
+ static QString GetTempDir( const bool theToCreate );
+
/**
* \brief Set the specified view manager to be active on the desktop.
* \param theModule module
SUIT_ViewManager* theViewManager );
/**
+ * \brief Returns TRUE if object can be shown on the viewer.
+ * \param theObject data model object to check
+ * \param theViewerType viewer type
+ */
+ static bool IsObjectHasPresentation( const Handle(HYDROData_Entity)& theObject,
+ const QString& theViewerType = "" );
+
+/**
* \brief Get sub-objects to build presentations.
- * \param theGUIModel data model
- * \param theViewerId viewer id
+ * \param theModule module
* \param theSeq sequence of sub-objects
*/
- static void GetPrsSubObjects( const HYDROGUI_DataModel* theGUIModel,
- const int theViewerId,
+ static void GetPrsSubObjects( HYDROGUI_Module* theModule,
HYDROData_SequenceOfObjects& theSeq );
/**
* \param theObjects list of existing presentations
* \return presentation
*/
- static HYDROGUI_Prs* GetPresentation( const Handle(HYDROData_Object)& theObj,
+ static HYDROGUI_Prs* GetPresentation( const Handle(HYDROData_Entity)& theObj,
const GraphicsView_ObjectList& theObjects );
+
+ /**
+ * \brief Get list of HYDRO presentations from the specified viewport.
+ * \param theViewPort viewport
+ * \return list of HYDRO presentations
+ */
+ static GraphicsView_ObjectList GetPrsList( GraphicsView_ViewPort* theViewPort );
+
+ /**
+ * \brief Get list of the selected data objects.
+ * \param theModule module
+ * \return list of the selected data objects
+ */
+ static HYDROData_SequenceOfObjects GetSelectedObjects( HYDROGUI_Module* theModule );
+
+ /**
+ * \brief Get the selected data object (first in the selected list).
+ * \param theModule module
+ * \return selected data object
+ */
+ static Handle(HYDROData_Entity) GetSelectedObject( HYDROGUI_Module* theModule );
+
+ /**
+ * \brief Get the geometry data objects from document.
+ * \param theModule module
+ * \return sequence of data objects
+ */
+ static HYDROData_SequenceOfObjects GetGeometryObjects( HYDROGUI_Module* theModule );
+
+ /**
+ * \brief Get kind of objects the selected partition contains.
+ * \param theModule module
+ * \return object kind
+ */
+ static ObjectKind GetSelectedPartition( HYDROGUI_Module* theModule );
+
+ /**
+ * \brief Get the selected GEOM objects.
+ * \param theModule module
+ * \param theTypes the acceptable GEOM object types
+ * \return list of GEOM objects entries
+ */
+ static QStringList GetSelectedGeomObjects( HYDROGUI_Module* theModule,
+ QList<GEOM::shape_type> theTypes );
+
+ /**
+ * \brief Find the data object with the specified name.
+ * \param theModule module
+ * \param theName name
+ * \param theObjectKind kind of object
+ * \return data object
+ */
+ static Handle(HYDROData_Entity) FindObjectByName( HYDROGUI_Module* theModule,
+ const QString& theName,
+ const ObjectKind theObjectKind = KIND_UNKNOWN );
+
+ /**
+ * \brief Find the data objects with the specified names.
+ * \param theModule module
+ * \param theNames list of names
+ * \param theObjectKind kind of object
+ * \return list of data objects
+ */
+ static HYDROData_SequenceOfObjects FindObjectsByNames( HYDROGUI_Module* theModule,
+ const QStringList& theNames,
+ const ObjectKind theObjectKind = KIND_UNKNOWN );
+
+ /**
+ * \brief Generate name for new object.
+ * \param theModule module
+ * \param thePrefix name prefix
+ * \param theUsedNames list of already used names
+ * \param theIsTryToUsePurePrefix if true - the prefix will be returned if the name equal to the prefix is not busy
+ * \return generated name
+ */
+ static QString GenerateObjectName( HYDROGUI_Module* theModule,
+ const QString& thePrefix,
+ const QStringList& theUsedNames = QStringList(),
+ const bool theIsTryToUsePurePrefix = false );
+
+ /**
+ * \brief Get id of the active view.
+ * \param theModule module
+ * \return view id
+ */
+ static size_t GetActiveViewId( HYDROGUI_Module* theModule,
+ const QString& theViewId = QString() );
+
+ /**
+ * \brief Get id of the active GraphicsView view.
+ * \param theModule module
+ * \return view id
+ */
+ static size_t GetActiveGraphicsViewId( HYDROGUI_Module* theModule );
+
+ /**
+ * \brief Get id of the active OCC view.
+ * \param theModule module
+ * \return view id
+ */
+ static size_t GetActiveOCCViewId( HYDROGUI_Module* theModule );
+
+ /**
+ * \brief Get list of ids of existing GraphicsView views.
+ * \param theModule module
+ * \return list of view ids
+ */
+ static QList<size_t> GetGraphicsViewIdList( HYDROGUI_Module* theModule );
+
+ /**
+ * \brief Get list of ids of existing OCC views.
+ * \param theModule module
+ * \return list of view ids
+ */
+ static QList<size_t> GetOCCViewIdList( HYDROGUI_Module* theModule );
+
+
+ /**
+ * \brief Change OCC viewer action visibility.
+ * \param theViewFrame OCC viewer frame
+ * \param theActionId an action index, which state should be changed
+ * \param isShown the action visibility state
+ */
+ static void setOCCActionShown( OCCViewer_ViewFrame* theViewFrame,
+ const int theActionId,
+ const bool isShown );
+
+ /**
+ * \brief Change OCC viewer action visibility for all opened views.
+ * \param theActionId an action index, which state should be changed
+ * \param isShown the action visibility state
+ */
+ static void setOCCActionShown( HYDROGUI_Module* theModule,
+ const int theActionId,
+ const bool isShown );
+
+ /**
+ * \brief Get the list of references (recursively) for the specified data object
+ * \param theObj data object
+ * \param theRefObjects list of reference objects
+ * \param theRefNames list of reference object names
+ */
+ static void GetObjectReferences( const Handle(HYDROData_Entity)& theObj,
+ HYDROData_SequenceOfObjects& theRefObjects,
+ QStringList& theRefNames );
+
+ /**
+ * \brief Get the list of back-references for the specified object
+ * \param theModule module
+ * \param theObj data object
+ * \return list of back-reference objects
+ */
+ static HYDROData_SequenceOfObjects GetObjectBackReferences( HYDROGUI_Module* theModule,
+ const Handle(HYDROData_Entity)& theObj );
+
+ /**
+ * \brief Get the map of back-references for the specified list of objects
+ * \param theModule module
+ * \param theObjectNames names of objects
+ * \return map of back-reference objects
+ */
+ static QMap<QString,HYDROData_SequenceOfObjects> GetObjectsBackReferences( HYDROGUI_Module* theModule,
+ const QStringList& theObjectNames );
+
+ /**
+ * \brief Get father dock window for widget
+ * \param wid widget
+ * \return dock window
+ */
+ static QDockWidget* WindowDock( QWidget* wid );
+
+ /**
+ * \brief Generates the filling color for intersected zone
+ * \param theModule module
+ * \param theZoneNames list of intersected zones
+ * \return result color
+ */
+ static QColor GenerateFillingColor( HYDROGUI_Module* theModule,
+ const QStringList& theZoneNames );
+
+ /**
+ * \brief Generates the filling color for intersected zone
+ * \param theDoc model document
+ * \param theZoneNames list of intersected zones
+ * \return result color
+ */
+ static QColor GenerateFillingColor( const Handle(HYDROData_Document)& theDoc,
+ const QStringList& theZoneNames );
+
+ /**
+ * \brief Find names of existing objects of the given kind.
+ * \param theDoc model document
+ * \param theObjectKind kind of object
+ * \return list of names
+ */
+ static QStringList FindExistingObjectsNames( const Handle(HYDROData_Document)& theDoc,
+ const ObjectKind theObjectKind,
+ bool isCheckValidProfile = false );
+
+ /**
+ * \brief Converts coordinate value to string.
+ * \param theNumber coordinate as a number
+ * \return coordinate as a string
+ */
+ static QString GetCoordinateString( const double theNumber, bool isInLocale );
+
+ /**
+ * \brief Converts Qt QImage object to OCCT Image_PixMap object.
+ * \param theImage QImage object
+ * \return Image_PixMap object
+ */
+ static Handle(Image_PixMap) Pixmap( const QImage& theImage );
};
#endif