X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_DataObject.h;h=28aa22e4df5f90e668161e4ae712dd830b1141f3;hb=d6e19029f8b41f295db878e9aecf451c2edda4af;hp=69693349d7fd1e519cdd089f8824c86d17890966;hpb=ca0e09c1e1bb19c9855e2f3839243da36097ee1c;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_DataObject.h b/src/HYDROGUI/HYDROGUI_DataObject.h index 69693349..28aa22e4 100644 --- a/src/HYDROGUI/HYDROGUI_DataObject.h +++ b/src/HYDROGUI/HYDROGUI_DataObject.h @@ -1,12 +1,8 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 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 // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,16 +16,27 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + #ifndef HYDROGUI_DATAOBJECT_H #define HYDROGUI_DATAOBJECT_H -#include +#include -#include +#ifdef WIN32 + #pragma warning( disable: 4250 ) + #pragma warning( disable: 4251 ) +#endif +#include #include #include #include +#include + +#ifdef WIN32 + #pragma warning( disable: 4250 ) + #pragma warning( disable: 4251 ) +#endif /** * \class HYDROGUI_DataObject @@ -43,15 +50,28 @@ class HYDROGUI_DataObject : public LightApp_DataObject { public: + //! Column id + enum { + RefObjectId = RefEntryId + 1, //!< Ref.Object column + AltitudeObjId //!< Altitude 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, - Handle(HYDROData_Object) theData, - const QString& theParentEntry ); + HYDROGUI_DataObject( SUIT_DataObject* theParent, + Handle(HYDROData_Entity) theData, + const QString& theParentEntry, + const bool theIsInOperation = false ); /** * Returns the unique object identifier string. @@ -73,15 +93,30 @@ 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. */ - const Handle(HYDROData_Object)& modelObject() const { return myData; } + const Handle(HYDROData_Entity)& modelObject() const { return myData; } /** * Redefines the object. */ - void setObject( Handle(HYDROData_Object) theObject ) { myData = theObject; } + void setObject( const Handle(HYDROData_Entity)& theObject ) { myData = theObject; } /** * Returns the entry prefix for all HYDRO data objects. @@ -91,12 +126,35 @@ public: /** * Returns the full entry for the specified data object. */ - static QString dataObjectEntry( const Handle(HYDROData_Object)& theObject, + 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; } + + void updateBy( SUIT_DataObject* ); protected: - Handle(HYDROData_Object) myData; ///< object from data model + 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; }; /** @@ -115,10 +173,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. @@ -130,9 +190,52 @@ public: */ virtual QString name() const; + /** + * Returns the font of displayed object name. + */ + virtual QFont font( const int = SUIT_DataObject::NameId ) 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; } + + void updateBy( SUIT_DataObject* ); + private: QString myName; ///< name in the OB QString myParentEntry; + QPixmap myIcon; + bool myIsInOperation; ///< indicates if the object is used within an active operation +}; + +/** + * \brief Module data object, used for dropping items in the object browser. + * + * It inherits NamedObject with only difference - it accepts dropping. + */ +class HYDROGUI_DropTargetObject : public HYDROGUI_NamedObject +{ +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 bool theIsInOperation = false ); + + bool isDropAccepted() const { return true; } }; #endif