X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Module.h;h=3561ed1c9b82048d45cbaa6b356db06ac36592d8;hb=5cae7e874afd2fc1b6f61023e8ebd33a933db3c7;hp=7ed7f660bef3dc20a3fd755765a9618355ff2a03;hpb=16b8dd948d4cadb6b06a34786eca8bee8eb4ea08;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Module.h b/src/HYDROGUI/HYDROGUI_Module.h index 7ed7f660..3561ed1c 100644 --- a/src/HYDROGUI/HYDROGUI_Module.h +++ b/src/HYDROGUI/HYDROGUI_Module.h @@ -1,12 +1,47 @@ +// Copyright (C) 2007-2013 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. +// +// 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 +// -#ifndef HYDROGUI_MODULE_HEADER -#define HYDROGUI_MODULE_HEADER +#ifndef HYDROGUI_MODULE_H +#define HYDROGUI_MODULE_H + +#include -#include #include +#include + +class QGraphicsSceneMouseEvent; + +class GraphicsView_Viewer; + class SUIT_ViewWindow; +class HYDROGUI_DataModel; +class HYDROGUI_Displayer; +class HYDROGUI_OCCDisplayer; +class HYDROGUI_Shape; + +class OCCViewer_Viewer; + /**\class HYDROGUI_Module *\brief The class representing the HYDROGUI module */ @@ -14,36 +49,147 @@ class HYDROGUI_Module : public LightApp_Module { Q_OBJECT + enum CustomEvent { NewViewEvent = QEvent::User + 100 }; + +public: + + enum ViewManagerRole + { + VMR_Unknown = 0, + VMR_General, + VMR_TransformImage, + VMR_ReferenceImage, + VMR_ObserveImage, + //VMR_PreviewZone, // totally unused, to delete + VMR_PreviewCaseZones // actually unused, to review + }; + typedef QPair< SUIT_ViewManager*, ViewManagerRole > ViewManagerInfo; + + typedef QMap < int, ViewManagerInfo > ViewManagerMap; + typedef QMapIterator< int, ViewManagerInfo > ViewManagerMapIterator; + + struct ObjectState + { + bool Visibility; + double Transparency; + double ZValue; + ObjectState() : Visibility( false ), Transparency( 1.0 ), ZValue( 0.0 ) {} + }; + typedef QMap< QString, ObjectState > Name2ObjectStateMap; + typedef QMap< int, Name2ObjectStateMap > ViewId2Name2ObjectStateMap; + + typedef QList ListOfShapes; + typedef QMap ViewId2ListOfShapes; + public: HYDROGUI_Module(); virtual ~HYDROGUI_Module(); - virtual void initialize( CAM_Application* ); - virtual void windows( QMap& ) const; - virtual void viewManagers( QStringList& ) const; + int getStudyId() const; + + virtual void initialize( CAM_Application* ); + virtual void windows( QMap& ) const; + virtual void viewManagers( QStringList& ) const; + + virtual void contextMenuPopup( const QString&, QMenu*, QString& ); + + virtual void update( const int ); + virtual void updateCommandsStatus(); + + virtual void selectionChanged(); + + HYDROGUI_DataModel* getDataModel() const; + HYDROGUI_Displayer* getDisplayer() const; + HYDROGUI_OCCDisplayer* getOCCDisplayer() const; + + GraphicsView_Viewer* getViewer( const int theId ) const; + OCCViewer_Viewer* getOCCViewer( const int theId ) const; + + int getViewManagerId( SUIT_ViewManager* theViewManager ); + ViewManagerRole getViewManagerRole( SUIT_ViewManager* theViewManager ); + void setViewManagerRole( SUIT_ViewManager* theViewManager, + const ViewManagerRole theRole ); + + bool isObjectVisible( const int theViewId, + const Handle(HYDROData_Entity)& theObject ) const; + void setObjectVisible( const int theViewId, + const Handle(HYDROData_Entity)& theObject, + const bool theState ); + + HYDROGUI_Shape* getObjectShape( const int theViewId, + const Handle(HYDROData_Entity)& theObject ) const; + void setObjectShape( const int theViewId, + const Handle(HYDROData_Entity)& theObject, + HYDROGUI_Shape* theShape ); + void removeViewShapes( const int theViewId ); + void removeObjectShape( const int theViewId, + const Handle(HYDROData_Entity)& theObject ); + +protected: + CAM_DataModel* createDataModel(); public slots: - virtual bool activateModule( SUIT_Study* ); + virtual bool activateModule( SUIT_Study* ); + virtual bool deactivateModule( SUIT_Study* ); protected: - virtual LightApp_Operation* createOperation( const int ) const; + virtual LightApp_Operation* createOperation( const int ) const; + + virtual void customEvent( QEvent* ); + virtual bool eventFilter( QObject*, QEvent* ); protected slots: - void onOperation(); - virtual void onViewManagerAdded( SUIT_ViewManager* ); - virtual void onViewWindowAdded( SUIT_ViewWindow* ); + void onOperation(); + + bool onUndo( int theNumActions ); + bool onRedo( int theNumActions ); + + virtual void onViewManagerAdded( SUIT_ViewManager* ); + virtual void onViewManagerRemoved( SUIT_ViewManager* ); + virtual void onViewCreated( SUIT_ViewWindow* ); + + void onViewPortMouseEvent( QGraphicsSceneMouseEvent* ); private: - void CreateActions(); - void CreateMenus(); - void CreatePopups(); - void CreateToolbars(); + void updateGV( const bool theIsInit = false, + const bool theIsForced = false ); + + void updateOCCViewer( const bool theIsInit = false, + const bool theIsForced = false ); + + void createSelector( SUIT_ViewManager* viewMgr ); + + bool setUpdateEnabled( const bool theState ); + bool isUpdateEnabled() const; + + QStringList storeSelection() const; + void restoreSelection( const QStringList& theEntryList ); private: - QAction* CreateAction( const int theId, const QString& theSuffix, - const QString& theImg = QString::null, - const int theKey = 0, const bool isToggle = false, - const QString& theSlot = QString::null ); + void createActions(); + void createMenus(); + void createPopups(); + void createToolbars(); + + void createUndoRedoActions(); + void updateUndoRedoControls(); + +private: + QAction* createAction( const int theId, const QString& theSuffix, + const QString& theImg = QString::null, + const int theKey = 0, const bool isToggle = false, + const QString& theSlot = QString::null ); + +private: + HYDROGUI_Displayer* myDisplayer; + HYDROGUI_OCCDisplayer* myOCCDisplayer; + + ViewManagerMap myViewManagerMap; + ViewId2Name2ObjectStateMap myObjectStateMap; + + ViewId2ListOfShapes myShapesMap; + + bool myIsUpdateEnabled; }; #endif