#include "StdAfx.h" #include "ActionBase.h" #include "MainFrm.h" #include "resource.h" #include "UserMessage.h" #include "PaneDefine.h" #include "ActionObject.h" #include "ActionSignal.h" #include "ActionElement.h" #include "ObjectLightFolder.h" #include "ObjectLightDir.h" #include "ObjectLightSpot.h" #include "ObjectLightPoint.h" CActionBase::CActionBase() { m_Type = CActionBase::UNKNOWN; m_pParent = NULL; m_ItemID = NULL; m_pTreeCtrl = NULL; m_bFocus = false; m_bShow = true; } CActionBase::~CActionBase() { SAFE_DELETE_PVEC( m_pVecPropertyList ); RemoveChild( (CActionBase*)NULL ); } CActionBase *CActionBase::GetChildFromName( CString &szName ) { for( DWORD i=0; im_szName == szName ) return m_pVecChild[i]; } return NULL; } void CActionBase::AddChild( CActionBase *pObject ) { m_pVecChild.push_back( pObject ); } void CActionBase::RemoveChild( CActionBase *pObject ) { for( DWORD i=0; iRemoveChild( (CActionBase*)NULL ); SAFE_DELETE( m_pVecChild[i] ); m_pVecChild.erase( m_pVecChild.begin() + i ); i--; } else { if( m_pVecChild[i] == pObject ) { m_pVecChild[i]->RemoveChild( (CActionBase*)NULL ); SAFE_DELETE( m_pVecChild[i] ); m_pVecChild.erase( m_pVecChild.begin() + i ); return; } } } } void CActionBase::RemoveChild( CString &szName ) { for( DWORD i=0; iRemoveChild( (CActionBase *)NULL ); SAFE_DELETE( m_pVecChild[i] ); m_pVecChild.erase( m_pVecChild.begin() + i ); i--; } else { if( m_pVecChild[i]->m_szName == szName ) { m_pVecChild[i]->RemoveChild( (CActionBase*)NULL ); SAFE_DELETE( m_pVecChild[i] ); m_pVecChild.erase( m_pVecChild.begin() + i ); return; } } } } void CActionBase::Process( LOCAL_TIME LocalTime ) { for( DWORD i=0; iProcess( LocalTime ); } } void CActionBase::AddPropertyInfo( PropertyGridBaseDefine Define[] ) { CUnionValueProperty *pVariable; for( DWORD i=0; ; i++ ) { if( Define[i].szCategory == NULL ) break; pVariable = new CUnionValueProperty( Define[i].Type ); pVariable->SetCategory( Define[i].szCategory ); pVariable->SetDescription( Define[i].szStr ); pVariable->SetSubDescription( Define[i].szDescription, true ); pVariable->SetDefaultEnable( Define[i].bEnable ); m_pVecPropertyList.push_back( pVariable ); } } void CActionBase::SetModify( bool bModify, CString szStr ) { m_bModify = bModify; if( m_bModify == false ) { m_szModify.Empty(); } else m_szModify += szStr; } void CActionBase::GetChildModifyString( CString &szBuf, int nTabCount ) { if( !m_szModify.IsEmpty() ) { CString szTemp; szTemp.Format( "%s - %s", m_szName, GetClassName() ); szBuf += szTemp + "\n"; szBuf += m_szModify; } for( DWORD i=0; iGetChildModifyString( szBuf, nTabCount ); } } bool CActionBase::IsChildModify() { if( m_bModify == true ) return true; for( DWORD i=0; iIsChildModify() == true ) return true; } return false; } bool CActionBase::ExportObject( FILE *fp, int &nCount ) { for( DWORD i=0; iExportObject( fp, nCount ) == false ) return false; } return true; } bool CActionBase::ImportObject( FILE *fp ) { for( DWORD i=0; iImportObject( fp ) == false ) return false; } return true; } CActionBase &CActionBase::operator = ( CActionBase &e ) { m_Type = e.m_Type; CActionBase *pBase; CActionBase *pCopy; for( DWORD i=0; iGetType() ) { case OBJECT: pCopy = new CActionObject; *(CActionObject*)pCopy = *(CActionObject*)pBase; break; case ELEMENT: pCopy = new CActionElement; *(CActionElement*)pCopy = *(CActionElement*)pBase; break; case SIGNAL: pCopy = new CActionSignal; *(CActionSignal*)pCopy = *(CActionSignal*)pBase; break; case LIGHTDIR: pCopy = new CObjectLightDir; *(CObjectLightDir*)pCopy = *(CObjectLightDir*)pBase; break; case LIGHTPOINT: pCopy = new CObjectLightPoint; *(CObjectLightPoint*)pCopy = *(CObjectLightPoint*)pBase; break; case LIGHTSPOT: pCopy = new CObjectLightSpot; *(CObjectLightSpot*)pCopy = *(CObjectLightSpot*)pBase; break; case LIGHTFOLDER: pCopy = new CObjectLightFolder; *(CObjectLightFolder*)pCopy = *(CObjectLightFolder*)pBase; break; } pCopy->SetParent( this ); m_pVecChild.push_back( pCopy ); } CUnionValueProperty *pVariable; CUnionValueProperty *pCopyVar; for( DWORD i=0; iGetType() ); *pCopyVar = *pVariable; m_pVecPropertyList.push_back( pCopyVar ); } m_pTreeCtrl = e.m_pTreeCtrl; m_bModify = e.m_bModify; m_bFocus = e.m_bFocus; m_bShow = e.m_bShow; Activate(); return *this; }