Salome HOME
Implementation of Fitter
[modules/shaper.git] / src / PartSet / PartSet_SketcherMgr.h
index 634916b7814fb3019823ab6dea15a4305e24547a..4920caa397ca69145f89b0ccc6c9f417398b62ca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // 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
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef PartSet_SketcherMgr_H
 #include "PartSet.h"
 
 #include "PartSet_PreviewSketchPlane.h"
-#include "XGUI_SelectionFilterType.h"
 #include "PartSet_Tools.h"
 
 #include <ModelAPI_Feature.h>
 #include <ModelAPI_Attribute.h>
 #include <ModelAPI_CompositeFeature.h>
 #include <ModelAPI_Result.h>
+#include <ModuleBase_SelectionFilterType.h>
 
 #include <ModuleBase_Definitions.h>
 #include <ModuleBase_ModelWidget.h>
 
 #include <GeomAPI_Pln.h>
 
+#ifdef HAVE_SALOME
+  #include <OCCViewer_ViewModel.h>
+#else
+  #include <AppElements_Viewer.h>
+#endif
+
+
 #include <SelectMgr_IndexedMapOfOwner.hxx>
 #include <SelectMgr_ListOfFilter.hxx>
 
 #include <TopoDS_Shape.hxx>
 #include <TopTools_MapOfShape.hxx>
+#include <AIS_Shape.hxx>
 
 #include <QObject>
 #include <QList>
@@ -55,12 +62,34 @@ class ModuleBase_ModelWidget;
 class ModuleBase_Operation;
 class XGUI_OperationMgr;
 class XGUI_Workshop;
+class XGUI_Displayer;
 class PartSet_ExternalPointsMgr;
 
 class AIS_InteractiveObject;
 
 class QMouseEvent;
 
+
+#ifdef HAVE_SALOME
+class PartSet_Fitter : public OCCViewer_Fitter
+#else
+class PartSet_Fitter : public AppElements_Fitter
+#endif
+{
+public:
+  PartSet_Fitter(CompositeFeaturePtr theCurrentSketch):
+    mySketch(theCurrentSketch) {}
+
+  /// A method which has top be reimplemented to provide alterantive implementation FitAll command
+  /// \param theView - a view which has to be fit
+  virtual void fitScene(Handle(V3d_View) theView);
+
+private:
+  CompositeFeaturePtr mySketch;
+};
+
+
+
 /**
 * \ingroup Modules
 * A class for management of sketch operations
@@ -201,12 +230,12 @@ public:
   /// Returns true if the filter is created by the sketch manager
   /// \param theFilterType a checked type
   /// \return boolean value
-  bool sketchSelectionFilter(const XGUI_SelectionFilterType theFilterType);
+  bool sketchSelectionFilter(const ModuleBase_SelectionFilterType theFilterType);
 
   /// Append selection filter into the module and type of the filter in internal container
   /// \param theFilterType selection filter type
   /// \param theFilter added filter
-  void registerSelectionFilter(const XGUI_SelectionFilterType theFilterType,
+  void registerSelectionFilter(const ModuleBase_SelectionFilterType theFilterType,
                                const Handle(SelectMgr_Filter)& theFilter);
 
   /// Commit the operation if it is possible. If the operation is dimention constraint,
@@ -336,10 +365,18 @@ public:
   void updateBySketchParameters(const PartSet_Tools::ConstraintVisibleState& theType,
                                 bool theState);
 
+  bool isShowFreePointsShown() const {
+    return myPointsHighlight.size() > 0;
+  }
+
 public slots:
   /// Process sketch plane selected event
   void onPlaneSelected(const std::shared_ptr<GeomAPI_Pln>& thePln);
 
+  /// The slot is called when user checks "Show free points" button
+  /// \param toShow a state of the check box
+  void onShowPoints(bool toShow);
+
 private slots:
   /// Toggle show constraints
   void onShowConstraintsToggle(int theType, bool theState);
@@ -445,7 +482,7 @@ private:
 
   CompositeFeaturePtr myCurrentSketch;
 
-  std::set<XGUI_SelectionFilterType> mySelectionFilterTypes;
+  std::set<ModuleBase_SelectionFilterType> mySelectionFilterTypes;
 
   FeatureToSelectionMap myCurrentSelection;
   bool myPreviousUpdateViewerEnabled;
@@ -453,6 +490,10 @@ private:
   QMap<PartSet_Tools::ConstraintVisibleState, bool> myIsConstraintsShown;
 
   PartSet_ExternalPointsMgr* myExternalPointsMgr;
+
+  QMap<ResultPtr, Handle(AIS_Shape)> myPointsHighlight;
+
+  bool myNoDragMoving;
 };