Salome HOME
Merge branch 'Dev_1.1.0' of newgeom:newgeom.git into Dev_1.1.0
[modules/shaper.git] / src / PartSet / PartSet_SketcherMgr.h
index 69e3dcd706e60cb13ecd9625eb7e3644871ffc68..c5f7effe100641a20f6e164cf34eac5720d1fb65 100644 (file)
@@ -87,13 +87,20 @@ public:
   /// \return the boolean result
   static bool isNestedSketchOperation(ModuleBase_Operation* theOperation);
 
-  /// Returns whethe the current operation is a sketch distance - lenght, distance or radius
+  /// Returns true if the operation is a create nested feature one
+  /// \param theOperation a checked operation
+  //// \return boolean value
+  static bool isNestedCreateOperation(ModuleBase_Operation* theOperation);
+
+  /// Returns whether the current operation is a sketch entity - line, point, arc or circle
   /// \param the operation
   /// \return a boolean value
-  static bool isDistanceOperation(ModuleBase_Operation* theOperation);
+  static bool isEntityOperation(ModuleBase_Operation* theOperation);
 
-  /// Launches the operation from current highlighting
-  void launchEditing();
+  /// Returns whether the current operation is a sketch distance - lenght, distance or radius
+  /// \param the operation
+  /// \return a boolean value
+  static bool isDistanceOperation(ModuleBase_Operation* theOperation);
 
   /// Returns current Sketch feature/ Returns NULL if there is no launched sketch operation
   CompositeFeaturePtr activeSketch() const { return myCurrentSketch; }
@@ -130,6 +137,15 @@ public:
   /// \param theObject a model object
   bool canDisplayObject() const;
 
+  /// Returns true if the current operation is sketch entity create operation
+  /// \param theValue the current auxiliary value
+  /// \return the boolean result
+  bool canSetAuxiliary(bool& theValue) const;
+  
+  /// Changes the sketcher entity construction argument value
+  /// \param isChecked if true, the feature is a construction
+  void setAuxiliary(const bool isChecked);
+
 public slots:
   /// Process sketch plane selected event
   void onPlaneSelected(const std::shared_ptr<GeomAPI_Pln>& thePln);
@@ -155,7 +171,13 @@ private slots:
   void onApplicationStarted();
   void onBeforeWidgetActivated(ModuleBase_ModelWidget* theWidget);
 
+  void onBeforeContextMenu();
+  void onAfterContextMenu();
+
 private:
+  /// Launches the operation from current highlighting
+  void launchEditing();
+
   /// Returns list of strings which contains id's of sketch operations
   static QStringList sketchOperationIdList();
 
@@ -164,20 +186,8 @@ private:
   void get2dPoint(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent, 
                   Point& thePoint);
 
-  typedef QList<AttributePtr> AttributeList;
-  typedef QMap<FeaturePtr, AttributeList> FeatureToAttributesMap;
-  typedef std::map<FeaturePtr, std::pair<std::set<AttributePtr>, std::set<ResultPtr> > >
+  typedef QMap<FeaturePtr, std::pair<std::set<AttributePtr>, std::set<ResultPtr> > >
                                                                        FeatureToSelectionMap;
-  /// Obtains the current selection of the object in the workshop viewer by a map of feature to attributes
-  /// It calls the next method for each feature
-  /// \param theFeatureToAttributes a map of feature to attributes
-  /// \param theSketch a current sketch feature
-  /// \param theWorkshop a workshop to have an access to AIS context and displayer
-  /// \param theSelection a container for the selection, to save results and attributres for a feature
-  static void getCurrentSelection(const FeatureToAttributesMap& theFeatureToAttributes,
-                                  const FeaturePtr& theSketch,
-                                  ModuleBase_IWorkshop* theWorkshop,
-                                  FeatureToSelectionMap& theSelection);
 
   /// Obtains the current selection of the object in the workshop viewer 
   /// It includes the selection in all modes of activation, even local context - vertices, edges
@@ -223,18 +233,16 @@ private:
   /// \return an operation
   ModuleBase_Operation* getCurrentOperation() const;
 
-  /// Returns true if the operation is a create nested feature one
-  /// \param theOperation a checked operation
-  //// \return boolean value
-  bool isNestedCreateOperation(ModuleBase_Operation* theOperation) const;
-
   /// Erase or display the feature of the current operation. If the mouse over the active view or
   /// a current value is changed by property panel, the feature is displayed otherwise it is hidden
   /// \param theOperation an operation which feature is to be displayed, it is nested create operation
   /// \param isToDisplay a flag about the display or erase the feature
   void visualizeFeature(ModuleBase_Operation* theOperation, const bool isToDisplay);
 
-  void storeSelection();
+  /// Saves the current selection in the viewer into an internal container
+  /// It obtains the selected attributes. The highlighted objects can be processes as the selected ones
+  /// \param theHighlightedUse a boolean flag
+  void storeSelection(const bool theHighlightedOnly = false);
   void restoreSelection();
 
 private:
@@ -246,13 +254,12 @@ private:
   bool myIsPropertyPanelValueChanged; /// the state that value in the property panel is changed
   bool myIsMouseOverWindow; /// the state that the mouse over the view
   bool myIsMouseOverViewProcessed; /// the state whether the over view state is processed by mouseMove method
+  bool myIsPopupMenuActive; /// the state of the popup menu is shown
   Point myCurrentPoint;
   Point myClickedPoint;
 
   CompositeFeaturePtr myCurrentSketch;
 
-  FeatureToAttributesMap myFeature2AttributeMap; /// a map of a feature to attributes
-
   Handle(ModuleBase_ShapeInPlaneFilter) myPlaneFilter;
   FeatureToSelectionMap myCurrentSelection;
   bool myPreviousUpdateViewerEnabled;