X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_SketcherMgr.h;h=c5f7effe100641a20f6e164cf34eac5720d1fb65;hb=a731f82dccbfdb67cbf8e8d617222a4d3e32018a;hp=a4a0246d79ecea7ca28087032f64745375ad977f;hpb=cc639fcd6da26f3cde9e9570de53a85c2bdfccb9;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_SketcherMgr.h b/src/PartSet/PartSet_SketcherMgr.h index a4a0246d7..c5f7effe1 100644 --- a/src/PartSet/PartSet_SketcherMgr.h +++ b/src/PartSet/PartSet_SketcherMgr.h @@ -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; } @@ -104,11 +111,17 @@ public: /// Stops sketch operation void stopSketch(ModuleBase_Operation* ); - /// Starts sketch operation - void startNestedSketch(ModuleBase_Operation* ); + /// Starts sketch operation, connects to the opeation property panel + /// \param theOperation a committed operation + void startNestedSketch(ModuleBase_Operation* theOperation); - /// Stops sketch operation - void stopNestedSketch(ModuleBase_Operation* ); + /// Stop sketch operation, disconnects from the opeation property panel + /// \param theOperation a stopped operation + void stopNestedSketch(ModuleBase_Operation* theOperation); + + /// Visualizes the operation feature if it is a creation nested feature operation + /// \param theOperation a committed operation + void commitNestedSketch(ModuleBase_Operation* theOperation); /// Returns True if there are available Undos and the sketch manager allows undo /// \return the boolean result @@ -124,13 +137,19 @@ 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& thePln); - /// Listens the value changed signal and display the current operation feature - void onValuesChangedInPropertyPanel(); - private slots: /// Process the enter mouse to the view port. If the current operation is a create of /// a nested sketch feature, it updates internal flags to display the feature on mouse move @@ -138,6 +157,12 @@ private slots: /// Process the leave mouse of the view port. If the current operation is a create of /// a nested sketch feature, it hides the feature in the viewer void onLeaveViewPort(); + /// Listens to the value changed signal and display the current operation feature + void onBeforeValuesChangedInPropertyPanel(); + /// Listens to the signal about values are to be changed in the property panel + void onValuesChangedInPropertyPanel(); + /// Listens to the signal about the modification of the values have been done in the property panel + void onAfterValuesChangedInPropertyPanel(); void onMousePressed(ModuleBase_IViewWindow*, QMouseEvent*); void onMouseReleased(ModuleBase_IViewWindow*, QMouseEvent*); @@ -146,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(); @@ -155,20 +186,8 @@ private: void get2dPoint(ModuleBase_IViewWindow* theWnd, QMouseEvent* theEvent, Point& thePoint); - typedef QList AttributeList; - typedef QMap FeatureToAttributesMap; - typedef std::map, std::set > > + typedef QMap, std::set > > 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 @@ -210,13 +229,21 @@ private: /// \param bool isVisibleCreatedFeature() const; - /// Returns true if the current operation is create a nested feature - //// \return boolean value - bool isNestedCreateOperation() const; + /// Returns a current operation + /// \return an operation + ModuleBase_Operation* getCurrentOperation() 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 - void updateVisibilityOfCreatedFeature(); + /// \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); + + /// 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: PartSet_Module* myModule; @@ -227,14 +254,15 @@ 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; };