X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_Events.h;h=09518c7917b6dfd8c1aff8ba4800a261e5967cda;hb=690012a1c13c51062fc01656ee18dd8edb947e02;hp=74d38a7fdebe194b74d132f1526dd4ba4242fd6a;hpb=f796a1cc0ab2c9d545e1a642f1e207ece3316b82;p=modules%2Fshaper.git diff --git a/src/Model/Model_Events.h b/src/Model/Model_Events.h index 74d38a7fd..09518c791 100644 --- a/src/Model/Model_Events.h +++ b/src/Model/Model_Events.h @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + // File: Model_Events.h // Created: 10 Apr 2014 // Author: Mikhail PONIKAROV @@ -8,6 +10,8 @@ #include #include +#include + /// Allovs to create ModelAPI messages class Model_EventCreator : public ModelAPI_EventCreator { @@ -16,9 +20,12 @@ class Model_EventCreator : public ModelAPI_EventCreator virtual void sendUpdated(const ObjectPtr& theObject, const Events_ID& theEvent, const bool isGroupped = true) const; /// creates deleted message and sends to the loop - virtual void sendDeleted(const boost::shared_ptr& theDoc, + virtual void sendDeleted(const std::shared_ptr& theDoc, const std::string& theGroup) const; + /// creates reordered message and sends to the loop + virtual void sendReordered(const std::shared_ptr& theReordered) const; + /// must be one per application, the constructor for internal usage only Model_EventCreator(); }; @@ -36,44 +43,68 @@ class Model_ObjectUpdatedMessage : public ModelAPI_ObjectUpdatedMessage public: /// Returns the feature that has been updated - virtual std::set objects() const; + virtual const std::set& objects() const; //! Creates a new empty group (to store it in the loop before flush) - virtual boost::shared_ptr newEmpty(); + virtual std::shared_ptr newEmpty(); //! Allows to join the given message with the current one - virtual void Join(const boost::shared_ptr& theJoined); + virtual void Join(const std::shared_ptr& theJoined); }; /// Message that feature was deleted (used for Object Browser update) class Model_ObjectDeletedMessage : public ModelAPI_ObjectDeletedMessage { - boost::shared_ptr myDoc; ///< document owner of the feature + std::shared_ptr myDoc; ///< document owner of the feature std::set myGroups; ///< group identifiers that contained the deleted feature /// Use ModelAPI for creation of this event. - Model_ObjectDeletedMessage(const boost::shared_ptr& theDoc, + Model_ObjectDeletedMessage(const std::shared_ptr& theDoc, const std::string& theGroup); friend class Model_EventCreator; public: - /// Returns the feature that has been updated - virtual boost::shared_ptr document() const + /// Returns the document that has been updated + virtual std::shared_ptr document() const { return myDoc; } - /// Returns the group where the feature was deleted + /// Returns the group where the objects were deleted virtual const std::set& groups() const { return myGroups; } - virtual boost::shared_ptr newEmpty(); + /// Returns the new empty message of this type + virtual std::shared_ptr newEmpty(); + /// Returns the identifier of this message virtual const Events_ID messageId(); - virtual void Join(const boost::shared_ptr& theJoined); + /// Appends to this message the given one + virtual void Join(const std::shared_ptr& theJoined); +}; + +/// Message that feature was deleted (used for Object Browser update) +class Model_OrderUpdatedMessage : public ModelAPI_OrderUpdatedMessage +{ + std::shared_ptr myReordered; ///< the feature that was moved + + /// Use ModelAPI for creation of this event. + Model_OrderUpdatedMessage(FeaturePtr theReordered, + const void* theSender = 0); + + friend class Model_EventCreator; + public: + /// Returns the document that has been updated + virtual std::shared_ptr reordered() + { + return myReordered; + } + + /// Returns the identifier of this message + virtual const Events_ID messageId(); }; #endif