601 lines
17 KiB
C++
601 lines
17 KiB
C++
// ctl_Dga.cpp : implementation file
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
#include "StdAfx.h"
|
|
|
|
#include "scr.h"
|
|
#include "ai/aibase/gsparam.h"
|
|
#define ACTIVE_EDITOR /* we don't want optimized arrays in editors, but defining ACTIVE_EDITOR in the project's settings doesn't work... */
|
|
#include "ai/aibase/array.h"
|
|
#undef ACTIVE_EDITOR
|
|
#include "ai/aigame/enumVar.h"
|
|
|
|
#include "CTL_Dga.hpp"
|
|
|
|
#include "Controls\CTL_Ctl.hpp"
|
|
#include "Controls\Ctl_Ctla.hpp"
|
|
#include "Controls\Ctl_Cnst.hpp"
|
|
//#include "Others\CTL_Mask.hpp"
|
|
#include "Data\CTL_Data.hpp"
|
|
#include "Others\CTL_Pri.hpp"
|
|
#include "WControls\Ctl_vBas.hpp"
|
|
#include "WControls\Ctl_wsta.hpp"
|
|
|
|
#include "dialogs\ctl_aevw.hpp"
|
|
|
|
#include "Main\Inc\_EditID.h"
|
|
|
|
//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
|
|
|
|
#define EdActors_C_FirstIDForListBoxCheckButtons 1000
|
|
|
|
#define C_COLOR_UNSEL RGB( 50,200, 50)
|
|
#define C_COLOR_SEL RGB(200, 70, 30)
|
|
|
|
#define C_ARRAY_DIALOG "Array"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTL_DialogArrayDataEdition dialog
|
|
|
|
BEGIN_MESSAGE_MAP(CTL_DialogArrayDataEdition, CDialog)
|
|
//{{AFX_MSG_MAP(CTL_DialogArrayDataEdition)
|
|
ON_WM_SIZE()
|
|
ON_BN_CLICKED(IDC_BUTTON_INSERT, OnButtonInsert)
|
|
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
|
|
ON_BN_CLICKED(IDC_BUTTON_UP, OnButtonUp)
|
|
ON_BN_CLICKED(IDC_BUTTON_DOWN, OnButtonDown)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
//***************************************************************************
|
|
CTL_DialogArrayDataEdition::CTL_DialogArrayDataEdition(CTL_Editor_ArrayControl *_pclParentControl,
|
|
CWnd* _pParent /*= NULL*/)
|
|
: CDialog(CTL_DialogArrayDataEdition::IDD, _pParent)
|
|
{
|
|
hOldInstance = AfxGetResourceHandle();
|
|
AfxSetResourceHandle(CTL_g_hModule);
|
|
|
|
//{{AFX_DATA_INIT(CTL_DialogArrayDataEdition)
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_pclParentControl = _pclParentControl;
|
|
m_csDataName = m_pclParentControl->m_fn_pclGetEditedData()->m_pub_fn_csGetDataName();
|
|
|
|
m_pclSelectedControl = NULL;
|
|
}
|
|
|
|
//***************************************************************************
|
|
CTL_DialogArrayDataEdition::~CTL_DialogArrayDataEdition()
|
|
{
|
|
AfxSetResourceHandle(hOldInstance);
|
|
}
|
|
|
|
//***************************************************************************
|
|
void CTL_DialogArrayDataEdition::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CTL_DialogArrayDataEdition)
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTL_DialogArrayDataEdition message handlers
|
|
|
|
#define M_ADD_ONE_DSG_VAR(Name,TypeControl,TypeData,ParmsData,EngineStruct) \
|
|
|
|
|
|
//***************************************************************************
|
|
BOOL CTL_DialogArrayDataEdition::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_pclFrameControl = new CFrameWnd ();
|
|
|
|
CRect rect = CRect (0,0, 200, 150);
|
|
BOOL bRes = m_pclFrameControl -> Create (NULL,
|
|
"Titlu",
|
|
WS_CHILD | WS_VISIBLE,
|
|
rect,
|
|
this,
|
|
0,
|
|
NULL);
|
|
|
|
CCreateContext CreateContext;
|
|
|
|
CreateContext . m_pNewViewClass = RUNTIME_CLASS (CArrayElementsView);
|
|
CreateContext . m_pCurrentDoc = NULL;
|
|
CreateContext . m_pNewDocTemplate = NULL;
|
|
CreateContext . m_pLastView = NULL;
|
|
CreateContext . m_pCurrentFrame = NULL;
|
|
|
|
|
|
CWnd *pView = m_pclFrameControl -> CreateView (& CreateContext, AFX_IDW_PANE_FIRST);
|
|
pView->ShowWindow(TRUE);
|
|
pView->ModifyStyle(WS_BORDER, 0);
|
|
m_pclFrameControl -> SetActiveView ((CView *) pView, TRUE);
|
|
|
|
m_pclView = (CTL_Editor_BaseFormView *) m_pclFrameControl -> GetActiveView ();
|
|
|
|
// the array
|
|
CTL_Editor_Data *pclParentData= m_pclParentControl -> m_fn_pclGetEditedData ();
|
|
tdstArray *pstArray = (tdstArray *) pclParentData -> m_pub_fn_pvGetMotorData ();
|
|
|
|
// save
|
|
M_ARRAY_COPY (& m_stSavedArray, pstArray);
|
|
|
|
// for all elements
|
|
for (int i = 0; i < pstArray -> ucMaxSize; i ++)
|
|
m_fn_vCreateElementControl (pstArray, i);
|
|
|
|
m_pclSelectedControl = m_clControlList . GetHead ();
|
|
|
|
//update
|
|
m_fn_vResize ();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
|
|
//***************************************************************************
|
|
void CTL_DialogArrayDataEdition::OnOK()
|
|
{
|
|
// We are fine ;-)
|
|
// cleanup
|
|
m_fn_vCleanup ();
|
|
|
|
CDialog::OnOK ();
|
|
}
|
|
|
|
//***************************************************************************
|
|
void CTL_DialogArrayDataEdition::OnCancel()
|
|
{
|
|
//cleanup
|
|
m_fn_vCleanup ();
|
|
|
|
// restore
|
|
CTL_Editor_Data *pclParentData= m_pclParentControl -> m_fn_pclGetEditedData ();
|
|
tdstArray *pstArray = (tdstArray *) pclParentData -> m_pub_fn_pvGetMotorData ();
|
|
M_ARRAY_COPY (pstArray, & m_stSavedArray);
|
|
|
|
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
//***************************************************************************
|
|
#define SPACING 8
|
|
void CTL_DialogArrayDataEdition::m_fn_vResize()
|
|
{
|
|
// Move Buttons
|
|
CRect rect;
|
|
GetClientRect (& rect);
|
|
|
|
CRect rectNew = rect;
|
|
CRect rectSize;
|
|
CWnd *pButton = GetDlgItem (IDOK);
|
|
if (! pButton)
|
|
return;
|
|
pButton -> GetClientRect (& rectSize);
|
|
rectNew . left = rectNew . right - rectSize . right;
|
|
rectNew . bottom = rectNew . top + rectSize . bottom;
|
|
pButton -> MoveWindow (rectNew);
|
|
|
|
rectNew . top = rectNew . bottom + C_SPACE_BETWEEN_CONTROLS;
|
|
rectNew . bottom = rectNew . top + rectSize . bottom;
|
|
pButton = GetDlgItem (IDCANCEL);
|
|
pButton -> MoveWindow (rectNew);
|
|
|
|
rectNew . top = rectNew . bottom + 2 * C_SPACE_BETWEEN_CONTROLS;
|
|
rectNew . bottom = rectNew . top + rectSize . bottom;
|
|
pButton = GetDlgItem (IDC_BUTTON_INSERT);
|
|
pButton -> MoveWindow (rectNew);
|
|
|
|
rectNew . top = rectNew . bottom + C_SPACE_BETWEEN_CONTROLS;
|
|
rectNew . bottom = rectNew . top + rectSize . bottom;
|
|
pButton = GetDlgItem (IDC_BUTTON_DELETE);
|
|
pButton -> MoveWindow (rectNew);
|
|
|
|
rectNew . top = rectNew . bottom + C_SPACE_BETWEEN_CONTROLS;
|
|
rectNew . bottom = rectNew . top + rectSize . bottom;
|
|
pButton = GetDlgItem (IDC_BUTTON_UP);
|
|
pButton -> MoveWindow (rectNew);
|
|
|
|
rectNew . top = rectNew . bottom + C_SPACE_BETWEEN_CONTROLS;
|
|
rectNew . bottom = rectNew . top + rectSize . bottom;
|
|
pButton = GetDlgItem (IDC_BUTTON_DOWN);
|
|
pButton -> MoveWindow (rectNew);
|
|
|
|
// Resize frame
|
|
rectNew = rect;
|
|
rectNew . right = rectNew . right - rectSize . right - C_SPACE_BETWEEN_CONTROLS;
|
|
m_pclFrameControl -> MoveWindow (rectNew);
|
|
|
|
// Resize view
|
|
m_fn_vUpdateView ();
|
|
}
|
|
|
|
//***************************************************************************
|
|
void CTL_DialogArrayDataEdition::m_fn_vUpdateView (void)
|
|
{
|
|
/*
|
|
CPoint cpTopLeft = rect . TopLeft ();
|
|
CPoint cpTopRight;
|
|
cpTopRight . x = rect . right;
|
|
cpTopRight . y = cpTopLeft . y;
|
|
*/
|
|
CPoint cpOffset=m_pclView->GetScrollPosition();
|
|
CPoint cpTopLeft(0,-cpOffset.y);
|
|
CRect rect ;
|
|
m_pclFrameControl -> GetClientRect (& rect);
|
|
CPoint cpTopRight(rect.Width() + 20,-cpOffset.y);
|
|
|
|
m_clControlList. m_pub_fn_vDisplayControlsInZone(cpTopLeft, cpTopRight);
|
|
m_clControlList. m_pub_fn_vUpdateControlsWithListOfData(& m_clDataList);
|
|
|
|
m_pclView -> m_fn_vSetViewHeight ((unsigned short) (cpTopLeft . y + m_pclView -> GetScrollPosition () . y));
|
|
|
|
m_fn_vUpdateColors ();
|
|
}
|
|
|
|
|
|
void CTL_DialogArrayDataEdition::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
CDialog::OnSize(nType, cx, cy);
|
|
|
|
m_fn_vResize ();
|
|
}
|
|
|
|
void CTL_DialogArrayDataEdition::OnButtonInsert()
|
|
{
|
|
// the array
|
|
CTL_Editor_Data *pclParentData= m_pclParentControl -> m_fn_pclGetEditedData ();
|
|
tdstArray *pstArray = (tdstArray *) pclParentData -> m_pub_fn_pvGetMotorData ();
|
|
|
|
if (pstArray -> ucMaxSize == 255)
|
|
{
|
|
AfxMessageBox ("Maximum 255 elements");
|
|
return;
|
|
}
|
|
|
|
if (pstArray -> ucMaxSize == 0)
|
|
{
|
|
AfxMessageBox ("Minimum 1 element");
|
|
return;
|
|
}
|
|
|
|
POSITION pos = m_clControlList . GetHeadPosition ();
|
|
POSITION posCtrl = pos;
|
|
POSITION posData = m_clDataList . GetHeadPosition ();
|
|
int i = 0;
|
|
int lSelectedControlIndex = -1;
|
|
while (pos)
|
|
{
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetNext (pos);
|
|
|
|
if (pclCtrl == m_pclSelectedControl)
|
|
{
|
|
lSelectedControlIndex = i;
|
|
break;
|
|
}
|
|
posCtrl = pos;
|
|
m_clDataList . GetNext (posData);
|
|
i ++;
|
|
}
|
|
|
|
if (lSelectedControlIndex < 0)
|
|
return;
|
|
|
|
// move elements
|
|
pos = m_clDataList . GetTailPosition ();
|
|
for (i = pstArray -> ucMaxSize - 1; i > lSelectedControlIndex; i --)
|
|
{
|
|
CTL_Editor_Data *pclData = m_clDataList . GetPrev (pos);
|
|
pclData -> m_fn_vSetMotorDataPtr (M_ARRAY_ELEMENT (pstArray, i));
|
|
|
|
* M_ARRAY_ELEMENT (pstArray, i) = * M_ARRAY_ELEMENT (pstArray, i - 1);
|
|
}
|
|
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-12-
|
|
// Do not increase size, last element will be lost
|
|
//pstArray -> ucMaxSize ++;
|
|
// clear
|
|
memset (M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex), 0, C_SizeOfArrayElement);
|
|
|
|
// create control
|
|
m_fn_vCreateElementControl (pstArray, lSelectedControlIndex);
|
|
|
|
// move it into place
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . RemoveTail ();
|
|
m_clControlList . InsertBefore (posCtrl, pclCtrl);
|
|
m_pclSelectedControl = pclCtrl;
|
|
// remove last element
|
|
pclCtrl = m_clControlList . RemoveTail ();
|
|
delete pclCtrl;
|
|
|
|
|
|
CTL_Editor_Data *pclData = m_clDataList . RemoveTail ();
|
|
m_clDataList . InsertBefore (posData, pclData);
|
|
// remove last element
|
|
pclData = m_clDataList . RemoveTail ();
|
|
delete pclData;
|
|
// END ROMTEAM Cristi Petrescu 98-12-
|
|
|
|
m_fn_vUpdateView ();
|
|
}
|
|
|
|
void CTL_DialogArrayDataEdition::OnButtonDelete()
|
|
{
|
|
// the array
|
|
CTL_Editor_Data *pclParentData= m_pclParentControl -> m_fn_pclGetEditedData ();
|
|
tdstArray *pstArray = (tdstArray *) pclParentData -> m_pub_fn_pvGetMotorData ();
|
|
|
|
if (pstArray -> ucMaxSize == 1)
|
|
{
|
|
AfxMessageBox ("Minimim 1 element");
|
|
return;
|
|
}
|
|
|
|
POSITION pos = m_clControlList . GetHeadPosition ();
|
|
POSITION posCtrl = pos;
|
|
POSITION posData = m_clDataList . GetHeadPosition ();
|
|
int i = 0;
|
|
int lSelectedControlIndex = -1;
|
|
while (pos)
|
|
{
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetNext (pos);
|
|
|
|
if (pclCtrl == m_pclSelectedControl)
|
|
{
|
|
lSelectedControlIndex = i;
|
|
break;
|
|
}
|
|
posCtrl = pos;
|
|
m_clDataList . GetNext (posData);
|
|
i ++;
|
|
}
|
|
|
|
if (lSelectedControlIndex < 0)
|
|
return;
|
|
|
|
// BEGIN ROMTEAM Cristi Petrescu 98-12-
|
|
// Do not decrease size, last element will be cleared
|
|
//pstArray -> ucMaxSize --;
|
|
|
|
// move elements
|
|
pos = posData;
|
|
m_clDataList . GetNext (pos);
|
|
for (i = lSelectedControlIndex; i < pstArray -> ucMaxSize - 1; i ++)
|
|
{
|
|
CTL_Editor_Data *pclData = m_clDataList . GetNext (pos);
|
|
pclData -> m_fn_vSetMotorDataPtr (M_ARRAY_ELEMENT (pstArray, i));
|
|
|
|
* M_ARRAY_ELEMENT (pstArray, i) = * M_ARRAY_ELEMENT (pstArray, i + 1);
|
|
}
|
|
|
|
// clear
|
|
memset (M_ARRAY_ELEMENT (pstArray, pstArray -> ucMaxSize - 1), 0, C_SizeOfArrayElement);
|
|
|
|
// delete controls
|
|
pos = posCtrl;
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetNext (posCtrl);
|
|
if (! posCtrl)
|
|
{
|
|
posCtrl = pos;
|
|
m_clControlList . GetPrev (posCtrl);
|
|
}
|
|
m_pclSelectedControl = m_clControlList . GetAt (posCtrl);
|
|
m_clControlList . RemoveAt (pos);
|
|
//delete pclCtrl;
|
|
// add at last position
|
|
m_clControlList . AddTail (pclCtrl);
|
|
|
|
CTL_Editor_Data *pclData = m_clDataList . GetAt (posData);
|
|
m_clDataList . RemoveAt (posData);
|
|
//delete pclData;
|
|
// add at last position
|
|
m_clDataList . AddTail (pclData);
|
|
// the engine pointer
|
|
pclData -> m_fn_vSetMotorDataPtr (M_ARRAY_ELEMENT (pstArray, pstArray -> ucMaxSize - 1));
|
|
// END ROMTEAM Cristi Petrescu 98-12-
|
|
|
|
m_fn_vUpdateView ();
|
|
}
|
|
|
|
void CTL_DialogArrayDataEdition::OnButtonUp()
|
|
{
|
|
// the array
|
|
CTL_Editor_Data *pclParentData= m_pclParentControl -> m_fn_pclGetEditedData ();
|
|
tdstArray *pstArray = (tdstArray *) pclParentData -> m_pub_fn_pvGetMotorData ();
|
|
|
|
POSITION pos = m_clControlList . GetHeadPosition ();
|
|
POSITION posCtrl = pos;
|
|
POSITION posData = m_clDataList . GetHeadPosition ();
|
|
int i = 0;
|
|
int lSelectedControlIndex = -1;
|
|
while (pos)
|
|
{
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetNext (pos);
|
|
|
|
if (pclCtrl == m_pclSelectedControl)
|
|
{
|
|
lSelectedControlIndex = i;
|
|
break;
|
|
}
|
|
posCtrl = pos;
|
|
m_clDataList . GetNext (posData);
|
|
i ++;
|
|
}
|
|
|
|
if (lSelectedControlIndex < 0)
|
|
return;
|
|
|
|
if (lSelectedControlIndex == 0)
|
|
return;
|
|
|
|
// switch engine
|
|
tduGetSetParam stTemp = * M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex);
|
|
* M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex) = * M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex - 1);
|
|
* M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex - 1) = stTemp;
|
|
|
|
// switch ctrl
|
|
pos = posCtrl;
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetAt (posCtrl);
|
|
m_clControlList . GetPrev (posCtrl);
|
|
m_clControlList . InsertBefore (posCtrl, pclCtrl);
|
|
m_clControlList . RemoveAt (pos);
|
|
|
|
// switch data
|
|
pos = posData;
|
|
CTL_Editor_Data *pclData = m_clDataList . GetAt (posData);
|
|
m_clDataList . GetPrev (posData);
|
|
posData = m_clDataList . InsertBefore (posData, pclData);
|
|
m_clDataList . RemoveAt (pos);
|
|
|
|
// set engine pointers
|
|
pclData = m_clDataList . GetNext (posData);
|
|
pclData -> m_fn_vSetMotorDataPtr (M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex - 1));
|
|
pclData = m_clDataList . GetNext (posData);
|
|
pclData -> m_fn_vSetMotorDataPtr (M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex ));
|
|
|
|
m_fn_vUpdateView ();
|
|
}
|
|
|
|
void CTL_DialogArrayDataEdition::OnButtonDown()
|
|
{
|
|
// the array
|
|
CTL_Editor_Data *pclParentData= m_pclParentControl -> m_fn_pclGetEditedData ();
|
|
tdstArray *pstArray = (tdstArray *) pclParentData -> m_pub_fn_pvGetMotorData ();
|
|
|
|
POSITION pos = m_clControlList . GetHeadPosition ();
|
|
POSITION posCtrl = pos;
|
|
POSITION posData = m_clDataList . GetHeadPosition ();
|
|
int i = 0;
|
|
int lSelectedControlIndex = -1;
|
|
while (pos)
|
|
{
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetNext (pos);
|
|
|
|
if (pclCtrl == m_pclSelectedControl)
|
|
{
|
|
lSelectedControlIndex = i;
|
|
break;
|
|
}
|
|
posCtrl = pos;
|
|
m_clDataList . GetNext (posData);
|
|
i ++;
|
|
}
|
|
|
|
if (lSelectedControlIndex < 0)
|
|
return;
|
|
|
|
if (lSelectedControlIndex == pstArray -> ucMaxSize - 1)
|
|
return;
|
|
|
|
// switch engine
|
|
tduGetSetParam stTemp = * M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex);
|
|
* M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex) = * M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex + 1);
|
|
* M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex + 1) = stTemp;
|
|
|
|
// switch ctrl
|
|
pos = posCtrl;
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetAt (posCtrl);
|
|
m_clControlList . GetNext (posCtrl);
|
|
m_clControlList . InsertAfter (posCtrl, pclCtrl);
|
|
m_clControlList . RemoveAt (pos);
|
|
|
|
// switch data
|
|
pos = posData;
|
|
CTL_Editor_Data *pclData = m_clDataList . GetAt (posData);
|
|
m_clDataList . GetNext (posData);
|
|
posData = m_clDataList . InsertAfter (posData, pclData);
|
|
m_clDataList . RemoveAt (pos);
|
|
|
|
// set engine pointers
|
|
pclData = m_clDataList . GetPrev (posData);
|
|
pclData -> m_fn_vSetMotorDataPtr (M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex + 1));
|
|
pclData = m_clDataList . GetPrev (posData);
|
|
pclData -> m_fn_vSetMotorDataPtr (M_ARRAY_ELEMENT (pstArray, lSelectedControlIndex ));
|
|
|
|
m_fn_vUpdateView ();
|
|
}
|
|
|
|
void fn_vNameClicked (CTL_Editor_Static *pclSender, enum CTL_eClickType tdeClickType)
|
|
{
|
|
CTL_Editor_Control *pclElement = pclSender -> m_pub_fn_pclGetParentControl ();
|
|
|
|
CTL_DialogArrayDataEdition *pclDlg = (CTL_DialogArrayDataEdition *) (pclElement -> m_pub_fn_pclGetOwnerDataWithName (C_ARRAY_DIALOG) -> m_pub_fn_pvGetDataPtr ());
|
|
|
|
pclDlg -> m_fn_vSetSelectedControl (pclElement);
|
|
pclDlg -> m_fn_vUpdateColors ();
|
|
//pclDlg -> RedrawWindow ();
|
|
}
|
|
|
|
void CTL_DialogArrayDataEdition::m_fn_vCreateElementControl (tdstArray *pstArray, int i)
|
|
{
|
|
CTL_Editor_Control *pclCtrl = m_pclParentControl -> m_fn_pctrlCreateElementControl (& m_clControlList);
|
|
|
|
m_clControlList . AddTail (pclCtrl);
|
|
pclCtrl -> m_fn_bCreateControl (m_pclView);
|
|
|
|
CTL_Editor_Data *pclData = m_pclParentControl -> m_fn_pdataCreateElementData (& m_clDataList, pclCtrl);
|
|
|
|
void *pvElem = M_ARRAY_ELEMENT (pstArray, i);
|
|
tduGetSetParam *pvTElem = (tduGetSetParam *)pvElem;
|
|
pclData -> m_fn_vSetMotorDataPtr (pvElem);
|
|
m_clDataList . AddTail (pclData);
|
|
pclCtrl->m_fn_vSetEditedData(pclData);
|
|
pclData->m_fn_vGetMotorData();
|
|
|
|
pclCtrl -> m_pub_fn_pclGetNameStatic () -> m_pub_fn_vSetStaticHasBeenClicked_CallBack (fn_vNameClicked);
|
|
pclCtrl -> m_pub_fn_pclAddOwnerData (this, C_ARRAY_DIALOG);
|
|
|
|
pclCtrl->m_fn_vUpdate ();
|
|
}
|
|
|
|
void CTL_DialogArrayDataEdition::m_fn_vUpdateColors (void)
|
|
{
|
|
POSITION pos = m_clControlList . GetHeadPosition ();
|
|
int i = 0;
|
|
|
|
while (pos)
|
|
{
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetNext (pos);
|
|
static char szName[100];
|
|
itoa (i, szName,10);
|
|
|
|
if (pclCtrl == m_pclSelectedControl)
|
|
pclCtrl -> m_pub_fn_pclGetNameStatic () -> m_pub_fn_vSetBackGroundColor (C_COLOR_SEL);
|
|
else
|
|
pclCtrl -> m_pub_fn_pclGetNameStatic () -> m_pub_fn_vSetBackGroundColor (C_COLOR_UNSEL);
|
|
|
|
pclCtrl -> m_pub_fn_pclGetNameStatic () -> m_fn_vSetTextToDisplay (szName, TRUE);
|
|
|
|
i ++;
|
|
}
|
|
}
|
|
|
|
int CTL_DialogArrayDataEdition::m_fn_lGetIndexOfControl (CTL_Editor_Control *pclSeekCtrl)
|
|
{
|
|
POSITION pos = m_clControlList . GetHeadPosition ();
|
|
int i = 0;
|
|
|
|
while (pos)
|
|
{
|
|
CTL_Editor_Control *pclCtrl = m_clControlList . GetNext (pos);
|
|
|
|
if (pclCtrl == pclSeekCtrl)
|
|
return i;
|
|
i ++;
|
|
}
|
|
|
|
return -1;
|
|
}
|