Salome HOME
Use LightApp library
[modules/gui.git] / src / SalomeApp / SalomeApp_DataObject.cxx
index 1f20285bd16394d81a7bf20b6816081a632bf9a2..62cb0add74f663c2b51c8e234eb96faf470c48de 100644 (file)
@@ -1,7 +1,7 @@
 #include "SalomeApp_DataObject.h"
 
 #include "SalomeApp_Study.h"
-#include "SalomeApp_RootObject.h"
+#include "LightApp_RootObject.h"
 
 #include <SUIT_Application.h>
 #include <SUIT_ResourceMgr.h>
 #include <SALOMEDSClient_AttributeTableOfReal.hxx>
 #include <SALOMEDSClient_AttributeTableOfInteger.hxx>
 
-/*!
-       Class: SalomeApp_DataObject::Key
-       Level: Internal
-*/
-
-class SalomeApp_DataObject::Key : public SUIT_DataObjectKey
-{
-public:
-  Key( const QString& );
-  virtual ~Key();
-
-  virtual bool isLess( const SUIT_DataObjectKey* ) const;
-  virtual bool isEqual( const SUIT_DataObjectKey* ) const;
-
-private:
-  QString myEntry;
-};
-
-SalomeApp_DataObject::Key::Key( const QString& entry )
-: SUIT_DataObjectKey(),
-  myEntry( entry )
-{
-}
-
-SalomeApp_DataObject::Key::~Key()
-{
-}
-
-bool SalomeApp_DataObject::Key::isLess( const SUIT_DataObjectKey* other ) const
-{
-  Key* that = (Key*)other;
-  return myEntry < that->myEntry;
-}
-
-bool SalomeApp_DataObject::Key::isEqual( const SUIT_DataObjectKey* other ) const
-{
-  Key* that = (Key*)other;
-  return myEntry == that->myEntry;
-}
-
-/*!
+/*
        Class: SalomeApp_DataObject
        Level: Public
 */
-
+/*!Constructor. Initialize by \a parent*/
 SalomeApp_DataObject::SalomeApp_DataObject( SUIT_DataObject* parent )
-: CAM_DataObject( parent )
+: LightApp_DataObject( parent ),
+  CAM_DataObject( parent )
 {
 }
 
+/*!Constructor. Initialize by \a parent and SObject*/
 SalomeApp_DataObject::SalomeApp_DataObject( const _PTR(SObject)& sobj, SUIT_DataObject* parent )
-: CAM_DataObject( parent )
+: LightApp_DataObject( parent ),
+  CAM_DataObject( parent )
 {
   myObject = sobj;
 }
 
+/*!Destructor. Do nothing.*/
 SalomeApp_DataObject::~SalomeApp_DataObject()
 {
 }
 
+/*!Gets object ID.
+ *\retval QString
+ */
 QString SalomeApp_DataObject::entry() const
 {
   if ( myObject )
@@ -82,12 +49,7 @@ QString SalomeApp_DataObject::entry() const
   return QString::null;
 }
 
-SUIT_DataObjectKey* SalomeApp_DataObject::key() const
-{
-  QString str = entry();
-  return new Key( str );
-}
-
+/*!Gets name of object.*/
 QString SalomeApp_DataObject::name() const
 {
   QString str;
@@ -103,11 +65,17 @@ QString SalomeApp_DataObject::name() const
   }
 
   if ( isReference() )
-    str = QString( "* " ) + str;
+    {
+      if ( !(QString(referencedObject()->GetName().c_str()).isEmpty()) )
+       str = QString( "* " ) + str;
+      else
+       str = QString( "<Invalid Reference>" );
+    }
 
   return str;
 }
 
+/*!Gets icon picture of object.*/
 QPixmap SalomeApp_DataObject::icon() const
 {
   _PTR(GenericAttribute) anAttr;
@@ -115,7 +83,7 @@ QPixmap SalomeApp_DataObject::icon() const
     _PTR(AttributePixMap) aPixAttr ( anAttr );
     if ( aPixAttr->HasPixMap() ){
       QString pixmapName = QObject::tr( aPixAttr->GetPixMap().c_str() );
-      SalomeApp_RootObject* aRoot = dynamic_cast<SalomeApp_RootObject*>( root() );
+      LightApp_RootObject* aRoot = dynamic_cast<LightApp_RootObject*>( root() );
       if ( aRoot && aRoot->study() ) {
        QPixmap pixmap = aRoot->study()->application()->resourceMgr()->loadPixmap( componentDataType(), pixmapName, false ); 
        return pixmap;
@@ -125,13 +93,23 @@ QPixmap SalomeApp_DataObject::icon() const
   return QPixmap();
 }
 
+/*!Gets text value for one of entity:
+ *\li Value           (id = SalomeApp_DataObject::CT_Value)
+ *\li Entry           (id = SalomeApp_DataObject::CT_Entry)
+ *\li IOR             (id = SalomeApp_DataObject::CT_IOR)
+ *\li Reference entry (id = SalomeApp_DataObject::CT_RefEntry)
+ */
 QString SalomeApp_DataObject::text( const int id ) const
 {
   QString txt;
   switch ( id )
   {
   case CT_Value:
+#ifndef WNT
     if ( componentObject() != this )
+#else
+    if ( componentObject() != (SUIT_DataObject*)this )
+#endif
       txt = value( referencedObject() );
     break;
   case CT_Entry:
@@ -148,6 +126,11 @@ QString SalomeApp_DataObject::text( const int id ) const
   return txt;
 }
 
+/*!Get color value for one of entity:
+ *\li Text color
+ *\li Highlight color
+ *\li Higlighted text color
+ */
 QColor SalomeApp_DataObject::color( const ColorRole cr ) const
 {
   QColor clr;
@@ -155,7 +138,12 @@ QColor SalomeApp_DataObject::color( const ColorRole cr ) const
   {
   case Text:
     if ( isReference() )
-      clr = QColor( 255, 0, 0 );
+      {
+       if ( !(QString(referencedObject()->GetName().c_str()).isEmpty()) )
+         clr = QColor( 255, 0, 0 );
+       else
+         clr = QColor( 200, 200, 200 );
+      }
     else if ( myObject )
     {
       _PTR(GenericAttribute) anAttr;
@@ -168,7 +156,12 @@ QColor SalomeApp_DataObject::color( const ColorRole cr ) const
     break;
   case Highlight:
     if ( isReference() )
-      clr = QColor( 255, 0, 0 );
+      {
+       if ( !(QString(referencedObject()->GetName().c_str()).isEmpty()) )
+         clr = QColor( 255, 0, 0 );
+       else
+         clr = QColor( 200, 200, 200 );
+      }
     break;
   case HighlightedText:
     if ( isReference() )
@@ -178,28 +171,14 @@ QColor SalomeApp_DataObject::color( const ColorRole cr ) const
   return clr;
 }
 
+/*!Gets tooltip.*/
 QString SalomeApp_DataObject::toolTip() const
 {
   //return object()->Name();
   return QString( "Object \'%1\', module \'%2\', ID=%3" ).arg( name() ).arg( componentDataType() ).arg( entry() );
 }
 
-SUIT_DataObject* SalomeApp_DataObject::componentObject() const
-{
-  SUIT_DataObject* compObj = 0;  // for root object (invisible SALOME_ROOT_OBJECT) 
-
-  if ( parent() && parent() == root() ) 
-    compObj = (SUIT_DataObject*)this; // for component-level objects
-  else 
-  {
-    compObj = parent(); // for lower level objects
-    while ( compObj && compObj->parent() != root() )
-      compObj = compObj->parent();
-  }
-
-  return compObj;
-}
-
+/*!Get component type.*/
 QString SalomeApp_DataObject::componentDataType() const
 {
   const SalomeApp_DataObject* compObj = dynamic_cast<SalomeApp_DataObject*>( componentObject() );
@@ -213,11 +192,13 @@ QString SalomeApp_DataObject::componentDataType() const
   return "";
 }
 
+/*!Gets object.*/
 _PTR(SObject) SalomeApp_DataObject::object() const
 {
   return myObject;
 }
 
+/*!Checks: Is object reference.*/
 bool SalomeApp_DataObject::isReference() const
 {
   bool isRef = false;
@@ -229,6 +210,7 @@ bool SalomeApp_DataObject::isReference() const
   return isRef;
 }
 
+/*!Gets reference object.*/
 _PTR(SObject) SalomeApp_DataObject::referencedObject() const
 {
   _PTR(SObject) refObj;
@@ -239,6 +221,7 @@ _PTR(SObject) SalomeApp_DataObject::referencedObject() const
   return obj;
 }
 
+/*!Gets IOR*/
 QString SalomeApp_DataObject::ior( const _PTR(SObject)& obj ) const
 {
   QString txt;
@@ -258,6 +241,7 @@ QString SalomeApp_DataObject::ior( const _PTR(SObject)& obj ) const
   return txt;
 }
 
+/*!Gets Entry*/
 QString SalomeApp_DataObject::entry( const _PTR(SObject)& obj ) const
 {
   QString txt;
@@ -269,6 +253,7 @@ QString SalomeApp_DataObject::entry( const _PTR(SObject)& obj ) const
   return txt;
 }
 
+/*!Value*/
 QString SalomeApp_DataObject::value( const _PTR(SObject)& obj ) const
 {
   if ( !obj )
@@ -317,11 +302,12 @@ QString SalomeApp_DataObject::value( const _PTR(SObject)& obj ) const
   return val;
 }
 
-/*!
+/*
        Class: SalomeApp_ModuleObject
        Level: Public
 */
 
+/*!Constructor.Initialize by \a parent.*/
 SalomeApp_ModuleObject::SalomeApp_ModuleObject( SUIT_DataObject* parent )
 : SalomeApp_DataObject( parent ), 
   CAM_RootObject( parent ),
@@ -329,6 +315,7 @@ SalomeApp_ModuleObject::SalomeApp_ModuleObject( SUIT_DataObject* parent )
 {
 }
 
+/*!Constructor.Initialize by \a parent and SObject.*/
 SalomeApp_ModuleObject::SalomeApp_ModuleObject( const _PTR(SObject)& sobj, SUIT_DataObject* parent )
 : SalomeApp_DataObject( sobj, parent ), 
   CAM_RootObject( 0, parent ),
@@ -336,6 +323,7 @@ SalomeApp_ModuleObject::SalomeApp_ModuleObject( const _PTR(SObject)& sobj, SUIT_
 {
 }
 
+/*!Constructor.Initialize by \a parent and CAM_DataModel.*/
 SalomeApp_ModuleObject::SalomeApp_ModuleObject( CAM_DataModel* dm, const _PTR(SObject)& sobj, SUIT_DataObject* parent )
 : SalomeApp_DataObject( sobj, parent ), 
   CAM_RootObject( dm, parent ),
@@ -343,6 +331,7 @@ SalomeApp_ModuleObject::SalomeApp_ModuleObject( CAM_DataModel* dm, const _PTR(SO
 {
 }
 
+/*!Destructor. Do nothing.*/
 SalomeApp_ModuleObject::~SalomeApp_ModuleObject()
 {
 }