Salome HOME
17.12.2013. Added Partition algorithm (draft version).
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_DataObject.h
index a93963bd348db8ce8c59f1dc5f0493cd822f4377..d8b78a8c04e784cb7ae7e7665c411a25ca98a7cd 100644 (file)
@@ -50,15 +50,22 @@ public:
     BathymetryId                     //!< Bathymetry column
   };
 
+  //! Role
+  enum {
+    IsInOperationRole = Qtx::AppropriateRole + 100 //!< Filter value role
+  };
+
   /**
    * Constructor.
    * \param theParent parent data object
    * \param theData reference to the corresponding object from data structure
    * \param theParentEntry entry of the parent data object (for reference objects)
+   * \param theIsInOperation if true then the tree is used for a browser within an operation, it is false by default
    */
-  HYDROGUI_DataObject( SUIT_DataObject* theParent,
+  HYDROGUI_DataObject( SUIT_DataObject*         theParent,
                        Handle(HYDROData_Entity) theData,
-                       const QString& theParentEntry );
+                       const QString&           theParentEntry,
+                       const bool               theIsInOperation = false );
     
   /**
    * Returns the unique object identifier string.
@@ -80,6 +87,21 @@ public:
    */
   virtual QFont font( const int = SUIT_DataObject::NameId ) const;
 
+  /**
+   * Returns the object color.
+   */
+  virtual QColor color( const ColorRole, const int = NameId ) const;
+
+  /**
+   * Returns the object icon.
+   */
+  virtual QPixmap icon( const int = NameId ) const;
+
+  /**
+   * Returns true if renaming is allowed for the object.
+   */
+  virtual bool    renameAllowed( const int = NameId ) const;
+
   /**
    * Returns the model data object.
    */
@@ -100,10 +122,31 @@ public:
    */
   static QString dataObjectEntry( const Handle(HYDROData_Entity)& theObject,
                                   const bool theWithPrefix = true );
+  /**
+   * Sets the validity flag: if object is valid or not.
+   * \param theIsValid is true for valid objects, false for invalid
+   */
+  void setIsValid( const bool theIsValid );
+
+  /**
+   * Returns the validity flag: is object valid or not
+   * \return false if object is not valid
+   */
+  bool isValid() const;
+
+  /**
+   * Returns the usage within active operation flag: 
+   * is the object is used in the local tree of an active operation dialog or not.
+   * \return false if the object is used in the main object browser tree
+   */
+  bool isInOperation() const { return myIsInOperation; }
 
 protected:
   Handle(HYDROData_Entity) myData; ///< object from data model
   QString myParentEntry;
+  bool myIsValid; ///< indicates if the object is valid
+  bool myIsInOperation; ///< indicates if the object is used within an active operation
+  QPixmap myIcon;
 };
 
 /**
@@ -122,10 +165,12 @@ public:
    * Constructor.
    * \param theParent parent data object
    * \param theName displayed name
+   * \param theIsInOperation if true then the tree is used for a browser within an operation, it is false by default
    */
   HYDROGUI_NamedObject( SUIT_DataObject* theParent,
-                        const QString& theName,
-                        const QString& theParentEntry  );
+                        const QString&   theName,
+                        const QString&   theParentEntry,
+                        const bool       theIsInOperation = false );
     
   /**
    * Returns the unique object identifier string.
@@ -137,9 +182,23 @@ public:
    */
   virtual QString name() const;
 
+  /**
+   * Returns the object icon.
+   */
+  virtual QPixmap icon( const int = NameId ) const;
+
+  /**
+   * Returns the usage within active operation flag: 
+   * is the object is used in the local tree of an active operation dialog or not.
+   * \return false if the object is used in the main object browser tree
+   */
+  bool isInOperation() const { return myIsInOperation; }
+
 private:
   QString myName; ///< name in the OB
   QString myParentEntry;
+  QPixmap myIcon;
+  bool myIsInOperation; ///< indicates if the object is used within an active operation
 };
 
 /**
@@ -154,12 +213,14 @@ public:
    * Constructor.
    * \param theParent parent data object
    * \param theName displayed name
+   * \param theIsInOperation if true then the tree is used for a browser within an operation, it is false by default
    */
   HYDROGUI_DropTargetObject( SUIT_DataObject* theParent,
-                             const QString& theName,
-                             const QString& theParentEntry  );
+                             const QString&   theName,
+                             const QString&   theParentEntry,
+                             const bool       theIsInOperation = false );
     
-  bool isDropAccepted() const override { return true; }
+  bool isDropAccepted() const { return true; }
 };
 
 #endif