X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_Module.h;h=06fdf458c2017b925abb7b68151da9b3c9fee982;hb=32208dedf0b2b5bd50b5b86c464f37a8e0eb07d0;hp=8a54eff21ecb16afc9bc8e47f2528c7ab842c0ec;hpb=0edd45c3399c408340a033c8521ed2e3440e8375;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_Module.h b/src/PartSet/PartSet_Module.h index 8a54eff21..06fdf458c 100755 --- a/src/PartSet/PartSet_Module.h +++ b/src/PartSet/PartSet_Module.h @@ -35,6 +35,7 @@ class PartSet_MenuMgr; class PartSet_CustomPrs; class PartSet_SketcherMgr; class PartSet_SketcherReetntrantMgr; +class ModelAPI_Result; class QAction; @@ -50,7 +51,8 @@ Q_OBJECT enum RestartingMode { RM_None, /// the operation should not be restarted RM_Forbided, /// the operation should not be restarted after there is no active widget - RM_LastFeatureUsed, /// the operation is restarted and use the previous feature for own initialization + RM_LastFeatureUsed, /// the operation is restarted and use the previous feature + /// for own initialization RM_EmptyFeatureUsed /// the operation is restarted and does not use the previous feature }; @@ -83,7 +85,8 @@ public: /// Call back forlast tuning of property panel before operation performance virtual void propertyPanelDefined(ModuleBase_Operation* theOperation); - /// If there is found selected attribute, widgets are created and contains only a widget for the attribute + /// If there is found selected attribute, widgets are created and contains + /// only a widget for the attribute /// It is important for Property Panel filling by sketch point attribute /// \param theOperation a started operation /// \param theWidgets a list of created widgets @@ -91,10 +94,14 @@ public: virtual bool createWidgets(ModuleBase_Operation* theOperation, QList& theWidgets) const; - /// Launching of a edit operation on the feature + /// Launching of a edit operation on the feature /// \param theFeature feature for editing virtual void editFeature(FeaturePtr theFeature); + /// Returns true if the operation can be committed. Result in default implementation is true. + /// \return boolean value + virtual bool canCommitOperation() const; + /// Creates an operation and send it to loop /// \param theCmdId the operation name virtual void launchOperation(const QString& theCmdId); @@ -159,7 +166,7 @@ public: /// Make some functionality after the objects are hidden in viewer /// \param theObjects a list of hidden objects - virtual void processHiddenObject(const std::list& theObjects); + //virtual void processHiddenObject(const std::list& theObjects); /// Returns true if selection for the object can be activate. /// For sketch operation allow the selection activation if the operation is edit, for other @@ -171,16 +178,23 @@ public: /// \param theMenu a popup menu to be shown in the object browser virtual void addObjectBrowserMenu(QMenu* theMenu) const; - /// Add menu atems for viewer into the given menu - /// \param theMenu a popup menu to be shown in the viewer + /// Add menu items for viewer into the actions map /// \param theStdActions a map of standard actions + /// \param theParent a parent widget + /// \param theMenuActions map of action/menu for the desirable index in the viewer menu /// \return true if items are added and there is no necessity to provide standard menu - virtual bool addViewerMenu(QMenu* theMenu, const QMap& theStdActions) const; + virtual bool addViewerMenu(const QMap& theStdActions, + QWidget* theParent, + QMap& theMenuActions) const; /// Returns a list of modes, where the AIS objects should be activated /// \param theModes a list of modes virtual void activeSelectionModes(QIntList& theModes); + /// Appends specific selection modes for the module to the list of types + /// \param theTypes a selection modes to be extended + virtual void customSubShapesSelectionModes(QIntList& theTypes); + /// Returns whether the mouse enter the viewer's window /// \return true if items are added and there is no necessity to provide standard menu bool isMouseOverWindow(); @@ -189,12 +203,17 @@ public: PartSet_SketcherMgr* sketchMgr() const { return mySketchMgr; } /// Returns sketch reentrant manager - PartSet_SketcherReetntrantMgr* sketchReentranceMgr() { return mySketchReentrantMgr; } + PartSet_SketcherReetntrantMgr* sketchReentranceMgr() const { return mySketchReentrantMgr; } /// Returns listener of overconstraint signal /// \return the listener PartSet_OverconstraintListener* overconstraintListener() { return myOverconstraintListener; } + /// Returns true if the current operation is not reentrant and the current state of the + /// application is not in launch operation mode + /// \return boolean value + bool isSketchNeutralPointActivated() const; + /// Performs functionality on closing document virtual void closeDocument(); @@ -209,6 +228,11 @@ public: /// \param theFeature a feature void setCustomized(const FeaturePtr& theFeature); + /// Return true if the custom presentation is activated + /// \param theFlag a flag of level of customization, which means that only part of sub-elements + /// \return boolean value + virtual bool isCustomPrsActivated(const ModuleBase_CustomizeFlag& theFlag) const; + /// Activate custom presentation for the object /// \param theFeature a feature instance /// \param theFlag a flag of level of customization, which means that only part of sub-elements @@ -224,7 +248,8 @@ public: const bool theUpdateViewer); /// Modifies the given presentation in the custom way. - virtual bool customisePresentation(ResultPtr theResult, AISObjectPtr thePrs, + virtual bool customisePresentation(std::shared_ptr theResult, + AISObjectPtr thePrs, std::shared_ptr theCustomPrs); /// Update the object presentable properties such as color, lines width and other @@ -245,12 +270,28 @@ public: /// Returns the viewer Z layer int getVisualLayerId() const { return myVisualLayerId; } + /// Create specific for the module presentation + /// \param theResult an object for presentation + /// \return created presentation or NULL(default value) + virtual Handle(AIS_InteractiveObject) createPresentation( + const std::shared_ptr& theResult); + //! Returns data object by AIS virtual ObjectPtr findPresentedObject(const AISObjectPtr& theAIS) const; + //! Returns true if the presentation can be shown in shading mode + //! \param theAIS presentation to be checked + //! \return boolean value + virtual bool canBeShaded(Handle(AIS_InteractiveObject) theAIS) const; + /// Update state of pop-up menu items in viewer /// \param theStdActions - a map of standard actions - virtual void updateViewerMenu(const QMap& theStdActions); + virtual void updateViewerMenu(const QMap& theStdActions); + + /// Returns true if the action should be always enabled + /// \param theActionId an action index: Accept or Accept All + /// \return boolean value + virtual bool isActionEnableStateFixed(const int theActionId) const; //! Returns the feature error if the current state of the feature in the module is not correct //! If the feature is correct, it returns an empty value @@ -268,10 +309,6 @@ public: /// \param thePreviousAttributeID an index of the previous active attribute virtual bool processEnter(const std::string& thePreviousAttributeID); - /// Performs some GUI actions after an operation transaction is opened - /// Default realization is empty - virtual void beforeOperationStarted(ModuleBase_Operation* theOperation); - /// Performs some GUI actions before an operation transaction is stopped /// Default realization is empty virtual void beforeOperationStopped(ModuleBase_Operation* theOperation); @@ -287,6 +324,9 @@ public: /// \return theAttribute virtual AttributePtr findAttribute(const ObjectPtr& theObject, const GeomShapePtr& theGeomShape); + /// Returns the workshop + XGUI_Workshop* getWorkshop() const; + public slots: /// Redefines the parent method in order to customize the next case: /// If the sketch nested operation is active and the presentation is not visualized in the viewer, @@ -331,6 +371,11 @@ protected: /// \param theFeatureKindId a feature kind void storeConstraintsState(const std::string& theFeatureKindId); + /// If the feature kind is a geometrical or dimensional constraint, set visible state for + /// all types of constraints + /// \param theFeatureKindId a feature kind + void updateConstraintsState(const std::string& theFeatureKind); + /// Register validators for this module virtual void registerValidators(); @@ -345,11 +390,13 @@ protected: /// \param isToConnect a boolean value whether connect or disconnect virtual void connectToPropertyPanel(ModuleBase_ModelWidget* theWidget, const bool isToConnect); - /// Realizes some functionality by an operation start - /// Displays all sketcher sub-Objects, hides sketcher result, appends selection filters - /// Activate the operation presentation - /// \param theOperation a started operation - virtual void operationStartedInternal(ModuleBase_Operation* theOperation); + /// Updates reentrant manager state or sketcher operations for the started operation + /// \param theOperation the started operation + void updateSketcherOnStart(ModuleBase_Operation* theOperation); + + /// Updates presetnations of results and arguments by operation start + /// \param theOperation the started operation + void updatePresentationsOnStart(ModuleBase_Operation* theOperation); private slots: void onTreeViewDoubleClick(const QModelIndex&); @@ -357,14 +404,13 @@ protected: void onActiveDocPopup(const QPoint&); private: - //! Delete features virtual bool deleteObjects(); - /// Returns the workshop - XGUI_Workshop* getWorkshop() const; + void setDefaultConstraintShown(); - private: +private: + bool myIsOperationIsLaunched; /// state of application between launch and stop operation SelectMgr_ListOfFilter mySelectionFilters; PartSet_SketcherMgr* mySketchMgr;