200 lines
4.8 KiB
C++
200 lines
4.8 KiB
C++
// CPACMSBu.cpp : implementation file
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
#include "StdAfx.h"
|
|
|
|
#include "EDACBuM.hpp"
|
|
|
|
#include "EDACMStr.hpp"
|
|
#include "EDACMStA.hpp"
|
|
#include "EDACActr.hpp"
|
|
#include "EDACInst.hpp"
|
|
#undef CPA_WANTS_IMPORT
|
|
#undef CPA_EXPORT
|
|
#define CPA_WANTS_EXPORT
|
|
#include "_Actors.hpp"
|
|
#undef CPA_WANTS_EXPORT
|
|
#define CPA_WANTS_IMPORT
|
|
|
|
//External Modules
|
|
#include "ErO.h"
|
|
//End of External Modules
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPA_Editor_MiniStructureButton
|
|
|
|
BEGIN_MESSAGE_MAP(CPA_Editor_MiniStructureButton, CButton)
|
|
//{{AFX_MSG_MAP(CPA_Editor_MiniStructureButton)
|
|
ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
//***************************************************************************
|
|
CPA_Editor_MiniStructureButton::CPA_Editor_MiniStructureButton( EdActors_MiniStructure *pclMS,
|
|
CString csText,
|
|
tdeCarMSButtonType tdeType)
|
|
|
|
{
|
|
m_pclMS = pclMS;
|
|
m_csBaseText = csText;
|
|
m_tdeType = tdeType;
|
|
}
|
|
|
|
//***************************************************************************
|
|
CPA_Editor_MiniStructureButton::~CPA_Editor_MiniStructureButton()
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPA_Editor_MiniStructureButton message handlers
|
|
|
|
//***************************************************************************
|
|
void CPA_Editor_MiniStructureButton::OnClicked()
|
|
{
|
|
switch ( m_tdeType )
|
|
{
|
|
case ECAR_MS_BUTTON_TYPE_ALLOC :
|
|
m_pclMS->m_fn_vOnButtonAlloc();
|
|
break;
|
|
|
|
case ECAR_MS_BUTTON_TYPE_OPEN :
|
|
m_pclMS->m_fn_vOnButtonOpen();
|
|
break;
|
|
}
|
|
|
|
m_fn_vUpdateMSButton();
|
|
}
|
|
|
|
//***************************************************************************
|
|
void CPA_Editor_MiniStructureButton::m_fn_vUpdateMSButton()
|
|
{
|
|
switch ( m_tdeType )
|
|
{
|
|
case ECAR_MS_BUTTON_TYPE_ALLOC :
|
|
if ( m_pclMS->m_pclActorMS != NULL )
|
|
{
|
|
//Update buttons for Models
|
|
//--------------------------------------------
|
|
if ( !(m_pclMS->m_pclActorMS->m_pclParentActor->m_fn_bIsAnInstance()) )
|
|
{
|
|
EnableWindow(TRUE);
|
|
|
|
if ( m_pclMS->m_pclActorMS->m_fn_bIsAllocated() )
|
|
{
|
|
SetCheck(1);
|
|
|
|
if ( m_pclMS->m_fn_bCanBeUnallocated() )
|
|
{
|
|
SetWindowText("Unalloc");
|
|
}
|
|
else
|
|
{
|
|
EnableWindow(FALSE);
|
|
|
|
if ( m_pclMS->m_fn_tdeGetManiability() == MS_MANIABILITY_ALWAYS_ALLOCATED )
|
|
SetWindowText("Always");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SetCheck(0);
|
|
if ( m_pclMS->m_fn_bCanBeAllocated() )
|
|
{
|
|
SetWindowText("Alloc");
|
|
}
|
|
else
|
|
{
|
|
EnableWindow(FALSE);
|
|
|
|
SetWindowText("Once");
|
|
}
|
|
}
|
|
}
|
|
//Update buttons for Instances
|
|
//--------------------------------------------
|
|
else
|
|
{
|
|
// Check if model & instance have the same state
|
|
EdActors_EditorActorInstance *pInstance = (EdActors_EditorActorInstance *) m_pclMS->m_pclActorMS->m_pclParentActor;
|
|
EdActors_EditorActor *pModel = pInstance->m_fn_pclGetModel()->m_fn_pclGetEditorActor();
|
|
|
|
EdActors_ActorMiniStructure *pclModelMS = pModel->m_clListOfAMSLists.m_fn_pclGetAMSFromName(m_pclMS->m_pclActorMS->m_fn_csGetScriptName());
|
|
|
|
if (m_pclMS->m_pclActorMS->m_fn_bIsAllocated())
|
|
{
|
|
SetCheck(1);
|
|
if (m_pclMS->m_fn_bCanBeUnallocated())
|
|
{
|
|
if (m_pclMS->m_pclActorMS->m_fn_bIsAllocated() != pclModelMS->m_fn_bIsAllocated())
|
|
SetWindowText("Unalloc");
|
|
else
|
|
SetWindowText("All.d");
|
|
}
|
|
else
|
|
{
|
|
if ( m_pclMS->m_fn_tdeGetManiability() == MS_MANIABILITY_ALLOCATED_ONLY_ONCE )
|
|
SetWindowText("Once");
|
|
else if ( m_pclMS->m_fn_tdeGetManiability() == MS_MANIABILITY_ALWAYS_ALLOCATED )
|
|
SetWindowText("Always");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SetCheck(0);
|
|
if (m_pclMS->m_pclActorMS->m_fn_bIsAllocated() != pclModelMS->m_fn_bIsAllocated())
|
|
SetWindowText("Alloc");
|
|
else
|
|
SetWindowText("Unall.d");
|
|
|
|
ERROR_ASSERT( m_pclMS->m_fn_bCanBeUnallocated() );
|
|
}
|
|
|
|
if (m_pclMS->m_pclActorMS->m_fn_bIsAllocated() != pclModelMS->m_fn_bIsAllocated())
|
|
EnableWindow(TRUE);
|
|
else
|
|
EnableWindow(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SetWindowText("");
|
|
SetCheck(0);
|
|
EnableWindow(FALSE);
|
|
}
|
|
|
|
break;
|
|
|
|
case ECAR_MS_BUTTON_TYPE_OPEN :
|
|
if ( m_pclMS->m_pclActorMS != NULL )
|
|
{
|
|
if ( m_pclMS->m_pclActorMS->m_fn_bIsAllocated() )
|
|
{
|
|
EnableWindow(TRUE);
|
|
|
|
if ( m_pclMS->m_pclActorMS->m_fn_bIsOpen() )
|
|
SetCheck(1);
|
|
else
|
|
SetCheck(0);
|
|
}
|
|
else
|
|
{
|
|
SetCheck(0);
|
|
EnableWindow(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SetCheck(0);
|
|
EnableWindow(FALSE);
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|