Fwk: separate uiTreeHidden and uiHidden properties for PdmUiItem.

This commit is contained in:
Kristian Bendiksen 2021-10-13 08:23:12 +02:00 committed by Magne Sjaastad
parent 8c7ff445b6
commit 0db0cbe8ac
4 changed files with 28 additions and 15 deletions

View File

@ -56,6 +56,7 @@ PdmUiItemInfo::PdmUiItemInfo( const QString& uiName,
, m_extraDebugText( extraDebugText ) , m_extraDebugText( extraDebugText )
, m_editorTypeName( "" ) , m_editorTypeName( "" )
, m_isHidden( false ) , m_isHidden( false )
, m_isTreeHidden( false )
, m_isTreeChildrenHidden( false ) , m_isTreeChildrenHidden( false )
, m_isReadOnly( false ) , m_isReadOnly( false )
, m_labelAlignment( LEFT ) , m_labelAlignment( LEFT )
@ -78,6 +79,7 @@ PdmUiItemInfo::PdmUiItemInfo( const QString& uiName,
, m_extraDebugText( extraDebugText ) , m_extraDebugText( extraDebugText )
, m_editorTypeName( "" ) , m_editorTypeName( "" )
, m_isHidden( false ) , m_isHidden( false )
, m_isTreeHidden( false )
, m_isTreeChildrenHidden( false ) , m_isTreeChildrenHidden( false )
, m_isReadOnly( false ) , m_isReadOnly( false )
, m_labelAlignment( LEFT ) , m_labelAlignment( LEFT )
@ -409,17 +411,23 @@ void PdmUiItem::setUiHidden( bool isHidden, const QString& uiConfigName /*= ""*/
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool PdmUiItem::isUiTreeHidden( const QString& uiConfigName ) const bool PdmUiItem::isUiTreeHidden( const QString& uiConfigName ) const
{ {
// TODO: Must be separated from uiHidden when childField object embedding is implemented const PdmUiItemInfo* conInfo = configInfo( uiConfigName );
const PdmUiItemInfo* defInfo = defaultInfo();
const PdmUiItemInfo* sttInfo = m_staticItemInfo;
return isUiHidden( uiConfigName ); if ( conInfo && !( conInfo->m_isTreeHidden == -1 ) ) return conInfo->m_isTreeHidden;
if ( defInfo && !( defInfo->m_isTreeHidden == -1 ) ) return defInfo->m_isTreeHidden;
if ( sttInfo && !( sttInfo->m_isTreeHidden == -1 ) ) return sttInfo->m_isTreeHidden;
return false;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void PdmUiItem::setUiTreeHidden( bool isHidden, const QString& uiConfigName /*= ""*/ ) void PdmUiItem::setUiTreeHidden( bool isTreeHidden, const QString& uiConfigName /*= ""*/ )
{ {
m_configItemInfos[uiConfigName].m_isHidden = isHidden; m_configItemInfos[uiConfigName].m_isTreeHidden = isTreeHidden;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -66,6 +66,7 @@ public:
PdmUiItemInfo() PdmUiItemInfo()
: m_editorTypeName( "" ) : m_editorTypeName( "" )
, m_isHidden( -1 ) , m_isHidden( -1 )
, m_isTreeHidden( -1 )
, m_isTreeChildrenHidden( -1 ) , m_isTreeChildrenHidden( -1 )
, m_isReadOnly( -1 ) , m_isReadOnly( -1 )
, m_labelAlignment( LEFT ) , m_labelAlignment( LEFT )
@ -99,6 +100,7 @@ private:
QString m_editorTypeName; ///< Use this exact type of editor to edit this UiItem QString m_editorTypeName; ///< Use this exact type of editor to edit this UiItem
QString m_3dEditorTypeName; ///< If set, use this editor type to edit this UiItem in 3D QString m_3dEditorTypeName; ///< If set, use this editor type to edit this UiItem in 3D
int m_isHidden; ///< UiItem should be hidden. -1 means not set int m_isHidden; ///< UiItem should be hidden. -1 means not set
int m_isTreeHidden; ///< UiItem should be hidden in tree. -1 means not set
int m_isTreeChildrenHidden; ///< Children of UiItem should be hidden. -1 means not set int m_isTreeChildrenHidden; ///< Children of UiItem should be hidden. -1 means not set
int m_isReadOnly; ///< UiItem should be insensitive, or read only. -1 means not set. int m_isReadOnly; ///< UiItem should be insensitive, or read only. -1 means not set.
LabelPosType m_labelAlignment; LabelPosType m_labelAlignment;
@ -267,7 +269,7 @@ public:
void setUiHidden( bool isHidden, const QString& uiConfigName = "" ); void setUiHidden( bool isHidden, const QString& uiConfigName = "" );
bool isUiTreeHidden( const QString& uiConfigName = "" ) const; bool isUiTreeHidden( const QString& uiConfigName = "" ) const;
void setUiTreeHidden( bool isHidden, const QString& uiConfigName = "" ); void setUiTreeHidden( bool isTreeHidden, const QString& uiConfigName = "" );
bool isUiTreeChildrenHidden( const QString& uiConfigName = "" ) const; bool isUiTreeChildrenHidden( const QString& uiConfigName = "" ) const;
void setUiTreeChildrenHidden( bool isTreeChildrenHidden, const QString& uiConfigName = "" ); void setUiTreeChildrenHidden( bool isTreeChildrenHidden, const QString& uiConfigName = "" );

View File

@ -94,7 +94,7 @@ PdmUiTreeOrdering* PdmUiObjectHandle::uiTreeOrdering( const QString& uiConfigNam
PdmUiTreeOrdering* uiTreeOrdering = new PdmUiTreeOrdering( nullptr, m_owner ); PdmUiTreeOrdering* uiTreeOrdering = new PdmUiTreeOrdering( nullptr, m_owner );
expandUiTree( uiTreeOrdering, uiConfigName ); if ( !m_owner->uiCapability()->isUiTreeHidden() ) expandUiTree( uiTreeOrdering, uiConfigName );
return uiTreeOrdering; return uiTreeOrdering;
} }
@ -120,7 +120,8 @@ void PdmUiObjectHandle::addDefaultUiTreeChildren( PdmUiTreeOrdering* uiTreeOrder
{ {
if ( fields[fIdx]->hasChildObjects() && !uiTreeOrdering->containsField( fields[fIdx] ) ) if ( fields[fIdx]->hasChildObjects() && !uiTreeOrdering->containsField( fields[fIdx] ) )
{ {
if ( fields[fIdx]->uiCapability()->isUiHidden() && !fields[fIdx]->uiCapability()->isUiTreeChildrenHidden() ) if ( fields[fIdx]->uiCapability()->isUiTreeHidden() &&
!fields[fIdx]->uiCapability()->isUiTreeChildrenHidden() )
{ {
std::vector<PdmObjectHandle*> children; std::vector<PdmObjectHandle*> children;
fields[fIdx]->childObjects( &children ); fields[fIdx]->childObjects( &children );
@ -128,7 +129,8 @@ void PdmUiObjectHandle::addDefaultUiTreeChildren( PdmUiTreeOrdering* uiTreeOrder
std::set<PdmObjectHandle*> objectsAddedByApplication; std::set<PdmObjectHandle*> objectsAddedByApplication;
for ( int i = 0; i < uiTreeOrdering->childCount(); i++ ) for ( int i = 0; i < uiTreeOrdering->childCount(); i++ )
{ {
if ( uiTreeOrdering->child( i )->isRepresentingObject() ) if ( uiTreeOrdering->child( i )->isRepresentingObject() &&
!uiTreeOrdering->child( i )->object()->uiCapability()->isUiTreeHidden() )
{ {
objectsAddedByApplication.insert( uiTreeOrdering->child( i )->object() ); objectsAddedByApplication.insert( uiTreeOrdering->child( i )->object() );
} }
@ -146,14 +148,14 @@ void PdmUiObjectHandle::addDefaultUiTreeChildren( PdmUiTreeOrdering* uiTreeOrder
break; break;
} }
if ( !isAlreadyAdded ) if ( !isAlreadyAdded && !children[cIdx]->uiCapability()->isUiTreeHidden() )
{ {
uiTreeOrdering->add( children[cIdx] ); uiTreeOrdering->add( children[cIdx] );
} }
} }
} }
} }
else if ( !fields[fIdx]->uiCapability()->isUiHidden() ) else if ( !fields[fIdx]->uiCapability()->isUiTreeHidden() )
{ {
uiTreeOrdering->add( fields[fIdx] ); uiTreeOrdering->add( fields[fIdx] );
} }
@ -177,7 +179,7 @@ void PdmUiObjectHandle::expandUiTree( PdmUiTreeOrdering* root, const QString& ui
for ( int cIdx = 0; cIdx < root->childCount(); ++cIdx ) for ( int cIdx = 0; cIdx < root->childCount(); ++cIdx )
{ {
PdmUiTreeOrdering* child = root->child( cIdx ); PdmUiTreeOrdering* child = root->child( cIdx );
if ( child->isValid() && !child->ignoreSubTree() ) if ( child->isValid() && !child->ignoreSubTree() && !child->activeItem()->isUiTreeHidden( uiConfigName ) )
{ {
expandUiTree( child, uiConfigName ); expandUiTree( child, uiConfigName );
} }
@ -187,20 +189,21 @@ void PdmUiObjectHandle::expandUiTree( PdmUiTreeOrdering* root, const QString& ui
{ {
if ( !root->ignoreSubTree() ) if ( !root->ignoreSubTree() )
{ {
if ( root->isRepresentingField() && !root->field()->uiCapability()->isUiTreeChildrenHidden( uiConfigName ) ) if ( root->isRepresentingField() && !root->field()->uiCapability()->isUiTreeHidden( uiConfigName ) &&
!root->field()->uiCapability()->isUiTreeChildrenHidden( uiConfigName ) )
{ {
std::vector<PdmObjectHandle*> fieldsChildObjects; std::vector<PdmObjectHandle*> fieldsChildObjects;
root->field()->childObjects( &fieldsChildObjects ); root->field()->childObjects( &fieldsChildObjects );
for ( size_t cIdx = 0; cIdx < fieldsChildObjects.size(); ++cIdx ) for ( size_t cIdx = 0; cIdx < fieldsChildObjects.size(); ++cIdx )
{ {
PdmObjectHandle* childObject = fieldsChildObjects[cIdx]; PdmObjectHandle* childObject = fieldsChildObjects[cIdx];
if ( childObject ) if ( childObject && !childObject->uiCapability()->isUiTreeHidden() )
{ {
root->appendChild( uiObj( childObject )->uiTreeOrdering( uiConfigName ) ); root->appendChild( uiObj( childObject )->uiTreeOrdering( uiConfigName ) );
} }
} }
} }
else if ( root->isRepresentingObject() && else if ( root->isRepresentingObject() && !root->object()->uiCapability()->isUiTreeHidden( uiConfigName ) &&
!root->object()->uiCapability()->isUiTreeChildrenHidden( uiConfigName ) ) !root->object()->uiCapability()->isUiTreeChildrenHidden( uiConfigName ) )
{ {
uiObj( root->object() )->defineUiTreeOrdering( *root, uiConfigName ); uiObj( root->object() )->defineUiTreeOrdering( *root, uiConfigName );

View File

@ -63,7 +63,7 @@ void PdmUiTreeOrdering::add( PdmFieldHandle* field, QString uiConfigName )
for ( PdmObjectHandle* objHandle : children ) for ( PdmObjectHandle* objHandle : children )
{ {
this->add( objHandle ); if ( !objHandle->uiCapability()->isUiTreeHidden() ) this->add( objHandle );
} }
} }
} }