X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Events.h;h=20d90f09cd551802a603c90e0b1e3c44ebd8da4a;hb=4d9c9b53936a9235a30588d1811d91efef81e1f2;hp=cf8794d803731aa982e2a2199c9dddf380ea6911;hpb=eab1d28845bc0f288292661f59c6ac428eabb8ed;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Events.h b/src/ModelAPI/ModelAPI_Events.h index cf8794d80..20d90f09c 100644 --- a/src/ModelAPI/ModelAPI_Events.h +++ b/src/ModelAPI/ModelAPI_Events.h @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2022 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 @@ -12,10 +12,9 @@ // // 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef MODELAPI_EVENTS_H_ @@ -37,70 +36,102 @@ class ModelAPI_Document; class ModelAPI_ResultParameter; class GeomAPI_Pnt2d; +class GeomAPI_Shape; + +#if defined __GNUC__ || defined __clang__ +#define MAYBE_UNUSED __attribute__((unused)) +#else +#define MAYBE_UNUSED +#endif /// Event ID that feature is created (comes with ModelAPI_ObjectUpdatedMessage) -static const char * EVENT_OBJECT_CREATED = "ObjectCreated"; +MAYBE_UNUSED static const char * EVENT_OBJECT_CREATED = "ObjectCreated"; /// Event ID that data of feature is updated (comes with Model_ObjectUpdatedMessage) -static const char * EVENT_OBJECT_UPDATED = "ObjectUpdated"; +MAYBE_UNUSED static const char * EVENT_OBJECT_UPDATED = "ObjectUpdated"; /// Event ID that data of feature is deleted (comes with Model_ObjectDeletedMessage) -static const char * EVENT_OBJECT_DELETED = "ObjectDeleted"; +MAYBE_UNUSED static const char * EVENT_OBJECT_DELETED = "ObjectDeleted"; /// Event ID that name of feature is changed (comes with Model_ObjectRenamedMessage) -static const char * EVENT_OBJECT_RENAMED = "ObjectRenamed"; +MAYBE_UNUSED static const char * EVENT_OBJECT_RENAMED = "ObjectRenamed"; /// Event ID that data of feature is updated (comes with ModelAPI_ObjectUpdatedMessage) -static const char * EVENT_OBJECT_MOVED = "ObjectsMoved"; +MAYBE_UNUSED static const char * EVENT_OBJECT_MOVED = "ObjectsMoved"; /// Event ID that visualization must be redisplayed (comes with ModelAPI_ObjectUpdatedMessage) -static const char * EVENT_OBJECT_TO_REDISPLAY = "ObjectsToRedisplay"; +MAYBE_UNUSED static const char * EVENT_OBJECT_TO_REDISPLAY = "ObjectsToRedisplay"; /// Event ID that plugin is loaded (comes with ModelAPI_ObjectUpdatedMessage) -static const char * EVENT_PLUGIN_LOADED = "PluginLoaded"; +MAYBE_UNUSED static const char * EVENT_PLUGIN_LOADED = "PluginLoaded"; /// The active document becomes another one -static const char * EVENT_DOCUMENT_CHANGED = "CurrentDocumentChanged"; +MAYBE_UNUSED static const char * EVENT_DOCUMENT_CHANGED = "CurrentDocumentChanged"; /// Event ID that order of objects in group is changed, /// so, tree must be fully recreated (movement of feature) -static const char * EVENT_ORDER_UPDATED = "OrderUpdated"; +MAYBE_UNUSED static const char * EVENT_ORDER_UPDATED = "OrderUpdated"; /// Event ID that the sketch is prepared and all grouped messages for the solver may be flushed -static const char * EVENT_UPDATE_SELECTION = "UpdateSelection"; +MAYBE_UNUSED static const char * EVENT_UPDATE_SELECTION = "UpdateSelection"; /// Request for the enabled/disabled actions behavior for some specific features -static const char * EVENT_FEATURE_STATE_REQUEST = "FeatureStateRequest"; +MAYBE_UNUSED static const char * EVENT_FEATURE_STATE_REQUEST = "FeatureStateRequest"; /// Reply for the enabled/disabled actions behavior for some specific features -static const char * EVENT_FEATURE_STATE_RESPONSE = "FeatureStateResponse"; +MAYBE_UNUSED static const char * EVENT_FEATURE_STATE_RESPONSE = "FeatureStateResponse"; /// To block the viewer updates -static const char * EVENT_UPDATE_VIEWER_BLOCKED = "UpdateViewerBlocked"; +MAYBE_UNUSED static const char * EVENT_UPDATE_VIEWER_BLOCKED = "UpdateViewerBlocked"; /// To unblock the viewer updates -static const char * EVENT_UPDATE_VIEWER_UNBLOCKED = "UpdateViewerUnblocked"; +MAYBE_UNUSED static const char * EVENT_UPDATE_VIEWER_UNBLOCKED = "UpdateViewerUnblocked"; /// To inform that there is an empty presentation in the viewer -static const char * EVENT_EMPTY_AIS_PRESENTATION = "EmptyAISPresentation"; +MAYBE_UNUSED static const char * EVENT_EMPTY_AIS_PRESENTATION = "EmptyAISPresentation"; /// To inform that there is an empty operation for presentation in the viewer -static const char * EVENT_EMPTY_OPERATION_PRESENTATION = "EmptyOperationPresentation"; +MAYBE_UNUSED static const char * EVENT_EMPTY_OPERATION_PRESENTATION = "EmptyOperationPresentation"; /// To block preview -static const char * EVENT_PREVIEW_BLOCKED = "PreviewBlocked"; +MAYBE_UNUSED static const char * EVENT_PREVIEW_BLOCKED = "PreviewBlocked"; /// To preview the current feature in the viewer (to compute the result) -static const char * EVENT_PREVIEW_REQUESTED = "PreviewRequested"; +MAYBE_UNUSED static const char * EVENT_PREVIEW_REQUESTED = "PreviewRequested"; /// To block automatic recomputation of any feature (by the GUI button press) -static const char * EVENT_AUTOMATIC_RECOMPUTATION_DISABLE = "DisableAutomaticRecomputation"; +MAYBE_UNUSED static const char * EVENT_AUTOMATIC_RECOMPUTATION_DISABLE + = "DisableAutomaticRecomputation"; /// To unblock block automatic recomputation (default state: the GUI button unpressed) -static const char * EVENT_AUTOMATIC_RECOMPUTATION_ENABLE = "EnableAutomaticRecomputation"; +MAYBE_UNUSED static const char * EVENT_AUTOMATIC_RECOMPUTATION_ENABLE + = "EnableAutomaticRecomputation"; /// Event ID that solver has conflicting constraints (comes with ModelAPI_SolverFailedMessage) -static const char * EVENT_SOLVER_FAILED = "SolverFailed"; +MAYBE_UNUSED static const char * EVENT_SOLVER_FAILED = "SolverFailed"; /// Event ID that the problem in solver disappeared -static const char * EVENT_SOLVER_REPAIRED = "SolverRepaired"; +MAYBE_UNUSED static const char * EVENT_SOLVER_REPAIRED = "SolverRepaired"; /// Event Id that sketch has DoF = 0 -static const char * EVENT_SKETCH_FULLY_CONSTRAINED = "SketchFullyConstrainted"; +MAYBE_UNUSED static const char * EVENT_SKETCH_FULLY_CONSTRAINED = "SketchFullyConstrainted"; /// Event Id that sketch has DoF > 0 -static const char * EVENT_SKETCH_UNDER_CONSTRAINED = "SketchUnderConstrainted"; +MAYBE_UNUSED static const char * EVENT_SKETCH_UNDER_CONSTRAINED = "SketchUnderConstrainted"; /// Event Id that sketch has DoF < 0 -static const char * EVENT_SKETCH_OVER_CONSTRAINED = "SketchOverConstrainted"; +MAYBE_UNUSED static const char * EVENT_SKETCH_OVER_CONSTRAINED = "SketchOverConstrainted"; /// Event ID that informs that some object has changed the stability -static const char * EVENT_STABILITY_CHANGED = "StabilityChanged"; +MAYBE_UNUSED static const char * EVENT_STABILITY_CHANGED = "StabilityChanged"; /// Event ID that the sketch is prepared and all grouped messages for the solver may be flushed -static const char * EVENT_SKETCH_PREPARED = "SketchPrepared"; +MAYBE_UNUSED static const char * EVENT_SKETCH_PREPARED = "SketchPrepared"; + +/// Event ID that provides a request for list of non-fixed objects necessary for DoF = 0 +MAYBE_UNUSED static const char * EVENT_GET_DOF_OBJECTS = "GetDoFObjects"; + +/// Event ID that provides a request for list of non-fixed objects necessary for DoF = 0 +MAYBE_UNUSED static const char * EVENT_DOF_OBJECTS = "DoFObjects"; + +/// Event ID that requests updates visual attributes for presentations +MAYBE_UNUSED static const char * EVENT_VISUAL_ATTRIBUTES = "UpdateVisualAttributes"; + +/// Event ID that 1D-fillet failed (comes with ModelAPI_ShapesFailedMessage) +MAYBE_UNUSED static const char * EVENT_OPERATION_SHAPES_FAILED = "OperationShapesFailed"; + +MAYBE_UNUSED static const char * EVENT_CHECK_CONSTRAINTS = "CheckConstrains"; + +MAYBE_UNUSED static const char * EVENT_REMOVE_CONSTRAINTS = "RemoveConstrains"; + +/// Event ID that license of specified features is checked and valid +MAYBE_UNUSED static const char * EVENT_FEATURE_LICENSE_VALID = "FeaturesLicenseValid"; + +/// To send preferences information: create part on init or not +MAYBE_UNUSED static const char * EVENT_CREATE_PART_ON_START = "CreatePartOnStart"; + /// Message that feature was changed (used for Object Browser update): moved, updated and deleted class MODELAPI_EXPORT ModelAPI_ObjectUpdatedMessage : public Events_MessageGroup @@ -167,6 +198,8 @@ public: class MODELAPI_EXPORT ModelAPI_EventCreator { public: + virtual ~ModelAPI_EventCreator() {} + /// creates created, updated or moved messages and sends to the loop virtual void sendUpdated(const ObjectPtr& theObject, const Events_ID& theEvent, const bool isGroupped = true) const = 0; @@ -329,12 +362,102 @@ class ModelAPI_ParameterEvalMessage : public Events_Message MODELAPI_EXPORT const std::string& error() const; }; +class ModelAPI_ImportParametersMessage : public Events_Message +{ + std::string myFilename; ///< filename where where parameters are stored + std::string myError; ///< error of processing, empty if there is no error + +public: + /// Static. Returns EventID of the message. + MODELAPI_EXPORT static Events_ID& eventId() + { + static const char* MY_PARAMETER_EVALUATION_EVENT_ID("ImportParametersMessage"); + static Events_ID anId = Events_Loop::eventByName(MY_PARAMETER_EVALUATION_EVENT_ID); + return anId; + } + + /// Useful method that creates and sends the event. + /// Returns the message, processed, with the resulting fields filled. + MODELAPI_EXPORT static std::shared_ptr + send(std::string theParameter, const void* theSender) + { + std::shared_ptr aMessage = + std::shared_ptr( + new ModelAPI_ImportParametersMessage(eventId(), theSender)); + aMessage->setFilename(theParameter); + Events_Loop::loop()->send(aMessage); + return aMessage; + } + + /// Creates an empty message + MODELAPI_EXPORT ModelAPI_ImportParametersMessage(const Events_ID theID, + const void* theSender = 0); + /// The virtual destructor + MODELAPI_EXPORT virtual ~ModelAPI_ImportParametersMessage(); + + /// Returns a filename stored in the message + MODELAPI_EXPORT std::string filename() const; + /// Sets a filename to the message + MODELAPI_EXPORT void setFilename(std::string theFilename); +}; + +class ModelAPI_BuildEvalMessage : public Events_Message +{ + FeaturePtr myParam; ///< parameters that should be evaluated + bool myIsProcessed; ///< true if results were set + std::string myError; ///< error of processing, empty if there is no error + /// result of processing, list of parameters in expression found + std::list > myParamsList; + + public: + /// Static. Returns EventID of the message. + MODELAPI_EXPORT static Events_ID& eventId() + { + static const char * MY_BUILD_EVALUATION_EVENT_ID("BuildEvaluationRequest"); + static Events_ID anId = Events_Loop::eventByName(MY_BUILD_EVALUATION_EVENT_ID); + return anId; + } + + /// Useful method that creates and sends the event. + /// Returns the message, processed, with the resulting fields filled. + MODELAPI_EXPORT static std::shared_ptr + send(FeaturePtr theParameter, const void* theSender) + { + std::shared_ptr aMessage = + std::shared_ptr( + new ModelAPI_BuildEvalMessage(eventId(), theSender)); + aMessage->setParameter(theParameter); + Events_Loop::loop()->send(aMessage); + return aMessage; + } + + /// Creates an empty message + MODELAPI_EXPORT ModelAPI_BuildEvalMessage(const Events_ID theID, const void* theSender = 0); + /// The virtual destructor + MODELAPI_EXPORT virtual ~ModelAPI_BuildEvalMessage(); + + /// Returns a parameter stored in the message + MODELAPI_EXPORT FeaturePtr parameter() const; + /// Sets a parameter to the message + MODELAPI_EXPORT void setParameter(FeaturePtr theParam); + /// Sets the results of processing + MODELAPI_EXPORT void setResults( + const std::list >& theParamsList, + const std::string& theError); + /// Returns the results of processing: list of parameters found in the expression + MODELAPI_EXPORT const std::list >& params() const; + /// Returns true if the expression is processed + MODELAPI_EXPORT bool isProcessed(); + + /// Returns the interpreter error (empty if no error) + MODELAPI_EXPORT const std::string& error() const; +}; /// Message to ask compute the positions of parameters in the expression class ModelAPI_ComputePositionsMessage : public Events_Message { - std::string myExpression; ///< the expression string - std::string myParamName; ///< name of the parameter to be searched + std::wstring myExpression; ///< the expression string + std::wstring myParamName; ///< name of the parameter to be searched std::list > myPositions; ///< computation result: start-end position indices public: @@ -349,7 +472,7 @@ public: /// Useful method that creates and sends the AttributeEvalMessage event /// Returns the message, processed, with the resulting fields filled MODELAPI_EXPORT static std::shared_ptr - send(const std::string& theExpression, const std::string& theParameter, const void* theSender) + send(const std::wstring& theExpression, const std::wstring& theParameter, const void* theSender) { std::shared_ptr aMessage = std::shared_ptr( @@ -366,11 +489,11 @@ public: MODELAPI_EXPORT virtual ~ModelAPI_ComputePositionsMessage(); /// Returns an expression stored in the message - MODELAPI_EXPORT const std::string& expression() const; + MODELAPI_EXPORT const std::wstring& expression() const; /// Returns a parameter name stored in the message - MODELAPI_EXPORT const std::string& parameter() const; + MODELAPI_EXPORT const std::wstring& parameter() const; /// Sets an expression and parameter needed for computation - MODELAPI_EXPORT void set(const std::string& theExpression, const std::string& theParameter); + MODELAPI_EXPORT void set(const std::wstring& theExpression, const std::wstring& theParameter); /// Sets the results of processing MODELAPI_EXPORT void setPositions(const std::list >& thePositions); /// Returns the results of processing: position start and end indices @@ -381,8 +504,8 @@ public: class ModelAPI_ObjectRenamedMessage : public Events_Message { ObjectPtr myObject; - std::string myOldName; - std::string myNewName; + std::wstring myOldName; + std::wstring myNewName; public: /// Static. Returns EventID of the message. @@ -395,8 +518,8 @@ class ModelAPI_ObjectRenamedMessage : public Events_Message /// Useful method that creates and sends the AttributeEvalMessage event MODELAPI_EXPORT static void send(ObjectPtr theObject, - const std::string& theOldName, - const std::string& theNewName, + const std::wstring& theOldName, + const std::wstring& theNewName, const void* theSender); /// Creates an empty message @@ -409,13 +532,13 @@ class ModelAPI_ObjectRenamedMessage : public Events_Message /// Sets an object MODELAPI_EXPORT void setObject(ObjectPtr theObject); /// Returns an old name - MODELAPI_EXPORT std::string oldName() const; + MODELAPI_EXPORT std::wstring oldName() const; /// Sets an old name - MODELAPI_EXPORT void setOldName(const std::string& theOldName); + MODELAPI_EXPORT void setOldName(const std::wstring& theOldName); /// Returns a new name - MODELAPI_EXPORT std::string newName() const; + MODELAPI_EXPORT std::wstring newName() const; /// Sets a new name - MODELAPI_EXPORT void setNewName(const std::string& theNewName); + MODELAPI_EXPORT void setNewName(const std::wstring& theNewName); }; /// Message that the parameter should be replaced with its value @@ -478,6 +601,7 @@ class ModelAPI_ObjectMovedMessage : public Events_Message { ObjectPtr myMovedObject; AttributePtr myMovedAttribute; + int myMovedPointIndex; std::shared_ptr myOriginalPosition; std::shared_ptr myCurrentPosition; @@ -488,7 +612,10 @@ public: /// Set object which is being moved (if the message already contains attribute it will be cleared) MODELAPI_EXPORT void setMovedObject(const ObjectPtr& theMovedObject); /// Set attribute which is being moved (if the message already contains object it will be cleared) - MODELAPI_EXPORT void setMovedAttribute(const AttributePtr& theMovedAttribute); + /// \param[in] theMovedAttribute moved attribute + /// \param[in] thePointIndex index of the point if the moved attribute is an array of points + MODELAPI_EXPORT void setMovedAttribute(const AttributePtr& theMovedAttribute, + const int thePointIndex = -1); /// Return moved object ObjectPtr movedObject() const @@ -496,6 +623,9 @@ public: /// Return moved attribute AttributePtr movedAttribute() const { return myMovedAttribute; } + /// Return index of the moved point + int movedPointIndex() const + { return myMovedPointIndex; } /// Set original mouse position MODELAPI_EXPORT void setOriginalPosition(double theX, double theY); @@ -514,4 +644,72 @@ public: { return myCurrentPosition; } }; +/// Message that sends the failed vertices of 1D-fillet to highlight them in 3D viewer +class ModelAPI_ShapesFailedMessage : public Events_Message +{ +public: + /// Creates an message + MODELAPI_EXPORT ModelAPI_ShapesFailedMessage(const Events_ID theID, const void* theSender = 0); + /// Default destructor + MODELAPI_EXPORT virtual ~ModelAPI_ShapesFailedMessage(); + /// Static. Returns EventID of the message. + MODELAPI_EXPORT static Events_ID eventId() + { + return Events_Loop::eventByName(EVENT_OPERATION_SHAPES_FAILED); + } + + /// Sets list of failed vertices + MODELAPI_EXPORT void setShapes(const std::list< std::shared_ptr >& theVertices); + /// Returns list of failed vertices + MODELAPI_EXPORT const std::list< std::shared_ptr >& shapes() const; + +private: + std::list< std::shared_ptr > myShapes; +}; + +///Message that sends the constraints to check or remove +class ModelAPI_CheckConstraintsMessage : public Events_Message +{ +public: + /// Creates an empty message + MODELAPI_EXPORT ModelAPI_CheckConstraintsMessage( + const Events_ID theID, const void* theSender = 0); + /// The virtual destructor + MODELAPI_EXPORT virtual ~ModelAPI_CheckConstraintsMessage(); + + ///Get list of constrains + MODELAPI_EXPORT const std::set& constraints() const; + + ///Set list of constrains + MODELAPI_EXPORT void setConstraints(const std::set& theConstraints); + +private: + std::set myConstraints; +}; + + +/// Message that sends the features which license is checked and valid +class ModelAPI_FeaturesLicenseValidMessage : public Events_Message +{ +public: + /// Creates an message + MODELAPI_EXPORT + ModelAPI_FeaturesLicenseValidMessage(const Events_ID theID, const void* theSender = 0); + /// Default destructor + MODELAPI_EXPORT virtual ~ModelAPI_FeaturesLicenseValidMessage(); + /// Static. Returns EventID of the message. + MODELAPI_EXPORT static Events_ID eventId() + { + return Events_Loop::eventByName(EVENT_FEATURE_LICENSE_VALID); + } + + /// Sets list of features with valid license + MODELAPI_EXPORT void setFeatures(const std::set& theFeatures); + /// Returns list of features with valid license + MODELAPI_EXPORT const std::set& features() const; + +private: + std::set myFeatures; +}; + #endif