reman3/Rayman_X/cpa/tempgrp/Ctl/Src/Data/CTL_DatM.cpp

235 lines
7.4 KiB
C++

// Implementation file for the definition of a characteristic type
/////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "Data\CTL_DatM.hpp"
#include "WControls\CTL_WCkB.hpp"
//External Modules
#include "CTL_ErO.hpp"
//End of External Modules
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//Constructors / Destructor
//**************************************************************************************
CTL_Editor_MaskedData::CTL_Editor_MaskedData(CTL_Editor_MaskDescriptor *_pclMaskdescriptor,
CString csScriptName,
CTL_Editor_DataList *_pclParentList,
CTL_Editor_Data *pclCurrentBaseData /*= NULL*/)
: CTL_Editor_Data(CTL_DATA_TYPE__MASKED,
csScriptName,
_pclParentList,
pclCurrentBaseData)
{
m_pri_pclMaskdescriptor = _pclMaskdescriptor;
}
//**************************************************************************************
CTL_Editor_MaskedData::~CTL_Editor_MaskedData()
{
}
//**************************************************************************************
//Function called to Init the data
void CTL_Editor_MaskedData::m_fn_vInitData()
{
}
//**************************************************************************************
//Function called to read associated motor's data
void CTL_Editor_MaskedData::m_fn_vGetMotorData()
{
BOOL bMustReadData = TRUE;
if ( m_pro_td_p_fn_bDataMustBeRead != NULL )
bMustReadData &= m_pro_td_p_fn_bDataMustBeRead(this);
if ( bMustReadData )
{
unsigned long ulValue = *((unsigned long *)m_pub_fn_pvGetMotorData());
m_ulCurrentValue = ulValue;
}
}
//**************************************************************************************
//Function called to update associated motor's data
void CTL_Editor_MaskedData::m_fn_vUpdateMotorData(CTL_tdeUpdateReason eReason,
long _lUserDefinedReason /*= 0*/)
{
BOOL bMustWriteData = TRUE;
if ( m_pro_td_p_fn_bDataMustBeWritten != NULL )
bMustWriteData &= m_pro_td_p_fn_bDataMustBeWritten(this);
if ( bMustWriteData )
{
long *p_lValue = (long *)m_pub_fn_pvGetMotorData();
*p_lValue = m_ulCurrentValue;
//Special changes
m_fn_vDataHasBeenChanged(eReason, _lUserDefinedReason);
}
}
//************************************************************************
//Function called to update data with another one
void CTL_Editor_MaskedData::m_fn_vUpdateData( CTL_Editor_Data *pclSourceData,
CTL_tdeUpdateReason eReason,
long _lUserDefinedReason /*= 0*/)
{
ERROR_ASSERT(pclSourceData->m_pub_fn_tdeGetDataType() == m_pub_fn_tdeGetDataType());
m_ulCurrentValue = ((CTL_Editor_MaskedData *)pclSourceData)->m_ulCurrentValue;
// m_fn_bSetLink(pclSourceData->m_fn_eGetLink());
m_fn_vUpdateMotorData(eReason, _lUserDefinedReason);
}
//************************************************************************
//Function called to get a string representing the value of the data
CStringList *CTL_Editor_MaskedData::m_fn_pcslFormatDataValueString()
{
m_csStringList.RemoveAll();
CString csStringToReturn;
csStringToReturn.Format("%u",(unsigned long)m_ulCurrentValue);
m_csStringList.AddTail(csStringToReturn);
return &m_csStringList;
}
//************************************************************************
//Function called to set the value of the data acoording to a string representing it
void CTL_Editor_MaskedData::m_fn_vSetValueWithString(CStringList *pcslValueStringList)
{
ERROR_ASSERT(pcslValueStringList->GetCount() == 1);
CString csValueString = pcslValueStringList->GetHead();
m_ulCurrentValue = atol((char *)LPCTSTR(csValueString));
m_fn_vUpdateMotorData();
}
//************************************************************************
//Function called to look if data has been modified (by motor for example)
void CTL_Editor_MaskedData::m_fn_vLookIfDataHasBeenModified()
{
m_fn_vGetMotorData();
m_pub_fn_vSetDataHasChanged( m_ulCurrentValue != m_ulOldValue );
if ( m_pub_fn_bGetDataHasChanged() )
m_ulOldValue = m_ulCurrentValue;
}
//Undo
//************************************************************************
//Function called to save the current Value (for Undo)
void CTL_Editor_MaskedData::m_fn_vKeepCurrentValue()
{
m_ulKeepedValueForUndo = m_ulCurrentValue;
}
//************************************************************************
//Function called to validate Undo for the current change
void CTL_Editor_MaskedData::m_fn_vRegisterUndoAction()
{
/* if ( m_bKeepedValueForUndo != m_bCurrentState )
{
EdActors_ActorBooleanDataModif *pclModif = new EdActors_ActorBooleanDataModif(this,
m_bKeepedValueForUndo,
m_bCurrentState);
m_pclParentActor->m_clUndoManager.AskFor(pclModif);
}
*/
}
//************************************************************************
CTL_Editor_MaskDescriptor *CTL_Editor_MaskedData::m_pub_fn_pclGetMaskdescriptor()
{
return m_pri_pclMaskdescriptor;
}
//##################################################################"
//************************************************************************
//Constructor
/*EdActors_ActorBooleanDataModif::EdActors_ActorBooleanDataModif( CTL_Editor_Data *pclData,
BOOL bOldValue,
BOOL bNewValue)
: EdActors_ActorDataModif(pclData)
{
m_bNewValue = bNewValue;
m_bKeepedValue = bOldValue;
CString csName;
csName.Format("%s : %s --> %s", pclData->m_csScriptName,
bOldValue ? "Vrai" : "Faux",
bNewValue ? "Vrai" : "Faux");
SetName(csName);
}
//************************************************************************
//Destructor
EdActors_ActorBooleanDataModif::~EdActors_ActorBooleanDataModif()
{
}
//************************************************************************
BOOL EdActors_ActorBooleanDataModif::Do()
{
((CTL_Editor_MaskedData *)m_pclData)->m_bCurrentState = m_bNewValue;
m_pclData->m_fn_vUpdateMotorData();
m_pclData->m_bDataHasChanged = TRUE;
m_pclData->m_pclParentControl->m_fn_vUpdate();
// m_pclData->m_pclParentActor->m_pclActor->fn_vNotifySave();
return TRUE;
}
//************************************************************************
BOOL EdActors_ActorBooleanDataModif::Undo()
{
((CTL_Editor_MaskedData *)m_pclData)->m_bCurrentState = m_bKeepedValue;
m_pclData->m_fn_vUpdateMotorData();
m_pclData->m_bDataHasChanged = TRUE;
m_pclData->m_pclParentControl->m_fn_vUpdate();
return TRUE;
}
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : mfn_bEqualsModifiedDataOldValue
// Date : 98/06/24
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Stegaru Cristian - CPA
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL CTL_Editor_MaskedData::mfn_bEqualsModifiedDataOldValue (CTL_Editor_Data *pModifiedData)
{
ASSERT (pModifiedData);
ERROR_ASSERT(pModifiedData->m_pub_fn_tdeGetDataType() == m_pub_fn_tdeGetDataType());
return m_ulCurrentValue == ((CTL_Editor_MaskedData *)pModifiedData)->m_ulOldValue;
}