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_editorTypeName( "" )
, m_isHidden( false )
, m_isTreeHidden( false )
, m_isTreeChildrenHidden( false )
, m_isReadOnly( false )
, m_labelAlignment( LEFT )
@ -78,6 +79,7 @@ PdmUiItemInfo::PdmUiItemInfo( const QString& uiName,
, m_extraDebugText( extraDebugText )
, m_editorTypeName( "" )
, m_isHidden( false )
, m_isTreeHidden( false )
, m_isTreeChildrenHidden( false )
, m_isReadOnly( false )
, m_labelAlignment( LEFT )
@ -409,17 +411,23 @@ void PdmUiItem::setUiHidden( bool isHidden, const QString& uiConfigName /*= ""*/
//--------------------------------------------------------------------------------------------------
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()
: m_editorTypeName( "" )
, m_isHidden( -1 )
, m_isTreeHidden( -1 )
, m_isTreeChildrenHidden( -1 )
, m_isReadOnly( -1 )
, m_labelAlignment( LEFT )
@ -99,6 +100,7 @@ private:
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
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_isReadOnly; ///< UiItem should be insensitive, or read only. -1 means not set.
LabelPosType m_labelAlignment;
@ -267,7 +269,7 @@ public:
void setUiHidden( bool isHidden, const QString& uiConfigName = "" );
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;
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 );
expandUiTree( uiTreeOrdering, uiConfigName );
if ( !m_owner->uiCapability()->isUiTreeHidden() ) expandUiTree( uiTreeOrdering, uiConfigName );
return uiTreeOrdering;
}
@ -120,7 +120,8 @@ void PdmUiObjectHandle::addDefaultUiTreeChildren( PdmUiTreeOrdering* uiTreeOrder
{
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;
fields[fIdx]->childObjects( &children );
@ -128,7 +129,8 @@ void PdmUiObjectHandle::addDefaultUiTreeChildren( PdmUiTreeOrdering* uiTreeOrder
std::set<PdmObjectHandle*> objectsAddedByApplication;
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() );
}
@ -146,14 +148,14 @@ void PdmUiObjectHandle::addDefaultUiTreeChildren( PdmUiTreeOrdering* uiTreeOrder
break;
}
if ( !isAlreadyAdded )
if ( !isAlreadyAdded && !children[cIdx]->uiCapability()->isUiTreeHidden() )
{
uiTreeOrdering->add( children[cIdx] );
}
}
}
}
else if ( !fields[fIdx]->uiCapability()->isUiHidden() )
else if ( !fields[fIdx]->uiCapability()->isUiTreeHidden() )
{
uiTreeOrdering->add( fields[fIdx] );
}
@ -177,7 +179,7 @@ void PdmUiObjectHandle::expandUiTree( PdmUiTreeOrdering* root, const QString& ui
for ( int cIdx = 0; cIdx < root->childCount(); ++cIdx )
{
PdmUiTreeOrdering* child = root->child( cIdx );
if ( child->isValid() && !child->ignoreSubTree() )
if ( child->isValid() && !child->ignoreSubTree() && !child->activeItem()->isUiTreeHidden( uiConfigName ) )
{
expandUiTree( child, uiConfigName );
}
@ -187,20 +189,21 @@ void PdmUiObjectHandle::expandUiTree( PdmUiTreeOrdering* root, const QString& ui
{
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;
root->field()->childObjects( &fieldsChildObjects );
for ( size_t cIdx = 0; cIdx < fieldsChildObjects.size(); ++cIdx )
{
PdmObjectHandle* childObject = fieldsChildObjects[cIdx];
if ( childObject )
if ( childObject && !childObject->uiCapability()->isUiTreeHidden() )
{
root->appendChild( uiObj( childObject )->uiTreeOrdering( uiConfigName ) );
}
}
}
else if ( root->isRepresentingObject() &&
else if ( root->isRepresentingObject() && !root->object()->uiCapability()->isUiTreeHidden( uiConfigName ) &&
!root->object()->uiCapability()->isUiTreeChildrenHidden( uiConfigName ) )
{
uiObj( root->object() )->defineUiTreeOrdering( *root, uiConfigName );

View File

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