#include "HYDROGUI_DataObject.h"
-#include <HYDROData_Image.h>
-#include <HYDROData_Zone.h>
+#include <HYDROData_DummyObject3D.h>
#include <HYDROData_Object.h>
-#include <HYDROData_Bathymetry.h>
+
+#include <TDF_Tool.hxx>
#include <SUIT_DataObject.h>
+#include <SUIT_ResourceMgr.h>
+#include <SUIT_Session.h>
+#include <SUIT_Operation.h>
+#include <CAM_Module.h>
+#include <CAM_Application.h>
+#include <SUIT_Study.h>
-#include <TDF_Tool.hxx>
+#include <QPixmap>
HYDROGUI_DataObject::HYDROGUI_DataObject( SUIT_DataObject* theParent,
Handle(HYDROData_Entity) theData,
- const QString& theParentEntry )
+ const QString& theParentEntry,
+ const bool theIsInOperation )
: CAM_DataObject( theParent ),
LightApp_DataObject( theParent ),
myData( theData ),
- myParentEntry( theParentEntry )
+ myParentEntry( theParentEntry ),
+ myIsValid( true ),
+ myIsInOperation( theIsInOperation )
{
}
QFont aFont = LightApp_DataObject::font( theId );
if( theId == NameId )
{
- Handle(HYDROData_Image) anImage = Handle(HYDROData_Image)::DownCast( modelObject() );
- if( !anImage.IsNull() && anImage->MustBeUpdated() )
+ Handle(HYDROData_Entity) aDataObject = modelObject();
+ if( !aDataObject.IsNull() && aDataObject->IsMustBeUpdated() )
+ {
aFont.setItalic( true );
+ aFont.setBold( true );
+ }
}
return aFont;
}
-QString HYDROGUI_DataObject::text( const int theColumnId ) const
+QColor HYDROGUI_DataObject::color( const ColorRole theRole, const int theId ) const
{
- QString aRes;
- if( !myData.IsNull() )
+ QColor aColor;
+
+ if ( !isValid() ) {
+ switch ( theRole )
+ {
+ case Text:
+ case Foreground:
+ case Highlight:
+ aColor = Qt::red; // red
+ break;
+ case HighlightedText:
+ // text color for the highlighted item
+ aColor = Qt::white; // white
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if ( !aColor.isValid() )
{
- if ( theColumnId == RefObjectId || theColumnId == BathymetryId )
+ Handle(HYDROData_Entity) aDataObject = modelObject();
+ if( !aDataObject.IsNull() && aDataObject->IsMustBeUpdated() )
{
- Handle(HYDROData_Zone) aZone = Handle(HYDROData_Zone)::DownCast( myData );
- if ( !aZone.IsNull() )
+ switch ( theRole )
{
- HYDROData_SequenceOfObjects::Iterator anIter( aZone->GetGeometryObjects() );
- for ( ; anIter.More(); anIter.Next() )
- {
- Handle(HYDROData_Object) aRefGeomObj =
- Handle(HYDROData_Object)::DownCast( anIter.Value() );
- if ( !aRefGeomObj.IsNull() )
- {
- switch ( theColumnId )
- {
- case RefObjectId:
- // Get Ref.Object name
- aRes += aRefGeomObj->GetName() + ", ";
- break;
- case BathymetryId:
- // Get bathymetry name
- aRes += aRefGeomObj->GetBathymetry()->GetName();
- }
- }
- }
- }
- if ( aRes.length() > 1 )
- {
- aRes.remove( aRes.length() - 2, 2 );
+ case Text:
+ case Foreground:
+ case Highlight:
+ aColor = Qt::blue; // color for objects which need updating
+ break;
+ case HighlightedText:
+ // text color for the highlighted item
+ aColor = Qt::white; // white
+ break;
+
+ default:
+ break;
}
}
- else
- {
- aRes = LightApp_DataObject::text( theColumnId );
- }
}
- return aRes;
+
+ if ( !aColor.isValid() ) {
+ aColor = LightApp_DataObject::color( theRole, theId );
+ }
+
+ return aColor;
}
-QColor HYDROGUI_DataObject::color( const ColorRole theColorRole, const int theColumnId ) const
+QPixmap HYDROGUI_DataObject::icon( const int theId ) const
{
- //TODO: Implement red color for bathymetry conflicts in case creation dialog
- return LightApp_DataObject::color( theColorRole, theColumnId );
-}
+ SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+ if ( theId == NameId )
+ {
+ QString anIcon;
+ Handle(HYDROData_Entity) aDataObject = modelObject();
+ if( aDataObject.IsNull() )
+ {
+ anIcon = QObject::tr( "HYDRO_TYPE0_ICO" ); // KIND_UNKNOWN
+ }
+ else
+ {
+ QString aNeedUpdate( aDataObject->IsMustBeUpdated() ? "M_" : "" );
+ int anObjectKind = (int)aDataObject->GetKind();
+ if ( anObjectKind == KIND_DUMMY_3D )
+ {
+ Handle(HYDROData_DummyObject3D) anObject3D =
+ Handle(HYDROData_DummyObject3D)::DownCast( aDataObject );
+
+ Handle(HYDROData_Object) aFatherObj = anObject3D->GetObject();
+ if ( !aFatherObj.IsNull() )
+ anObjectKind = aFatherObj->GetKind();
+ }
+
+ anIcon = QObject::tr( QString("HYDRO_%1TYPE%2_ICO").arg( aNeedUpdate ).arg( anObjectKind ).toAscii() );
+ }
+
+ return aResMgr->loadPixmap( "HYDRO", anIcon );
+ }
+ return LightApp_DataObject::icon( theId );
+}
QString HYDROGUI_DataObject::dataObjectEntry( const Handle(HYDROData_Entity)& theObject,
const bool theWithPrefix )
return aEntryStr;
}
+void HYDROGUI_DataObject::setIsValid( const bool theIsValid )
+{
+ myIsValid = theIsValid;
+}
+
+bool HYDROGUI_DataObject::isValid() const
+{
+ return myIsValid;
+}
+
+bool HYDROGUI_DataObject::renameAllowed( const int theColumnId ) const
+{
+ bool aRes = false;
+ if ( theColumnId == NameId && module())
+ {
+ SUIT_Operation* anOp = module()->application()->activeStudy()->activeOperation();
+ if ( anOp && anOp->inherits( "HYDROGUI_CalculationOp" ) )
+ {
+ aRes = isInOperation();
+ }
+ else
+ {
+ aRes = !anOp;
+ }
+ }
+ else
+ {
+ aRes = LightApp_DataObject::renameAllowed( theColumnId );
+ }
+ return aRes;
+}
+
+
+
HYDROGUI_NamedObject::HYDROGUI_NamedObject( SUIT_DataObject* theParent,
const QString& theName,
- const QString& theParentEntry )
+ const QString& theParentEntry,
+ const bool theIsInOperation )
: CAM_DataObject( theParent ),
LightApp_DataObject( theParent ),
myName( theName ),
- myParentEntry( theParentEntry )
+ myParentEntry( theParentEntry ),
+ myIsInOperation( theIsInOperation )
{
}
QString HYDROGUI_NamedObject::name() const
{
- return myName;
+ return myName.toUpper();
+}
+
+QPixmap HYDROGUI_NamedObject::icon( const int theId ) const
+{
+ SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
+ if ( theId == NameId )
+ {
+ return aResMgr->loadPixmap( "HYDRO", QObject::tr( "PARTITION_ICO" ) );
+ }
+ return LightApp_DataObject::icon( theId );
+}
+
+QFont HYDROGUI_NamedObject::font( const int theId ) const
+{
+ QFont aFont = LightApp_DataObject::font( theId );
+ if( theId == NameId )
+ {
+ if ( dynamic_cast<CAM_ModuleObject*>( parent() ) )
+ {
+ aFont.setBold( true );
+ }
+ }
+ return aFont;
+}
+
+HYDROGUI_DropTargetObject::HYDROGUI_DropTargetObject( SUIT_DataObject* theParent,
+ const QString& theName,
+ const QString& theParentEntry,
+ const bool theIsInOperation )
+: HYDROGUI_NamedObject( theParent, theName, theParentEntry, theIsInOperation ),
+ CAM_DataObject( theParent )
+{
}