Salome HOME
refs #1813 ... lot 14 combined commit : parts : 1 - 16
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_DataObject.cxx
index ffaefe8310e87cec6bf41946c0397ce212f8b349..f68c26e692f4999d207bfd8e927c067ed1a6b0d1 100644 (file)
 #include "HYDROGUI_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>
 
@@ -32,6 +36,7 @@
 #include <SUIT_Study.h>
 
 #include <QPixmap>
+#include <QPainter>
 
 HYDROGUI_DataObject::HYDROGUI_DataObject( SUIT_DataObject* theParent, 
                                           Handle(HYDROData_Entity) theData,
@@ -144,6 +149,15 @@ QPixmap HYDROGUI_DataObject::icon( const int theId ) const
   {
     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
@@ -153,6 +167,7 @@ QPixmap HYDROGUI_DataObject::icon( const int theId ) const
       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 = 
@@ -161,9 +176,44 @@ QPixmap HYDROGUI_DataObject::icon( const int theId ) const
         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() );
       }
-
-      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 );