-// 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
#include "HYDROGUI_DataObject.h"
-#include <SUIT_DataObject.h>
+#include <HYDROData_DummyObject3D.h>
+#include <HYDROData_ImmersibleZone.h>
+#include <HYDROData_Object.h>
+#include <HYDROData_ArtificialObject.h>
+#include <HYDROData_NaturalObject.h>
+#include <HYDROData_BCPolygon.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 <QPixmap>
+#include <QPainter>
HYDROGUI_DataObject::HYDROGUI_DataObject( SUIT_DataObject* theParent,
Handle(HYDROData_Entity) theData,
- const QString& theParentEntry )
+ const QString& theParentEntry,
+ const bool theIsInOperation )
: CAM_DataObject( theParent ),
+#ifndef TEST_MODE
LightApp_DataObject( theParent ),
+#endif
myData( theData ),
myParentEntry( theParentEntry ),
- myIsValid( true )
+ myIsValid( true ),
+ myIsInOperation( theIsInOperation )
{
}
QString HYDROGUI_DataObject::entry() const
{
QString anEntry = HYDROGUI_DataObject::dataObjectEntry( modelObject() );
- if( isReference() )
+ if( !refEntry().isEmpty() )
anEntry.prepend( myParentEntry + "_" );
return anEntry;
}
QFont HYDROGUI_DataObject::font( const int theId ) const
{
- QFont aFont = LightApp_DataObject::font( theId );
+ QFont aFont = PARENT::font( theId );
if( theId == NameId )
{
Handle(HYDROData_Entity) aDataObject = modelObject();
- if( !aDataObject.IsNull() && aDataObject->IsMustBeUpdated() )
+ if( !aDataObject.IsNull() && aDataObject->IsMustBeUpdated( HYDROData_Entity::Geom_All ) )
+ {
aFont.setItalic( true );
+ aFont.setBold( true );
+ }
}
return aFont;
}
case Text:
case Foreground:
case Highlight:
- aColor = QColor( 255, 0, 0 ); // red
+ aColor = Qt::red; // red
break;
case HighlightedText:
// text color for the highlighted item
- aColor = QColor( 255, 255, 255 ); // white
+ aColor = Qt::white; // white
break;
default:
}
}
+ if ( !aColor.isValid() )
+ {
+ Handle(HYDROData_Entity) aDataObject = modelObject();
+ if( !aDataObject.IsNull() && aDataObject->IsMustBeUpdated( HYDROData_Entity::Geom_All ) )
+ {
+ switch ( theRole )
+ {
+ 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;
+ }
+ }
+ }
+
if ( !aColor.isValid() ) {
- aColor = LightApp_DataObject::color( theRole, theId );
+ aColor = PARENT::color( theRole, theId );
}
return aColor;
{
QString anIcon;
Handle(HYDROData_Entity) aDataObject = modelObject();
+ Handle(HYDROData_Object) anObject;
+ Handle(HYDROData_ArtificialObject) anAObject = Handle( HYDROData_ArtificialObject )::DownCast(aDataObject);
+ Handle(HYDROData_NaturalObject) aNObject = Handle( HYDROData_NaturalObject )::DownCast(aDataObject);
+
+ if (!anAObject.IsNull())
+ anObject = anAObject;
+ if (!aNObject.IsNull())
+ anObject = aNObject;
+
if( aDataObject.IsNull() )
{
anIcon = QObject::tr( "HYDRO_TYPE0_ICO" ); // KIND_UNKNOWN
}
else
{
- anIcon = QObject::tr( QString("HYDRO_TYPE%1_ICO").arg( (int)aDataObject->GetKind() ).toAscii() );
+ QString aNeedUpdate( aDataObject->IsMustBeUpdated( HYDROData_Entity::Geom_All ) ? "M_" : "" );
+
+ int anObjectKind = (int)aDataObject->GetKind();
+ bool IsUnsImmZone = false;
+ 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 ).toLatin1() );
+ }
+ else if ( !anObject.IsNull() )
+ {
+ bool IsSubm = anObject->IsSubmersible();
+ QString anIcon1 = QObject::tr( QString("HYDRO_%1TYPE%2_ICO").arg( aNeedUpdate ).arg( anObjectKind ).toLatin1() );
+ QString anIcon2;
+ if (IsSubm)
+ anIcon2 = QObject::tr( QString("HYDRO_SUBMERSIBLE16_ICO").toLatin1());
+ else
+ anIcon2 = QObject::tr( QString("HYDRO_UNSUBMERSIBLE16_ICO").toLatin1());
+
+ QPixmap qpm1 = aResMgr->loadPixmap( "HYDRO", anIcon1 );
+ QPixmap qpm2 = aResMgr->loadPixmap( "HYDRO", anIcon2 );
+ QPixmap qpmD(32,16);
+ qpmD.fill(QColor(0,0,0));
+ QPainter painter;
+ painter.begin(&qpmD);
+ painter.drawPixmap(0, 0, qpm1);
+ painter.drawPixmap(16, 0, qpm2);
+ painter.end();
+ return qpmD;
+ }
+ else if (anObjectKind == KIND_BC_POLYGON)
+ {
+ Handle(HYDROData_BCPolygon) aBCObj = Handle(HYDROData_BCPolygon)::DownCast( aDataObject );
+ int aBT = aBCObj->GetBoundaryType();
+ if (aBT == 1)
+ anIcon = QObject::tr( QString("HYDRO_BC_POLYGON_TYPE1_ICO").toLatin1());
+ else if (aBT == 2)
+ anIcon = QObject::tr( QString("HYDRO_BC_POLYGON_TYPE2_ICO").toLatin1());
+ else if (aBT == 3)
+ anIcon = QObject::tr( QString("HYDRO_BC_POLYGON_TYPE3_ICO").toLatin1());
+ else
+ anIcon = QObject::tr( QString("HYDRO_BC_POLYGON_TYPE_UNDEF_ICO").toLatin1());
+ }
+ else
+ anIcon = QObject::tr( QString("HYDRO_%1TYPE%2_ICO").arg( aNeedUpdate ).arg( anObjectKind ).toLatin1() );
}
return aResMgr->loadPixmap( "HYDRO", anIcon );
}
- return LightApp_DataObject::icon( theId );
+ return PARENT::icon( theId );
}
QString HYDROGUI_DataObject::dataObjectEntry( const Handle(HYDROData_Entity)& theObject,
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 = PARENT::renameAllowed( theColumnId );
+ }
+ return aRes;
+}
+
+void HYDROGUI_DataObject::updateBy( SUIT_DataObject* theObj )
+{
+ HYDROGUI_DataObject* aDataObj = dynamic_cast<HYDROGUI_DataObject*>( theObj );
+ if( !aDataObj )
+ return;
+
+ myData = aDataObj->myData;
+ myParentEntry = aDataObj->myParentEntry;
+ myIsValid = aDataObj->myIsValid;
+ myIsInOperation = aDataObj->myIsInOperation;
+ myIcon = aDataObj->myIcon;
+ setModified( true );
+}
+
HYDROGUI_NamedObject::HYDROGUI_NamedObject( SUIT_DataObject* theParent,
const QString& theName,
- const QString& theParentEntry )
+ const QString& theParentEntry,
+ const bool theIsInOperation )
: CAM_DataObject( theParent ),
+#ifndef TEST_MODE
LightApp_DataObject( theParent ),
+#endif
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
{
return aResMgr->loadPixmap( "HYDRO", QObject::tr( "PARTITION_ICO" ) );
}
- return LightApp_DataObject::icon( theId );
+ return PARENT::icon( theId );
+}
+
+QFont HYDROGUI_NamedObject::font( const int theId ) const
+{
+ QFont aFont = PARENT::font( theId );
+ if( theId == NameId )
+ {
+ if ( dynamic_cast<CAM_ModuleObject*>( parent() ) )
+ {
+ aFont.setBold( true );
+ }
+ }
+ return aFont;
+}
+
+void HYDROGUI_NamedObject::updateBy( SUIT_DataObject* theObj )
+{
+ HYDROGUI_NamedObject* aNamedObj = dynamic_cast<HYDROGUI_NamedObject*>( theObj );
+ if( !aNamedObj )
+ return;
+
+ myName = aNamedObj->myName;
+ myParentEntry = aNamedObj->myParentEntry;
+ myIcon = aNamedObj->myIcon;
+ myIsInOperation = aNamedObj->myIsInOperation;
+ setModified( true );
}
+
+
+
+
+
HYDROGUI_DropTargetObject::HYDROGUI_DropTargetObject( SUIT_DataObject* theParent,
const QString& theName,
- const QString& theParentEntry )
-: HYDROGUI_NamedObject( theParent, theName, theParentEntry ), CAM_DataObject( theParent )
+ const QString& theParentEntry,
+ const bool theIsInOperation )
+: HYDROGUI_NamedObject( theParent, theName, theParentEntry, theIsInOperation ),
+ CAM_DataObject( theParent )
{
}