X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSalomeApp%2FSalomeApp_DataObject.cxx;h=b606e3a2145f21f2cee8b6faac34aa8c5e6d79b1;hb=66361d5c4622d50741a14addc50c47895182c393;hp=5bb857865100a6368ff0f3a9f4a8ec24170ba30e;hpb=101fd10f1e736daa5d7f0f0ee5499b951460832a;p=modules%2Fgui.git diff --git a/src/SalomeApp/SalomeApp_DataObject.cxx b/src/SalomeApp/SalomeApp_DataObject.cxx index 5bb857865..b606e3a21 100644 --- a/src/SalomeApp/SalomeApp_DataObject.cxx +++ b/src/SalomeApp/SalomeApp_DataObject.cxx @@ -1,212 +1,328 @@ -// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D -// +// Copyright (C) 2007-2020 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 +// // 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. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// License as published by the Free Software Foundation; either +// 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "SalomeApp_DataObject.h" +// File : SalomeApp_DataObject.cxx +// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) +#include "SalomeApp_DataObject.h" #include "SalomeApp_Study.h" -#include "LightApp_RootObject.h" +#include "SalomeApp_Application.h" #include +#include #include #include -#include -#include +#include +#include + +#include +#include + +//VSR: uncomment below macro to support unicode text properly in SALOME +// current commented out due to regressions +//#define PAL22528_UNICODE -#include -#include -#include -#include -#include +namespace +{ + QString fromUtf8( const char* txt ) + { +#ifdef PAL22528_UNICODE + return QString::fromUtf8( txt ); +#else + return QString( txt ); +#endif + } -/* - Class: SalomeApp_DataObject - Level: Public + QString fromUtf8( const std::string& txt ) + { + return fromUtf8( txt.c_str() ); + } +} + +/*! + \class SalomeApp_DataObject + \brief Implementation of the data object for use in CORBA-based + SALOME modules. +*/ + +/*! + \brief Constructor. + \param parent parent data object */ -/*!Constructor. Initialize by \a parent*/ SalomeApp_DataObject::SalomeApp_DataObject( SUIT_DataObject* parent ) -: LightApp_DataObject( parent ), - CAM_DataObject( parent ), - myEntry( "" ), - myName( "" ) +: CAM_DataObject( parent ), + LightApp_DataObject( parent ) { } -/*!Constructor. Initialize by \a parent and SObject*/ -SalomeApp_DataObject::SalomeApp_DataObject( const _PTR(SObject)& sobj, SUIT_DataObject* parent ) -: LightApp_DataObject( parent ), - CAM_DataObject( parent ), - myName( "" ) +/*! + \brief Constructor. + \param sobj SALOMEDS object + \param parent parent data object +*/ +SalomeApp_DataObject::SalomeApp_DataObject( const _PTR(SObject)& sobj, + SUIT_DataObject* parent ) +: CAM_DataObject( parent ), + LightApp_DataObject( parent ) { myObject = sobj; - myEntry = myObject->GetID().c_str(); } -/*!Destructor. Do nothing.*/ +/*! + \brief Destructor. +*/ SalomeApp_DataObject::~SalomeApp_DataObject() { } -/*!Gets object ID. - *\retval QString - */ -QString SalomeApp_DataObject::entry() const -{ - if ( myObject ) - return myObject->GetID().c_str(); - return QString::null; - //return myEntry; -} - -/*!Gets name of object.*/ +/*! + \brief Get data object name. + \return object name +*/ QString SalomeApp_DataObject::name() const { - //if ( myName.isEmpty() ) - { - QString str; - if ( myObject ) - str = myObject->GetName().c_str(); - - if ( str.isEmpty() ) - { - _PTR(SObject) refObj = referencedObject(); - if ( refObj ) - str = refObj->GetName().c_str(); - } - - if ( isReference() ) - { - if ( !(QString(referencedObject()->GetName().c_str()).isEmpty()) ) - str = QString( "* " ) + str; - else - str = QString( "" ); - } - SalomeApp_DataObject* that = (SalomeApp_DataObject*)this; - that->myName = str; + QString str; + if ( myObject ) + str = fromUtf8( myObject->GetName() ); + + if ( str.isEmpty() ) { + _PTR(SObject) refObj = referencedObject(); + if ( refObj ) + str = fromUtf8( refObj->GetName() ); + } + + if ( isReference() ) { + if ( !(QString(referencedObject()->GetName().c_str()).isEmpty()) ) + str = QString( "* " ) + str; + else + str = QString( "" ); } - return myName; + return str; } -/*!Gets icon picture of object.*/ -QPixmap SalomeApp_DataObject::icon() const +/*! + \brief Get object string identifier. + \return object ID +*/ +QString SalomeApp_DataObject::entry() const { - _PTR(GenericAttribute) anAttr; - if ( myObject && myObject->FindAttribute( anAttr, "AttributePixMap" ) ){ - _PTR(AttributePixMap) aPixAttr ( anAttr ); - if ( aPixAttr->HasPixMap() ){ - QString pixmapName = QObject::tr( aPixAttr->GetPixMap().c_str() ); - LightApp_RootObject* aRoot = dynamic_cast( root() ); - if ( aRoot && aRoot->study() ) { - SUIT_ResourceMgr* mgr = aRoot->study()->application()->resourceMgr(); - return mgr->loadPixmap( componentDataType(), pixmapName, false ); - } - } - } - return QPixmap(); + return entry( myObject ); } -/*!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) - */ +/*! + \brief Get object text data for the specified column. + + This method returns the data according to the specufied column \a id: + - NameId : object name (by calling name() method) + - EntryId : object entry (by calling entry() method) + - ValueId : object value + - IORId : object IOR + - RefEntryId : object reference entry + + \param id column id + \return object text data +*/ QString SalomeApp_DataObject::text( const int id ) const { QString txt; + + // Text for "Value" and "IOR" columns switch ( id ) { - case CT_Value: -#ifndef WNT - if ( componentObject() != this ) -#else + case ValueId: if ( componentObject() != (SUIT_DataObject*)this ) -#endif + txt = value( object() ); + if ( txt.isEmpty() ) txt = value( referencedObject() ); break; - case CT_Entry: - txt = entry( object() ); - break; - case CT_IOR: + case IORId: txt = ior( referencedObject() ); break; - case CT_RefEntry: - if ( isReference() ) - txt = entry( referencedObject() ); + default: + // Issue 21379: LightApp_DataObject::text() treats "Entry" + // and "Reference Entry" columns + txt = LightApp_DataObject::text( id ); break; } 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 +/*! + \brief Get data object icon for the specified column. + \param id column id + \return object icon for the specified column +*/ +QPixmap SalomeApp_DataObject::icon( const int id ) const { - QColor clr; - switch ( cr ) + // we display icon only for the first (NameId ) column + if ( id == NameId ) { + _PTR(GenericAttribute) anAttr; + if ( myObject && myObject->FindAttribute( anAttr, "AttributePixMap" ) ){ + _PTR(AttributePixMap) aPixAttr ( anAttr ); + if ( aPixAttr->HasPixMap() ) { + QString componentType = componentDataType(); + QString pixmapID = fromUtf8( aPixAttr->GetPixMap() ); + // select a plugin within a component + QStringList plugin_pixmap = pixmapID.split( "::", QString::KeepEmptyParts ); + if ( plugin_pixmap.size() == 2 ) { + componentType = plugin_pixmap.front(); + pixmapID = plugin_pixmap.back(); + } + QString pixmapName = QObject::tr( pixmapID.toLatin1().constData() ); + LightApp_RootObject* aRoot = dynamic_cast( root() ); + if ( aRoot && aRoot->study() ) { + SUIT_ResourceMgr* mgr = aRoot->study()->application()->resourceMgr(); + return mgr->loadPixmap( componentType, pixmapName, false ); + } + } + } + } + return LightApp_DataObject::icon( id ); +} + +/*! + \brief Get data object color for the specified column. + \param role color role + \param id column id (not used) + \return object color for the specified column +*/ +QColor SalomeApp_DataObject::color( const ColorRole role, const int id ) const +{ + // we ignore parameter in order to use the same colors for + // all columns + QColor c; + switch ( role ) { case Text: - if ( isReference() ) - { - if ( !(QString(referencedObject()->GetName().c_str()).isEmpty()) ) - clr = QColor( 255, 0, 0 ); - else - clr = QColor( 200, 200, 200 ); - } - else if ( myObject ) - { + case Foreground: + // text color (not selected item) + if ( isReference() ) { + if ( QString(referencedObject()->GetName().c_str()).isEmpty() ) + c = QColor( 200, 200, 200 ); // invalid reference (grayed) + } + else if ( myObject ) { + // get color atrtribute value _PTR(GenericAttribute) anAttr; - if ( myObject->FindAttribute( anAttr, "AttributeTextColor" ) ) - { - _PTR(AttributeTextColor) aColAttr = anAttr; - clr = QColor( (int)aColAttr->TextColor().R, (int)aColAttr->TextColor().G, (int)aColAttr->TextColor().B ); + if ( myObject->FindAttribute( anAttr, "AttributeTextColor" ) ) { + _PTR(AttributeTextColor) aColAttr = anAttr; + c = QColor( (int)aColAttr->TextColor().R, (int)aColAttr->TextColor().G, (int)aColAttr->TextColor().B ); } } break; + case Highlight: - if ( isReference() ) - { - if ( !(QString(referencedObject()->GetName().c_str()).isEmpty()) ) - clr = QColor( 255, 0, 0 ); - else - clr = QColor( 200, 200, 200 ); + // background color for the highlighted item + if ( isReference() ) { + if ( QString(referencedObject()->GetName().c_str()).isEmpty() ) + c = QColor( 200, 200, 200 ); // invalid reference (grayed) + } + else if ( myObject ) { + // get color atrtribute value + _PTR(GenericAttribute) anAttr; + if( myObject->FindAttribute ( anAttr, "AttributeTextHighlightColor") ) { + _PTR(AttributeTextHighlightColor) aHighColAttr = anAttr; + c = QColor( (int)(aHighColAttr->TextHighlightColor().R), + (int)(aHighColAttr->TextHighlightColor().G), + (int)(aHighColAttr->TextHighlightColor().B)); } + } break; - case HighlightedText: - if ( isReference() ) - clr = QColor( 255, 255, 255 ); + default: break; } - return clr; + + // Issue 21379: LightApp_DataObject::color() defines colors for valid references + if ( !c.isValid() ) + c = LightApp_DataObject::color( role, id ); + + return c; } -/*!Gets tooltip.*/ -QString SalomeApp_DataObject::toolTip() const +/*! + \brief Get data object tooltip for the specified column. + \param id column id (not used) + \return object tooltip for the specified column +*/ +QString SalomeApp_DataObject::toolTip( const int /*id*/ ) const { - //return object()->Name(); + // we ignore parameter in order to use the same tooltip for + // all columns + + // Get customized tooltip in case of it exists + const SalomeApp_DataObject* compObj = dynamic_cast( componentObject() ); + // Check if the component has been loaded. + // In order to avoid loading the component only for getting a custom tooltip. + if ( compObj && compObj != this && !ior(compObj->object()).isEmpty() ) { + SalomeApp_Application* app = + dynamic_cast( SUIT_Session::session()->activeApplication() ); + if ( app ) { + // --- try to find (and not load) the component instance, like GEOM instance, + // registered in naming service under Containers//... + // with any container name, on every machine available + Engines::ContainerParameters params; + app->lcc()->preSet(params); // --- any container name, anywhere + Engines::EngineComponent_var aComponent = + app->lcc()->FindComponent(params, componentDataType().toLatin1().constData() ); + + if ( !CORBA::is_nil(aComponent) && aComponent->hasObjectInfo() ) { + LightApp_RootObject* aRoot = dynamic_cast( root() ); + if ( aRoot && aRoot->study() ) { + CORBA::String_var data = aComponent->getObjectInfo( entry().toUtf8().constData()); + QString objInfo = data.in(); + QStringList l; + l << name(); + if ( !objInfo.isEmpty() ) + l << objInfo; + return l.join("\n"); + } + } + } + } + return QString( "Object \'%1\', module \'%2\', ID=%3" ).arg( name() ).arg( componentDataType() ).arg( entry() ); } -/*!Get component type.*/ +/*! + \brief Get font to be used for data object rendering in the item views + \param id column id + \return font to be used for the item rendering +*/ +QFont SalomeApp_DataObject::font( const int id ) const +{ + QFont f = LightApp_DataObject::font( id ); + if ( id == NameId ) { + if ( !expandable() && hasChildren() ) { + // set bold font to highlight the item which is non-expandable but has children + f.setBold( true ); + } + } + return f; +} + +/*! + \brief Get component type. + \return component type +*/ QString SalomeApp_DataObject::componentDataType() const { // if ( myCompDataType.isEmpty() ) { @@ -223,13 +339,34 @@ QString SalomeApp_DataObject::componentDataType() const return myCompDataType; } -/*!Gets object.*/ +/*! + \brief Get SALOMEDS object. + \return SALOMEDS object +*/ _PTR(SObject) SalomeApp_DataObject::object() const { return myObject; } -/*!Checks: Is object reference.*/ +/*! + \brief Returns the string identifier of the data objects referenced by this one. + + Re-implemented from LightApp_DataObject using SALOMEDS API. + + \return ID string of the referenced SObject +*/ +QString SalomeApp_DataObject::refEntry() const +{ + return entry( referencedObject() ); +} + +/*! + \brief Check if the data object is a reference. + + Re-implemented from LightApp_DataObject using SALOMEDS API. + + \return \c true if this data object actually refers to another one +*/ bool SalomeApp_DataObject::isReference() const { bool isRef = false; @@ -241,7 +378,10 @@ bool SalomeApp_DataObject::isReference() const return isRef; } -/*!Gets reference object.*/ +/*! + \brief Get the object referenced by this one. + \return referenced object +*/ _PTR(SObject) SalomeApp_DataObject::referencedObject() const { _PTR(SObject) refObj; @@ -252,7 +392,102 @@ _PTR(SObject) SalomeApp_DataObject::referencedObject() const return obj; } -/*!Gets IOR*/ +/*! + \brief Check if object has children + \return \c true if object has at least one child sub-object and \c false otherwise +*/ +bool SalomeApp_DataObject::hasChildren() const +{ + bool ok = false; + + // tmp?? + _PTR(UseCaseBuilder) aUseCaseBuilder = SalomeApp_Application::getStudy()->GetUseCaseBuilder(); + if (aUseCaseBuilder->IsUseCaseNode(myObject)) { + ok = aUseCaseBuilder->HasChildren(myObject); + // TODO: check name as below? + } + else { + _PTR(ChildIterator) it ( SalomeApp_Application::getStudy()->NewChildIterator( myObject ) ); + for ( ; it->More() && !ok; it->Next() ) { + _PTR(SObject) obj = it->Value(); + if ( obj ) { + _PTR(SObject) refObj; + //if ( obj->ReferencedObject( refObj ) ) continue; // omit references + if ( obj->GetName() != "" ) ok = true; + } + } + } + return ok; +} + +/*! + \brief Check if the object is expandable (e.g. in the data tree view) + \return \c true if object is expandable and \c false otherwise +*/ +bool SalomeApp_DataObject::expandable() const +{ + bool exp = true; + _PTR(GenericAttribute) anAttr; + if ( myObject && myObject->FindAttribute( anAttr, "AttributeExpandable" ) ) { + _PTR(AttributeExpandable) aAttrExp = anAttr; + exp = aAttrExp->IsExpandable(); + } + return exp; +} + +/*! + \brief Check if the object is visible. + \return \c true if this object is displayable or \c false otherwise +*/ +bool SalomeApp_DataObject::isVisible() const +{ + bool isDraw = true; + _PTR(GenericAttribute) anAttr; + if ( myObject && myObject->FindAttribute(anAttr, "AttributeDrawable") ) + { + _PTR(AttributeDrawable) aAttrDraw = anAttr; + isDraw = aAttrDraw->IsDrawable(); + } + return isDraw && LightApp_DataObject::isVisible() && ( !name().isEmpty() || isReference() ); +} + +/*! + \brief Check if the specified column supports custom sorting. + \param id column id + \return \c true if column sorting should be customized + \sa compare() +*/ +bool SalomeApp_DataObject::customSorting( const int id ) const +{ + // perform custom sorting for the "Entry" and "Reference Entry" columns + return id == EntryId || id == RefEntryId ? true + : LightApp_DataObject::customSorting( id ); +} + +/*! + \brief Compares data from two items for sorting purposes. + + This method is called only for those columns for which customSorting() + method returns \c true. + + \param left first data to compare + \param right second data to compare + \param id column id + \return result of the comparison + \sa customSorting() +*/ +bool SalomeApp_DataObject::compare( const QVariant& left, const QVariant& right, const int id ) const +{ + // use the same custom sorting for the "Reference Entry" column as for the + // "Entry" column (call base implementation) + return LightApp_DataObject::compare( left, right, id == RefEntryId ? EntryId : id ); +} + +/*! + \brief Get data object IOR. + \param obj data object + \return data object IOR or null string if IOR is empty +*/ QString SalomeApp_DataObject::ior( const _PTR(SObject)& obj ) const { QString txt; @@ -264,15 +499,19 @@ QString SalomeApp_DataObject::ior( const _PTR(SObject)& obj ) const _PTR(AttributeIOR) iorAttr = attr; if ( iorAttr ) { - std::string str = iorAttr->Value(); - txt = QString( str.c_str() ); + std::string str = iorAttr->Value(); + txt = QString( str.c_str() ); } } } return txt; } -/*!Gets Entry*/ +/*! + \brief Get data object entry identifier. + \param obj data object + \return data object entry identifier or empty object does not have entry +*/ QString SalomeApp_DataObject::entry( const _PTR(SObject)& obj ) const { QString txt; @@ -284,16 +523,51 @@ QString SalomeApp_DataObject::entry( const _PTR(SObject)& obj ) const return txt; } -/*!Value*/ +/*! + \brief Get data object value. + \param obj data object + \return data object value or empty string if there is no + value associated to the object +*/ QString SalomeApp_DataObject::value( const _PTR(SObject)& obj ) const { if ( !obj ) - return QString::null; + return QString(); QString val; _PTR(GenericAttribute) attr; - if ( obj->FindAttribute( attr, "AttributeInteger" ) ) + if ( obj->FindAttribute( attr, "AttributeString" ) ) + { + _PTR(AttributeString) strAttr = attr; + std::string str = strAttr->Value(); + QString aStrings = fromUtf8( str ); + + //Special case to show NoteBook variables in the "Value" column of the OB + bool ok = false; + QStringList aSectionList = aStrings.split( "|" ); + if ( !aSectionList.isEmpty() ) + { + QString aLastSection = aSectionList.last(); + QStringList aStringList = aLastSection.split( ":" ); + if ( !aStringList.isEmpty() ) + { + ok = true; + for ( int i = 0, n = aStringList.size(); i < n; i++ ) + { + QString aStr = aStringList[i]; + if ( SalomeApp_Application::getStudy()->IsVariable( aStr.toStdString() ) ) + val.append( aStr + ", " ); + } + + if ( !val.isEmpty() ) + val.remove( val.length() - 2, 2 ); + } + } + if( !ok ) + val = aStrings; + } + else if ( obj->FindAttribute( attr, "AttributeInteger" ) ) { _PTR(AttributeInteger) intAttr = attr; if ( intAttr ) @@ -323,100 +597,325 @@ QString SalomeApp_DataObject::value( const _PTR(SObject)& obj ) const val += QString( " " ); val += QString( "[%1,%2]" ).arg( tableAttr->GetNbRows() ).arg( tableAttr->GetNbColumns() ); } - else if ( obj->FindAttribute( attr, "AttributeComment") ) + else if ( obj->FindAttribute( attr, "AttributeComment" ) ) { _PTR(AttributeComment) comm = attr; std::string str = comm->Value(); - val = QString( str.c_str() ); + val = fromUtf8( str ); } return val; } -/* - Class: SalomeApp_ModuleObject - Level: Public +void SalomeApp_DataObject::insertChildAtTag( SalomeApp_DataObject* obj, int tag ) +{ + int pos = 0; + int npos = qMin( tag-1,childCount() ); + for ( int i = npos; i > 0; i-- ) + { + if ( (dynamic_cast( childObject( i-1 ) ) )->object()->Tag() < tag ) + { + pos = i; + break; + } + } + insertChildAtPos( obj, pos ); +} + +void SalomeApp_DataObject::updateItem() +{ + if ( modified() ) return; + setModified( true ); +} + +/*! + \class SalomeApp_ModuleObject + \brief This class is used for optimized access to the SALOMEDS-based + data model from SalomeApp_DataObject class instances. + \sa CAM_ModuleObject class */ -/*!Constructor.Initialize by \a parent.*/ +/*! + \brief Constructor. + \param parent parent data object +*/ SalomeApp_ModuleObject::SalomeApp_ModuleObject( SUIT_DataObject* parent ) -: SalomeApp_DataObject( parent ), - CAM_RootObject( parent ), - CAM_DataObject( parent ) +: CAM_DataObject( parent ), + LightApp_DataObject( parent ), + SalomeApp_DataObject( parent ), + CAM_ModuleObject( 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 ), - CAM_DataObject( parent ) +/*! + \brief Constructor. + \param sobj SALOMEDS object + \param parent parent data object +*/ +SalomeApp_ModuleObject::SalomeApp_ModuleObject( const _PTR(SObject)& sobj, + SUIT_DataObject* parent ) +: CAM_DataObject( parent ), + LightApp_DataObject( parent ), + SalomeApp_DataObject( sobj, parent ), + CAM_ModuleObject( parent ) { } -/*!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 ), - CAM_DataObject( parent ) +/*! + \brief Constructor. + \param dm data model + \param sobj SALOMEDS object + \param parent parent data object +*/ +SalomeApp_ModuleObject::SalomeApp_ModuleObject( CAM_DataModel* dm, + const _PTR(SObject)& sobj, + SUIT_DataObject* parent ) +: CAM_DataObject( parent ), + LightApp_DataObject( parent ), + SalomeApp_DataObject( sobj, parent ), + CAM_ModuleObject( dm, parent ) { } -/*!Destructor. Do nothing.*/ +/*! + \brief Destructor. +*/ SalomeApp_ModuleObject::~SalomeApp_ModuleObject() { } -/*!Returns module name */ +/*! + \brief Get module name. + \return module name +*/ QString SalomeApp_ModuleObject::name() const { return SalomeApp_DataObject::name(); } -/* - Class: SalomeApp_SavePointObject - Level: Public +/*! + \brief Get data object icon for the specified column. + \param id column id + \return object icon for the specified column + \sa CAM_ModuleObject class +*/ +QPixmap SalomeApp_ModuleObject::icon( const int id ) const +{ + QPixmap p = SalomeApp_DataObject::icon( id ); + // The module might not provide a separate small icon + // for Obj. Browser representation -> always try to scale it + // See CAM_ModuleObject::icon() + if ( !p.isNull() ) + p = Qtx::scaleIcon( p, 16 ); + return p; +} + +/*! + \brief Get data object tooltip for the specified column. + \param id column id + \return object tooltip for the specified column +*/ +QString SalomeApp_ModuleObject::toolTip( const int id ) const +{ + return SalomeApp_DataObject::toolTip( id ); +} + +/*! + \class SalomeApp_RootObject + \brief Root data object for the CORBA-based SALOME application. + + This class is to be instanciated by only one object - the root object + of the SalomeApp data object tree. This object is not shown in the object browser. + The goal of this class is to provide a unified access to SalomeApp_Study + object from SalomeApp_DataObject instances. +*/ + +/*! + \brief Constructor. + \param study pointer to the study +*/ +SalomeApp_RootObject::SalomeApp_RootObject( LightApp_Study* study ) +: CAM_DataObject( 0 ), + LightApp_DataObject( 0 ), + SalomeApp_DataObject( 0 ), + LightApp_RootObject( study ), + _toSynchronize(true) +{ +} + +/*! + \brief Destructor. +*/ +SalomeApp_RootObject::~SalomeApp_RootObject() +{ +} + +/*! + \brief Get data object name. + \return object name +*/ +QString SalomeApp_RootObject::name() const +{ + return LightApp_RootObject::name(); +} + +/*! + \brief Get object string identifier. + \return object ID +*/ +QString SalomeApp_RootObject::entry() const +{ + return LightApp_RootObject::entry(); +} + +/*! + \brief Get object text data for the specified column. + \param id column id + \return object text data +*/ +QString SalomeApp_RootObject::text( const int id ) const +{ + return LightApp_RootObject::text( id ); +} + +/*! + \brief Get data object icon for the specified column. + \param id column id + \return object icon for the specified column +*/ +QPixmap SalomeApp_RootObject::icon( const int id ) const +{ + return LightApp_RootObject::icon( id ); +} + +/*! + \brief Get data object color for the specified column. + \param role color role + \param id column id (not used) + \return object color for the specified column +*/ +QColor SalomeApp_RootObject::color( const ColorRole role, const int id ) const +{ + return LightApp_RootObject::color( role, id ); +} + +/*! + \brief Get data object tooltip for the specified column. + \param id column id (not used) + \return object tooltip for the specified column */ +QString SalomeApp_RootObject::toolTip( const int id ) const +{ + return LightApp_RootObject::toolTip( id ); +} + +/*! + \class SalomeApp_SavePointObject + \brief Represents persistent visual_state object. -/*!Constructor.Initialize by \a parent.*/ -SalomeApp_SavePointObject::SalomeApp_SavePointObject( SUIT_DataObject* _parent, const int id, SalomeApp_Study* study ) - : LightApp_DataObject( _parent ), CAM_DataObject( _parent ), // IMPORTANT TO CALL ALL VIRTUAL CONSTRUCTORS! + Save point objects are stored in the data model, but NOT in SObjects + structure, so they are handled separately using this special class +*/ + +/*! + \brief Constructor. + \param parent parent data object + \param id save point ID + \param study study +*/ +SalomeApp_SavePointObject::SalomeApp_SavePointObject( SUIT_DataObject* parent, + const int id, + SalomeApp_Study* study ) + : CAM_DataObject( parent ), + LightApp_DataObject( parent ), myId( id ), myStudy( study ) { } -/*!Destructor. Do nothing.*/ +/*! + \brief Destructor. +*/ SalomeApp_SavePointObject::~SalomeApp_SavePointObject() { } -/*!Returns save points ID */ +/*! + \brief Get save point unique identifier. + \return save point ID +*/ int SalomeApp_SavePointObject::getId() const { return myId; } -/*!Returns "invalid" entry, which does not correspond to any object in data structure - but indicates that it is a save point object */ +/*! + \brief Get object string identifier. + \return object ID +*/ QString SalomeApp_SavePointObject::entry() const { return QObject::tr( "SAVE_POINT_DEF_NAME" ) + QString::number( myId ); } -/*!Returns displayed name of object */ +/*! + \brief Get data object name. + \return object name +*/ QString SalomeApp_SavePointObject::name() const { return myStudy->getNameOfSavePoint( myId ); } -QPixmap SalomeApp_SavePointObject::icon() const +/*! + \brief Get data object icon for the specified column. + \param id column id + \return object icon for the specified column +*/ +QPixmap SalomeApp_SavePointObject::icon( const int /*id*/ ) const { return QPixmap(); } -QString SalomeApp_SavePointObject::toolTip() const +/*! + \brief Get data object tooltip for the specified column. + \param id column id (not used) + \return object tooltip for the specified column +*/ +QString SalomeApp_SavePointObject::toolTip( const int /*id*/ ) const { return QObject::tr( "SAVE_POINT_OBJECT_TOOLTIP" ).arg( name() ); } +/*! + \class SalomeApp_SavePointRootObject + \brief Represents parent object for visual_state objects. +*/ + +/*! + \brief Constructor. + \param parent parent object +*/ +SalomeApp_SavePointRootObject::SalomeApp_SavePointRootObject( SUIT_DataObject* parent ) +: SUIT_DataObject( parent ) +{ +} + +/*! + \brief Get data object name. + \return object name +*/ +QString SalomeApp_SavePointRootObject::name() const +{ + return QObject::tr( "SAVE_POINT_ROOT_NAME" ); +} + +/*! + \brief Get data object tooltip for the specified column. + \param id column id (not used) + \return object tooltip for the specified column +*/ +QString SalomeApp_SavePointRootObject::toolTip( const int /*id*/ ) const +{ + return QObject::tr( "SAVE_POINT_ROOT_TOOLTIP" ); +}