You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
1.6 KiB
84 lines
1.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//
|
|
//=============================================================================//
|
|
#include "cbase.h"
|
|
#include "itreeitem.h"
|
|
#include "mxtk/mxTreeView.h"
|
|
#include "project.h"
|
|
#include "scene.h"
|
|
#include "soundentry.h"
|
|
#include "vcdfile.h"
|
|
#include "wavefile.h"
|
|
#include "workspace.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose:
|
|
// Input : *tree -
|
|
// *parent -
|
|
// Output : mxTreeViewItem
|
|
//-----------------------------------------------------------------------------
|
|
mxTreeViewItem *ITreeItem::FindItem( mxTreeView *tree, mxTreeViewItem *parent, bool recurse )
|
|
{
|
|
if ( !tree )
|
|
return NULL;
|
|
|
|
mxTreeViewItem *child = tree->getFirstChild( parent );
|
|
while ( child )
|
|
{
|
|
ITreeItem *treeItem = (ITreeItem *)tree->getUserData( child );
|
|
if ( treeItem )
|
|
{
|
|
if ( treeItem == this )
|
|
{
|
|
return child;
|
|
}
|
|
|
|
if ( recurse )
|
|
{
|
|
mxTreeViewItem *found = FindItem( tree, child, recurse );
|
|
if ( found )
|
|
{
|
|
return found;
|
|
}
|
|
}
|
|
}
|
|
|
|
child = tree->getNextChild( child );
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
ITreeItem *ITreeItem::GetParentItem()
|
|
{
|
|
if ( GetSoundEntry() )
|
|
{
|
|
return GetSoundEntry()->GetOwnerVCDFile();
|
|
}
|
|
|
|
if ( GetVCDFile() )
|
|
{
|
|
return GetVCDFile()->GetOwnerScene();
|
|
}
|
|
|
|
if ( GetScene() )
|
|
{
|
|
return GetScene()->GetOwnerProject();
|
|
}
|
|
|
|
if ( GetProject() )
|
|
{
|
|
return GetProject()->GetOwnerWorkspace();
|
|
}
|
|
|
|
if ( GetWaveFile() )
|
|
{
|
|
return GetWaveFile()->GetOwnerSoundEntry();
|
|
}
|
|
|
|
return NULL;
|
|
}
|