X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FNewGeom%2FNewGeom_SalomeViewer.h;h=8012c4a015c25ad59a452ee9fe598ba28bc30ca3;hb=a63f4aea8cf064bae8339c926584316f218d98d5;hp=29bdd5218be92523f8d6de153d056fbfbded17f1;hpb=e30796dab1aa68c01201b2b89d4292d3fcbbc4d4;p=modules%2Fshaper.git diff --git a/src/NewGeom/NewGeom_SalomeViewer.h b/src/NewGeom/NewGeom_SalomeViewer.h index 29bdd5218..8012c4a01 100644 --- a/src/NewGeom/NewGeom_SalomeViewer.h +++ b/src/NewGeom/NewGeom_SalomeViewer.h @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + #ifndef NewGeom_SalomeViewer_H #define NewGeom_SalomeViewer_H @@ -5,19 +7,69 @@ #include "NewGeom.h" #include +#include + +#include + +#include class SUIT_ViewWindow; class QMouseEvent; class QKeyEvent; class NewGeom_OCCSelector; +class OCCViewer_Viewer; +class SUIT_ViewManager; + +/** +* \ingroup Salome +* A class for providing access of NewGeom functionality to +* SALOME view window functionality +*/ +class NewGeom_SalomeView: public ModuleBase_IViewWindow +{ +public: + /// Constructor + /// \param theViewer a reference to a viewer + NewGeom_SalomeView(OCCViewer_Viewer* theViewer); + + virtual Handle(V3d_View) v3dView() const; + + /// Returns the view window view port + virtual QWidget* viewPort() const; + + /// Set the current viewer + /// \param theViewer a viewer instance + void setViewer(OCCViewer_Viewer* theViewer) { myViewer = theViewer; } + + /// Returns current viewer + OCCViewer_Viewer* viewer() const { return myViewer; } + + /// Sets the current view + void setCurrentView(SUIT_ViewWindow* theView) { myCurrentView = theView; } + +private: + /// A reference to a viewer + OCCViewer_Viewer* myViewer; + SUIT_ViewWindow* myCurrentView; +}; + +/** +* \ingroup Salome +* A class for providing access of NewGeom functionality to +* SALOME viewer functionality +*/ class NewGeom_SalomeViewer : public ModuleBase_IViewer { Q_OBJECT public: + /// Constructor + /// \param theParent a parent object NewGeom_SalomeViewer(QObject* theParent); + ~NewGeom_SalomeViewer(); + //! Returns AIS_InteractiveContext from current OCCViewer virtual Handle(AIS_InteractiveContext) AISContext() const; @@ -48,13 +100,39 @@ Q_OBJECT /// \param theZ the Z projection value virtual void setViewProjection(double theX, double theY, double theZ); + /// Set selector + /// \param theSel a selector instance void setSelector(NewGeom_OCCSelector* theSel); + /// Add selection filter to the viewer + virtual void addSelectionFilter(const Handle(SelectMgr_Filter)& theFilter); + + /// Remove selection filter from the viewer + virtual void removeSelectionFilter(const Handle(SelectMgr_Filter)& theFilter); + + /// Remove all selection filters from the viewer + virtual void clearSelectionFilters(); + + /// Returns current selector NewGeom_OCCSelector* selector() const { return mySelector; } + /// Update current viewer + virtual void update(); + + /// Method returns True if the viewer can process editing objects + /// by mouse drugging. If this is impossible thet it has to return False. + virtual bool canDragByMouse() const; + + /// Activate or deactivate viewer + /// \param toActivate - activation flag + void activateViewer(bool toActivate); + + // Fit all along Z (perpendicular to display) + virtual void Zfitall(); + private slots: void onMousePress(SUIT_ViewWindow*, QMouseEvent*); void onMouseRelease(SUIT_ViewWindow*, QMouseEvent*); @@ -63,9 +141,19 @@ Q_OBJECT void onKeyPress(SUIT_ViewWindow*, QKeyEvent*); void onKeyRelease(SUIT_ViewWindow*, QKeyEvent*); + void onTryCloseView(SUIT_ViewWindow*); + void onDeleteView(SUIT_ViewWindow*); + void onViewCreated(SUIT_ViewWindow*); + void onActivated(SUIT_ViewWindow*); + + void onSelectionChanged(); + void onViewTransformed(OCCViewer_ViewWindow::OperationType); + private: NewGeom_OCCSelector* mySelector; - + NewGeom_SalomeView* myView; + bool myIsSelectionChanged; }; + #endif