287 lines
9.1 KiB
C++
287 lines
9.1 KiB
C++
/*=========================================================================
|
|
*
|
|
* EDTlType.cpp : Editor Lists - Implementation file
|
|
*
|
|
*
|
|
* Version 1.0
|
|
* Creation date
|
|
* Revision date
|
|
*
|
|
* Shaitan
|
|
*=======================================================================*/
|
|
|
|
#include "stdafx.h"
|
|
|
|
#ifdef ACTIVE_EDITOR
|
|
|
|
#include "acp_base.h"
|
|
#include "itf/CPAModel.hpp"
|
|
#include "itf/CPAProj.hpp"
|
|
#include "itf/CPAdIns.hpp"
|
|
#include "itf/CPAInter.hpp"
|
|
|
|
#include <direct.h>
|
|
|
|
|
|
|
|
//#################################################################################
|
|
// CLASS EDT_Model
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
* Description: constructor
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
EDT_Model::EDT_Model (CPA_ObjectDLLBase *p_oDLL, CString csTypeName, CString csName, CString csBitmapName, CPA_Interface *pInterface)
|
|
{
|
|
CString csBitmapLoad;
|
|
|
|
// set DLL
|
|
m_pObjectDLL = p_oDLL;
|
|
// set type
|
|
m_csTypeName = csTypeName;
|
|
// set descriptor
|
|
m_csName = csName;
|
|
// set bitmap name
|
|
m_csBitmapName = csBitmapName;
|
|
|
|
// get complete file name
|
|
csBitmapLoad = M_GetMainApp()->m_csEditorDataPath + "\\" + m_csBitmapName;
|
|
// create bitmap and store it into the list
|
|
m_iBitmapPos = pInterface->GetBitmapList()->m_fn_iAdd(csBitmapLoad);
|
|
if (m_iBitmapPos == -1)
|
|
{
|
|
csBitmapLoad = M_GetMainApp()->m_csEditorDataPath + "\\Hierarchy\\Default.bmp";
|
|
m_iBitmapPos = pInterface->GetBitmapList()->m_fn_iAdd(csBitmapLoad);
|
|
}
|
|
}
|
|
|
|
EDT_Model::~EDT_Model (void)
|
|
{
|
|
}
|
|
|
|
|
|
/*----------------------------------------
|
|
Bitmap
|
|
----------------------------------------*/
|
|
BOOL EDT_Model::fn_bChangeBitmap (CPA_Interface *pInterface, CString csNewBitmapName)
|
|
{
|
|
CString csBitmapLoad;
|
|
int iBitmapPos;
|
|
|
|
// get complete file name
|
|
csBitmapLoad = M_GetMainApp()->m_csEditorDataPath + "\\" + csNewBitmapName;
|
|
// create bitmap and store it into the list
|
|
iBitmapPos = pInterface->GetBitmapList()->m_fn_iAdd(csBitmapLoad);
|
|
if (iBitmapPos != -1)
|
|
{
|
|
m_csBitmapName = csNewBitmapName;
|
|
m_iBitmapPos = iBitmapPos;
|
|
return TRUE;
|
|
}
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
//#################################################################################
|
|
// EDT_ModelView
|
|
//#################################################################################
|
|
|
|
/*----------------------------------------
|
|
CONSTRUCTEUR
|
|
----------------------------------------*/
|
|
EDT_ModelView::EDT_ModelView ()
|
|
: C3ListView()
|
|
{
|
|
// update parameters
|
|
m_fn_vSetBox(C_cDisplayBitmapAndText, 80, 52);
|
|
m_fn_vSetBox(C_cDisplayBitmap, 34, 34);
|
|
m_fn_vSetBox(C_cDisplayText, 80, 18);
|
|
// set DD parameters
|
|
m_fn_vSetDDTypeAndEditor( C_ucModel, "Evt_Editor");
|
|
}
|
|
|
|
EDT_ModelView::~EDT_ModelView()
|
|
{
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : called when selected item change to the given case
|
|
*---------------------------------------------------------------------------*/
|
|
void EDT_ModelView::OnSelectItem (short wCase)
|
|
{
|
|
CPA_Interface *pInterface;
|
|
EDT_Model *pNewModel;
|
|
|
|
C3ListView::OnSelectItem(wCase);
|
|
|
|
pInterface = ((CPA_DialogInsert *) GetParent())->GetInterface();
|
|
|
|
// Get model corresponding to the choice
|
|
tdstTSLItem *p_stCurItem = m_fn_p_stGetItem(wCase, m_cCurrentOrder);
|
|
if (p_stCurItem)
|
|
pNewModel = (EDT_Model *) p_stCurItem->m_lContent;
|
|
else
|
|
pNewModel = NULL;
|
|
|
|
pInterface->SetCurrentModel(pNewModel);
|
|
}
|
|
|
|
|
|
//#################################################################################
|
|
// CLASS EDT_ModelsByType
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
* Description: constructor
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
EDT_ModelsByType::EDT_ModelsByType (CString csTypeName, CPA_ObjectDLLBase *p_oDLL, CWnd *pParentDialog, CBitmapList *pBitmapList)
|
|
{
|
|
// parameters
|
|
m_pDLLObject = p_oDLL;
|
|
m_csTypeName = csTypeName;
|
|
// init list models
|
|
fn_vInitModelView(pParentDialog, pBitmapList);
|
|
}
|
|
|
|
|
|
EDT_ModelsByType::~EDT_ModelsByType (void)
|
|
{
|
|
m_stListModels.RemoveAll();
|
|
}
|
|
|
|
|
|
/*===========================================================================
|
|
* Description: reinit
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void EDT_ModelsByType::fn_vReinit (void)
|
|
{
|
|
EDT_Model *pModel;
|
|
long lIndex;
|
|
|
|
// remove all models
|
|
while (m_stListModels.GetCount() > 0)
|
|
{
|
|
pModel = m_stListModels.RemoveTail();
|
|
// update model view
|
|
lIndex = m_pModelView->m_fn_lFindName(-1, pModel->m_csName);
|
|
m_pModelView->m_fn_bDeleteItem(lIndex);
|
|
}
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: create model view
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void EDT_ModelsByType::fn_vInitModelView (CWnd *pParentDialog, CBitmapList *pBitmapList)
|
|
{
|
|
// create model view
|
|
m_pModelView = new EDT_ModelView;
|
|
m_pModelView->Create(NULL, "", WS_BORDER|WS_VISIBLE|WS_CHILD/*AFX_WS_DEFAULT_VIEW*/, CRect(0,0,0,0), pParentDialog, AFX_IDW_PANE_FIRST, NULL);
|
|
// set display type in list of models
|
|
m_pModelView->m_fn_vSetBitmapList(pBitmapList);
|
|
m_pModelView->m_fn_vChangeDisplayType(C_cDisplayBitmapAndText);
|
|
// init items
|
|
fn_vFillModelView();
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: fill model view
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void EDT_ModelsByType::fn_vFillModelView (void)
|
|
{
|
|
EDT_Model *pElem;
|
|
POSITION pos;
|
|
|
|
for (pElem = m_stListModels.GetHeadElement(pos); pElem;
|
|
pElem = m_stListModels.GetNextElement(pos))
|
|
m_pModelView->m_fn_iAddItem(pElem->m_csName, pElem->m_iBitmapPos, (long) pElem);
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: Get the model with the given name
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
*
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
EDT_Model * EDT_ModelsByType::GetModelWithName (CString csName)
|
|
{
|
|
EDT_Model *pModel;
|
|
POSITION pos;
|
|
|
|
for (pModel = m_stListModels.GetHeadElement(pos); pModel;
|
|
pModel = m_stListModels.GetNextElement(pos))
|
|
{
|
|
if (pModel->m_csName == csName)
|
|
return pModel;
|
|
}
|
|
|
|
// model was not found
|
|
return NULL;
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: Add model to the list
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
*
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void EDT_ModelsByType::fn_vAddANewModel (EDT_Model *pNewModel)
|
|
{
|
|
// add model to the list
|
|
m_stListModels.AddTail(pNewModel);
|
|
// update model view
|
|
m_pModelView->m_fn_iAddItem(pNewModel->m_csName, pNewModel->m_iBitmapPos, (long) pNewModel);
|
|
}
|
|
|
|
/*===========================================================================
|
|
* Description: remove model from the list
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
*
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
void EDT_ModelsByType::fn_vRemoveAModel (EDT_Model *pOldModel)
|
|
{
|
|
POSITION pos;
|
|
long lIndex;
|
|
|
|
// Remove it from the list
|
|
pos = m_stListModels.Find(pOldModel);
|
|
if (pos)
|
|
m_stListModels.RemoveAt(pos);
|
|
// update model view
|
|
lIndex = m_pModelView->m_fn_lFindName(-1, pOldModel->m_csName);
|
|
m_pModelView->m_fn_bDeleteItem(lIndex);
|
|
}
|
|
|
|
#endif // ACTIVE_EDITOR
|