reman3/Rayman_X/cpa/tempgrp/Ctl/Src/Controls/CTL_LCtl.cpp

384 lines
15 KiB
C++

// Definition of the class for the list of base controls
//
// YB
//////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "Controls\CTL_LCtl.hpp"
#include "Controls\CTL_CtlB.hpp"
#include "Controls\CTL_CtlE.hpp"
#include "Controls\CTL_CtlF.hpp"
#include "Controls\CTL_CtlI.hpp"
#include "Controls\CTL_CtlM.hpp"
#include "Controls\CTL_CtlT.hpp"
#include "Controls\CTL_CtlV.hpp"
#include "Data\CTL_LDat.hpp"
//External Modules
#include "CTL_ErO.hpp"
//End of External Modules
//**************************************************************************************
//**************************************************************************************
//**************************************************************************************
//**************************************************************************************
CTL_Editor_ControlList::CTL_Editor_ControlList()
{
}
//**************************************************************************************
CTL_Editor_ControlList::~CTL_Editor_ControlList()
{
m_fn_vEmptyList();
}
//**************************************************************************************
void CTL_Editor_ControlList::m_fn_vAddElement(CTL_Editor_Control *pclNewElement)
{
AddTail(pclNewElement);
}
//**************************************************************************************
void CTL_Editor_ControlList::m_fn_vEmptyList()
{
POSITION pos = GetHeadPosition();
while ( pos != NULL )
delete GetNext(pos);
RemoveAll();
}
//Controls Handling
//**************************************************************************************
void CTL_Editor_ControlList::m_pub_fn_vDisplayControlsInZone(CPoint &r_clTopLeft, CPoint clTopRight)
{
long lBeginning = r_clTopLeft.y;
CRect crSameLineRect(r_clTopLeft, clTopRight);
CRect crNextLineRect(r_clTopLeft, clTopRight);
POSITION pos = GetHeadPosition();
while ( pos != NULL )
GetNext(pos)->m_pub_fn_vDisplayInZone(crSameLineRect, crNextLineRect);
r_clTopLeft.y = crNextLineRect.top;
}
//**************************************************************************************
void CTL_Editor_ControlList::m_pub_fn_vHideAllControls()
{
POSITION pos = GetHeadPosition();
while ( pos != NULL )
GetNext(pos)->m_fn_vHide();
}
//**************************************************************************************
//Updates all controls in list, with the given list of Data
// 1) Gets motor data for each Data
// 2)
void CTL_Editor_ControlList::m_pub_fn_vUpdateControlsWithListOfData(class CTL_Editor_DataList *_pclDataList)
{
//First checks coherence of the two lists
long lNumberOfControls = GetCount();
long lNumberOfData = _pclDataList->GetCount();
ERROR_ASSERT( lNumberOfControls == lNumberOfData );
CTL_Editor_Control *pclCurrentControl;
CTL_Editor_Data *pclCurrentData;
POSITION ControlPos = GetHeadPosition();
POSITION DataPos = _pclDataList->GetHeadPosition();
while ( ControlPos != NULL )
{
pclCurrentControl = GetNext(ControlPos);
//ANNECY CB
#if 0
ERROR_PREPARE_M(CTL_g_csModuleNameForErO,
"Setting pointers on motor data in a list of controls",
"CTL_Editor_ControlList::m_pub_fn_vUpdateControlsWithListOfData(...)",
E_ERROR_GRAVITY_FATAL,
"There are more controls in Controls list than in Data list");
ERROR_ASSERT( DataPos != NULL );
#endif
//END
pclCurrentData = _pclDataList->GetNext(DataPos);
//Verifies types are the same...
//ANNECY CB
#if 0
ERROR_PREPARE_M(CTL_g_csModuleNameForErO,
"Setting pointers on motor data for the newly selected actor",
"EdActors_MyDocument::m_fn_vSetPointers(...)",
E_ERROR_GRAVITY_FATAL,
"The types of control in Controls and Data are not the same");
ERROR_ASSERT( pclCurrentData->m_pub_fn_tdeGetDataType() == pclCurrentControl->m_pub_fn_tdeGetDataType() );
#endif
//END
pclCurrentData->m_fn_vGetMotorData();
pclCurrentControl->m_fn_vSetEditedData(pclCurrentData);
pclCurrentControl->m_fn_vUpdate(CTL_UPDATE_REASON__DATA_READ_FROM_MOTOR, 0);
}
}
//**************************************************************************************
//Updates the current value of all controls in the List,according to the currently edited Data of each
void CTL_Editor_ControlList::m_pub_fn_vUpdateControlsWithEditedData(BOOL _bMustReadMotorData)
{
//Updates all controls
CTL_Editor_Control *pclCurrentControl;
POSITION ControlPos = GetHeadPosition();
while ( ControlPos != NULL )
{
pclCurrentControl = GetNext(ControlPos);
if ( _bMustReadMotorData )
{
ERROR_ASSERT( pclCurrentControl->m_fn_pclGetEditedData() != NULL );
pclCurrentControl->m_fn_pclGetEditedData()->m_fn_vGetMotorData();
}
pclCurrentControl->m_fn_vUpdate();
}
}
//*********************************************************************************
CTL_OwnerData *CTL_Editor_ControlList::m_pub_fn_pclAddOwnerData(void *_pvDataPtr,
CString _csName)
{
return m_pri_clListOfOwnerData.m_pub_fn_pclAddOwnerData(_pvDataPtr, _csName);
}
//*********************************************************************************
CTL_OwnerData *CTL_Editor_ControlList::m_pub_fn_pclAddOwnerData(long _lData,
CString _csName)
{
return m_pri_clListOfOwnerData.m_pub_fn_pclAddOwnerData(_lData, _csName);
}
//*********************************************************************************
CTL_OwnerData *CTL_Editor_ControlList::m_pub_fn_pclGetOwnerDataWithName(CString _csSearchedName)
{
return m_pri_clListOfOwnerData.m_pub_fn_pclFindOwnerDataWithName(_csSearchedName);
}
//**************************************************************************************
//**************************************************************************************
//**************************************************************************************
CTL_Editor_Control *CTL_Editor_ControlList::m_fn_pclAddIntegerControl(long lMinValue,
long lMaxValue,
char cDataLength,
BOOL bSigned,
BOOL bReadOnly,
CTL_tdeControlSpacingType tdeSpacingType,
BOOL bUserCanChangeAspect,
CString _csControlName,
BOOL _bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
unsigned char ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
)
{
CTL_Editor_IntegerControl *pclNewElement = new CTL_Editor_IntegerControl( lMinValue,
lMaxValue,
cDataLength,
bSigned,
bReadOnly,
tdeSpacingType,
bUserCanChangeAspect,
this,
_csControlName,
_bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
);
m_fn_vAddElement(pclNewElement);
return pclNewElement;
}
//**************************************************************************************
CTL_Editor_Control *CTL_Editor_ControlList::m_fn_pclAddDecimalControl(long double ldMinValue,
long double ldMaxValue,
char cDataLength,
BOOL bReadOnly,
CTL_tdeControlSpacingType tdeSpacingType,
BOOL bUserCanChangeAspect,
CString _csControlName,
BOOL _bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
unsigned char ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
)
{
CTL_Editor_DecimalControl *pclNewElement = new CTL_Editor_DecimalControl( ldMinValue,
ldMaxValue,
cDataLength,
bReadOnly,
tdeSpacingType,
bUserCanChangeAspect,
this,
_csControlName,
_bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
);
m_fn_vAddElement(pclNewElement);
return pclNewElement;
}
//**************************************************************************************
CTL_Editor_Control *CTL_Editor_ControlList::m_fn_pclAddBooleanControl(BOOL bReadOnly,
CTL_tdeControlSpacingType tdeSpacingType,
BOOL bUserCanChangeAspect,
CString _csControlName,
BOOL _bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
unsigned char ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
)
{
CTL_Editor_BooleanControl *pclNewElement = new CTL_Editor_BooleanControl( bReadOnly,
tdeSpacingType,
bUserCanChangeAspect,
this,
_csControlName,
_bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
);
m_fn_vAddElement(pclNewElement);
return pclNewElement;
}
//**************************************************************************************
CTL_Editor_Control *CTL_Editor_ControlList::m_fn_pclAddMaskedControl(BOOL bReadOnly,
CTL_tdeControlSpacingType tdeSpacingType,
BOOL bUserCanChangeAspect,
CString _csControlName,
BOOL _bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
unsigned char ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
)
{
CTL_Editor_MaskedControl *pclNewElement = new CTL_Editor_MaskedControl( bReadOnly,
tdeSpacingType,
bUserCanChangeAspect,
this,
_csControlName,
_bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
);
m_fn_vAddElement(pclNewElement);
return pclNewElement;
}
//**************************************************************************************
CTL_Editor_Control *CTL_Editor_ControlList::m_fn_pclAddEnumControl(BOOL bReadOnly,
CString _csControlName,
BOOL _bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
unsigned char ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
)
{
CTL_Editor_EnumControl *pclNewElement = new CTL_Editor_EnumControl( bReadOnly,
this,
_csControlName,
_bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
);
m_fn_vAddElement(pclNewElement);
return pclNewElement;
}
//**************************************************************************************
CTL_Editor_Control *CTL_Editor_ControlList::m_fn_pclAddTextControl(BOOL bReadOnly,
CTL_tdeControlSpacingType tdeSpacingType,
BOOL bUserCanChangeAspect,
CString _csControlName,
BOOL _bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
unsigned char ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
)
{
CTL_Editor_TextControl *pclNewElement = new CTL_Editor_TextControl( bReadOnly,
tdeSpacingType,
bUserCanChangeAspect,
this,
_csControlName,
_bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
);
m_fn_vAddElement(pclNewElement);
return pclNewElement;
}
//**************************************************************************************
CTL_Editor_Control *CTL_Editor_ControlList::m_fn_pclAddVectorControl(long double ldMinValue,
long double ldMaxValue,
char cDataLength,
BOOL bReadOnly,
CString _csControlName,
BOOL _bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
unsigned char ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
)
{
CTL_Editor_VectorControl *pclNewElement = new CTL_Editor_VectorControl( ldMinValue,
ldMaxValue,
cDataLength,
bReadOnly,
this,
_csControlName,
_bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
);
m_fn_vAddElement(pclNewElement);
return pclNewElement;
}