// 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; }