291 lines
7.0 KiB
C++
291 lines
7.0 KiB
C++
// EdIRWaW.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "Defines.hpp"
|
|
|
|
#ifdef D_ED_IR_ACTIVE
|
|
|
|
#include "EdIRWaW.hpp"
|
|
|
|
#include "EdIRDat.hpp"
|
|
#include "EdIRStrg.hpp"
|
|
|
|
#include "EDACActr.hpp"
|
|
#include "_Actors.hpp"
|
|
|
|
#include "WAW.h"
|
|
|
|
// CPA2 ASilvescu 98-05-06
|
|
#include "dpt.h"
|
|
// CPA2 ASilvescu 98-05-06
|
|
|
|
/**********************************************************************************/
|
|
static CString fn_csGetValue(WAW_Data *pclWatchData)
|
|
{
|
|
CString csValue;
|
|
|
|
CTL_Editor_Data *pclData=(CTL_Editor_Data *)pclWatchData->m_pub_fn_pvGetUserData();
|
|
|
|
if(pclData!=NULL)
|
|
{
|
|
CString csDsgVarName;
|
|
CString csDsgVarType;
|
|
CStringList cslDsgVarValues;
|
|
fn_vGetInfoAboutDsgVar(pclData,csDsgVarName,csDsgVarType,&cslDsgVarValues);
|
|
|
|
//Is it an array ?
|
|
if(cslDsgVarValues.GetCount()>1)
|
|
{
|
|
CString csWatchName=pclWatchData->m_pub_fn_csGetDataName();
|
|
long lIndex=csWatchName.Find('[');
|
|
if(lIndex!=-1)
|
|
{
|
|
long lEndIndex=csWatchName.Find(']');
|
|
if(lEndIndex!=-1)
|
|
{
|
|
CString csArrayIndex=csWatchName.Mid(lIndex+1,lEndIndex-(lIndex+1));
|
|
long lArrayIndex=atol(M_MAKECHAR(csArrayIndex));
|
|
|
|
POSITION pos=cslDsgVarValues.FindIndex(lArrayIndex);
|
|
if(pos!=NULL)
|
|
csValue=cslDsgVarValues.GetAt(pos);
|
|
else
|
|
{
|
|
ASSERT(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ASSERT(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ASSERT(FALSE);
|
|
}
|
|
}
|
|
else
|
|
csValue=cslDsgVarValues.GetHead();
|
|
}
|
|
else
|
|
{
|
|
ASSERT(FALSE);
|
|
}
|
|
|
|
return csValue;
|
|
}
|
|
|
|
/**********************************************************************************/
|
|
void fn_vCallBackForWatchWindow(WAW_tdeMessage eMessage,void *pvData)
|
|
{
|
|
switch(eMessage)
|
|
{
|
|
case WAW_eDeletedData:
|
|
{
|
|
WAW_Data *pclWatchData=(WAW_Data *)pvData;
|
|
if(pclWatchData!=NULL)
|
|
{
|
|
CTL_Editor_Data *pclData=(CTL_Editor_Data *)pclWatchData->m_pub_fn_pvGetUserData();
|
|
|
|
if(pclData!=NULL)
|
|
{
|
|
fn_vSetWatchData(pclData,NULL);
|
|
fn_vSetInWatch(pclData,FALSE);
|
|
|
|
// CPA2 ASilvescu 98-05-06
|
|
CString saveFileName = M_GetMainApp()->m_csEditorDataPath;
|
|
saveFileName += "watch.dat";
|
|
EdActors_EditorActor *pclActor=fn_pclGetParentActor(pclData);
|
|
if(pclActor)
|
|
WritePrivateProfileString(pclActor->m_pclActor->GetName(), pclData->m_pub_fn_csGetDataName(), NULL, saveFileName);
|
|
// CPA2 ASilvescu 98-05-06
|
|
|
|
CString csDsgVarName;
|
|
CString csDsgVarType;
|
|
CStringList cslDsgVarValues;
|
|
fn_vGetInfoAboutDsgVar(pclData,csDsgVarName,csDsgVarType,&cslDsgVarValues);
|
|
|
|
//Is it an single entry ?
|
|
if(cslDsgVarValues.GetCount()==1)
|
|
{
|
|
//Update display
|
|
CTL_Editor_Control *pclControl=pclData->m_pub_fn_pclGetParentControl();
|
|
CTL_Editor_Static *pclStatic=pclControl->m_pub_fn_pclGetNameStatic();
|
|
// CPA2 ASilvescu 98-04-30
|
|
if(pclStatic)
|
|
// End CPA2 ASilvescu 98-04-30
|
|
pclStatic->InvalidateRect(NULL);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ASSERT(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ASSERT(FALSE);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case WAW_eDeletedNode:
|
|
{
|
|
WAW_Data *pclWatchData=(WAW_Data *)pvData;
|
|
if(pclWatchData!=NULL)
|
|
{
|
|
CTL_Editor_Data *pclData=(CTL_Editor_Data *)pclWatchData->m_pub_fn_pvGetUserData();
|
|
|
|
if(pclData!=NULL)
|
|
{
|
|
fn_vSetWatchData(pclData,NULL);
|
|
|
|
CString csDsgVarName;
|
|
CString csDsgVarType;
|
|
CStringList cslDsgVarValues;
|
|
fn_vGetInfoAboutDsgVar(pclData,csDsgVarName,csDsgVarType,&cslDsgVarValues);
|
|
|
|
//Is it an array ?
|
|
if(cslDsgVarValues.GetCount()>1)
|
|
{
|
|
fn_vSetInWatch(pclData,FALSE);
|
|
|
|
//Update display
|
|
CTL_Editor_Control *pclControl=pclData->m_pub_fn_pclGetParentControl();
|
|
CTL_Editor_Static *pclStatic=pclControl->m_pub_fn_pclGetNameStatic();
|
|
// CPA2 ASilvescu 98-04-30
|
|
if(pclStatic)
|
|
// End CPA2 ASilvescu 98-04-30
|
|
pclStatic->InvalidateRect(NULL);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ASSERT(FALSE);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case WAW_eUpdateData:
|
|
{
|
|
WAW_DataList clWAWDataList(C_MODULE_NAME);
|
|
clWAWDataList.m_pub_fn_vGetVisible();
|
|
clWAWDataList.m_pub_fn_vSelectData();
|
|
POSITION pos=clWAWDataList.GetHeadPosition();
|
|
while(pos!=NULL)
|
|
{
|
|
WAW_Data *pclWatchData=clWAWDataList.GetNext(pos);
|
|
|
|
CString csValue=fn_csGetValue(pclWatchData);
|
|
WAW_fn_bUpdateData(pclWatchData,csValue);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case WAW_eHideWindow:
|
|
{
|
|
}
|
|
break;
|
|
|
|
case WAW_eShowWindow:
|
|
{
|
|
}
|
|
break;
|
|
|
|
default:
|
|
{
|
|
AfxMessageBox("fn_vCallBackForWatchWindow: unknown message !!");
|
|
}
|
|
}
|
|
}
|
|
|
|
//*******************************************************************************
|
|
void fn_vAddValueInWatch(CTL_Editor_Data *pclData)
|
|
{
|
|
EdActors_EditorActor *pclActor=fn_pclGetParentActor(pclData);
|
|
if(pclActor!=NULL)
|
|
{
|
|
//Adds Actor Name node
|
|
CString csActorName=pclActor->m_pclActor->GetName();
|
|
WAW_Data *pclWatchData=WAW_fn_pclAddNode(C_MODULE_NAME,NULL,csActorName);
|
|
|
|
//Adds "Designer Variables" node
|
|
pclWatchData=WAW_fn_pclAddNode(C_MODULE_NAME,pclWatchData,"Designer Variables");
|
|
|
|
//Adds Data (Name+Value)
|
|
CString csDsgVarName;
|
|
CString csDsgVarType;
|
|
CStringList cslDsgVarValues;
|
|
fn_vGetInfoAboutDsgVar(pclData,csDsgVarName,csDsgVarType,&cslDsgVarValues);
|
|
|
|
ASSERT(cslDsgVarValues.IsEmpty()==FALSE);
|
|
|
|
// CPA2 ASilvescu 98-05-06
|
|
CString saveFileName = M_GetMainApp()->m_csEditorDataPath;
|
|
saveFileName += "watch.dat";
|
|
WritePrivateProfileString(csActorName, pclData->m_pub_fn_csGetDataName(), "Designer Variables", saveFileName);
|
|
// CPA2 ASilvescu 98-05-06
|
|
|
|
if(cslDsgVarValues.GetCount()==1)
|
|
{
|
|
pclWatchData=WAW_fn_pclAddData(C_MODULE_NAME,pclWatchData,csDsgVarName,cslDsgVarValues.GetHead(),pclData);
|
|
fn_vSetWatchData(pclData,pclWatchData);
|
|
}
|
|
else
|
|
{
|
|
//It is an array
|
|
//Adds a node for the array
|
|
pclWatchData=WAW_fn_pclAddNode(C_MODULE_NAME,pclWatchData,csDsgVarName,pclData);
|
|
fn_vSetWatchData(pclData,pclWatchData);
|
|
|
|
//Adds array entries
|
|
long lIndex=0;
|
|
CString csIndex;
|
|
CString csDsgVarNameEntry;
|
|
POSITION pos=cslDsgVarValues.GetHeadPosition();
|
|
while(pos!=NULL)
|
|
{
|
|
csIndex.Format("%ld",lIndex);
|
|
csDsgVarNameEntry=csDsgVarName+"["+csIndex+"]";
|
|
WAW_fn_pclAddData(C_MODULE_NAME,pclWatchData,csDsgVarNameEntry,cslDsgVarValues.GetNext(pos),pclData);
|
|
lIndex++;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox("EdIRWaW::fn_vAddValueInWatch : Parent actor is NULL !!");
|
|
|
|
ASSERT(FALSE);
|
|
}
|
|
}
|
|
|
|
//*******************************************************************************
|
|
void fn_vRemoveValueFromWatch(CTL_Editor_Data *pclData)
|
|
{
|
|
WAW_Data *pclWatchData=fn_pclGetWatchData(pclData);
|
|
if(pclWatchData!=NULL)
|
|
{
|
|
WAW_fn_bDeleteData(pclWatchData);
|
|
fn_vSetWatchData(pclData,NULL);
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox("EdIRWaW::fn_vRemoveValueFromWatch : Watch data is NULL !!");
|
|
|
|
ASSERT(FALSE);
|
|
}
|
|
// CPA2 ASilvescu 98-05-06
|
|
CString saveFileName = M_GetMainApp()->m_csEditorDataPath;
|
|
saveFileName += "watch.dat";
|
|
EdActors_EditorActor *pclActor=fn_pclGetParentActor(pclData);
|
|
if(pclActor)
|
|
WritePrivateProfileString(pclActor->m_pclActor->GetName(), pclData->m_pub_fn_csGetDataName(), NULL, saveFileName);
|
|
// CPA2 ASilvescu 98-05-06
|
|
}
|
|
|
|
#endif //D_ED_IR_ACTIVE
|