reman3/Rayman_X/cpa/tempgrp/TME/Src/EMECVwMS.cpp

210 lines
6.4 KiB
C++

// CPAMVwMS.cpp : implementation file
/////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "EMECVwMS.hpp"
#include "EMECFmMn.hpp"
#include "EMECDoc.hpp"
#include "EMECCnst.hpp"
#include "_Minterf.hpp"
#include "help_def.h" //for Context Help
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPA_Meca_MiniStrucView
IMPLEMENT_DYNCREATE(CPA_Meca_MiniStrucView, CTL_Editor_BaseFormView)
BEGIN_MESSAGE_MAP(CPA_Meca_MiniStrucView, CTL_Editor_BaseFormView)
//{{AFX_MSG_MAP(CPA_Meca_MiniStrucView)
ON_WM_HELPINFO()
ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//***************************************************************************
CPA_Meca_MiniStrucView::CPA_Meca_MiniStrucView()
: CTL_Editor_BaseFormView(CPA_Meca_MiniStrucView::IDD, TRUE)
{
//{{AFX_DATA_INIT(CPA_Meca_MiniStrucView)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pclOldCardType = NULL;
}
//***************************************************************************
CPA_Meca_MiniStrucView::~CPA_Meca_MiniStrucView()
{
}
//Member Functions
////////////////////////////
//***************************************************************************
void CPA_Meca_MiniStrucView::OnInitialUpdate()
{
CTL_Editor_BaseFormView::OnInitialUpdate();
m_fn_pclGetDocument()->m_pclMiniStrucView = this;
CRect crClientRect;
GetClientRect(crClientRect);
//Sets the edition rectangle
MoveWindow(CRect(0,0,100,100));
m_fn_vCreateAllMS();
}
//*********************************************************************************
// Creates the MS controls (and their data controls)
void CPA_Meca_MiniStrucView::m_fn_vCreateAllMS()
{
m_fn_vCreateMS(&(m_fn_pclGetDocument()->m_clCardTypeList));
}
//*********************************************************************************
// Creates the MS controls (and their data controls)
void CPA_Meca_MiniStrucView::m_fn_vCreateMS(CPA_Meca_CardTypeList *pclList)
{
//Creates the list of MS (non visible action)
CRect crCurrentRect(m_crEditionRect);
crCurrentRect.bottom = crCurrentRect.top + C_MS_LINE_HEIGHT;
CPA_Meca_CardType *pclCurrentCardType;
POSITION MiniStrucPos = pclList->GetHeadPosition();
while ( MiniStrucPos != NULL )
{
pclCurrentCardType = pclList->GetNext(MiniStrucPos);
pclCurrentCardType->m_fn_lCreateMSControls(this, crCurrentRect);
crCurrentRect.OffsetRect(0, C_MS_SPACING + C_MS_LINE_HEIGHT);
}
}
//*******************************************************************************
//Called (during motor for example) to update current data in editor
void CPA_Meca_MiniStrucView::m_fn_vUpdateAllDatas()
{
//Updates all controls
POSITION ControlPos = m_fn_pclGetDocument()->m_pclCurrentCardType->m_clControlList.GetHeadPosition();
while ( ControlPos != NULL )
m_fn_pclGetDocument()->m_pclCurrentCardType->m_clControlList.GetNext(ControlPos)->m_fn_vUpdate();
}
//*******************************************************************************
void CPA_Meca_MiniStrucView::m_fn_vEditCard(CPA_Meca_Card *pclNewCard)
{
m_fn_vUpdateAllDatas();
}
//*******************************************************************************
//To display a Card Type (<--> the associated controls)
void CPA_Meca_MiniStrucView::m_fn_vDisplayCardType(CPA_Meca_CardType *pclNewCardType,
BOOL bMustRepaint)
{
if ( (m_pclOldCardType != NULL) && (m_pclOldCardType != pclNewCardType) )
m_pclOldCardType->m_fn_vHideAllControls();
if ( (bMustRepaint) || (m_pclOldCardType != pclNewCardType) )
{
//If no Card has been selected yet, we chose the first one
//(else names are not displayed)
if ( pclNewCardType->m_fn_pclGetEditedCard() == NULL )
{
//To avoid a non-loaded Card to be selected
CPA_Meca_Card *pclCurrentCard = pclNewCardType->m_fn_pclGetCardsList()->m_pub_fn_pclGetFirstAvailableCard();
pclNewCardType->m_fn_vSetEditedCard(pclCurrentCard);
}
if ( pclNewCardType->m_fn_pclGetEditedCard() != NULL )
{
m_fn_pclGetDocument()->m_fn_vSetPointersForCard(pclNewCardType->m_fn_pclGetEditedCard());
pclNewCardType->m_fn_lOpen(m_crEditionRect);
m_pclOldCardType = pclNewCardType;
}
}
}
//*******************************************************************************
CPA_Meca_MyDocument* CPA_Meca_MiniStrucView::m_fn_pclGetDocument()
{
return g_pclInterface->m_fn_pclGetDocument();
}
//***************************************************************************
BOOL CPA_Meca_MiniStrucView::OnHelpInfo(HELPINFO* pHelpInfo)
{
CString csFileAndWindow = g_pclInterface->m_clDocument.m_csHelpFileNameAndPath;
::WinHelp(m_hWnd,
LPCTSTR(csFileAndWindow),
HELP_CONTEXT,
IDH_GENERAL);
//return CFormView::OnHelpInfo(pHelpInfo);
return FALSE;
}
//***************************************************************************
void CPA_Meca_MiniStrucView::OnSize(UINT nType, int cx, int cy)
{
CTL_Editor_BaseFormView::OnSize(nType, cx, cy);
CRect crClientRect;
GetClientRect(crClientRect);
//Sets the edition rectangle
m_crEditionRect.top = C_MAIN_VIEW_SPACING;
m_crEditionRect.bottom = crClientRect.bottom - C_MAIN_VIEW_SPACING;
m_crEditionRect.left = crClientRect.left + C_MAIN_VIEW_SPACING;
m_crEditionRect.right = crClientRect.right - C_MAIN_VIEW_SPACING - C_SCROLLBAR_WIDTH;
CPoint cpTopLeft(0,C_MAIN_VIEW_SPACING);
CPoint cpTopRight(crClientRect.Width(),C_MAIN_VIEW_SPACING);
if
(
m_fn_pclGetDocument()
&& (m_fn_pclGetDocument()->m_pclCurrentCardType)
&& !(m_fn_pclGetDocument()->m_pclCurrentCardType->m_clControlList.IsEmpty())
)
m_fn_pclGetDocument()->m_pclCurrentCardType->m_clControlList.m_pub_fn_vDisplayControlsInZone(cpTopLeft,cpTopRight);
}
/////////////////////////////////////////////////////////////////////////////
// CPA_Meca_MiniStrucView diagnostics
//***************************************************************************
//***************************************************************************
//***************************************************************************
#ifdef _DEBUG
void CPA_Meca_MiniStrucView::AssertValid() const
{
CTL_Editor_BaseFormView::AssertValid();
}
void CPA_Meca_MiniStrucView::Dump(CDumpContext& dc) const
{
CTL_Editor_BaseFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPA_Meca_MiniStrucView message handlers