444 lines
12 KiB
C++
444 lines
12 KiB
C++
/*=========================================================================
|
|
*
|
|
* SECdEnvs.cpp : Environments List Dialog - Implementation file
|
|
*
|
|
*
|
|
* Version 1.0
|
|
* Creation date
|
|
* Revision date
|
|
*
|
|
* Shaitan
|
|
*=======================================================================*/
|
|
|
|
/*
|
|
#include "stdafx.h"
|
|
#include "acp_base.h"
|
|
#include "SECTint.hpp"
|
|
|
|
#include "SECdEnvs.hpp"
|
|
|
|
#include "SECmodif.hpp"
|
|
#include "SECdEnv.hpp"
|
|
#include "SEClEnvs.hpp"
|
|
|
|
#include "..\Main\Inc\_EditID.h"
|
|
#include "TUT.h"
|
|
|
|
SECT_Environment *g_pClickedEnv;
|
|
*/
|
|
|
|
//#################################################################################
|
|
// SECT_DialogEnvElem dialog
|
|
//#################################################################################
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
SECT_DialogEnvs::SECT_DialogEnvs(CWnd* pParent)
|
|
: CFormView(SECT_DialogEnvs::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(SECT_DialogEnvs)
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
*/
|
|
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
void SECT_DialogEnvs::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CFormView::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(SECT_DialogEnvs)
|
|
// env elem
|
|
DDX_Control(pDX, SECT_IDC_ENVLISTBOX, m_cEnvListBox);
|
|
DDX_Control(pDX, SECT_IDC_NEWENV, m_cNewEnv);
|
|
DDX_Control(pDX, SECT_IDC_REPLACE, m_cReplace);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
BEGIN_MESSAGE_MAP(SECT_DialogEnvs, CFormView)
|
|
//{{AFX_MSG_MAP(SECT_DialogEnvs)
|
|
ON_WM_SIZE()
|
|
ON_WM_DESTROY()
|
|
// env elem
|
|
ON_NOTIFY(LVN_ITEMCHANGED, SECT_IDC_ENVLISTBOX, OnSelChangeEnvListBox)
|
|
ON_NOTIFY(NM_DBLCLK, SECT_IDC_ENVLISTBOX, OnDblClkEnvListBox)
|
|
ON_BN_CLICKED(SECT_IDC_NEWENV, OnNewEnv)
|
|
ON_BN_CLICKED(SECT_IDC_REPLACE, OnReplace)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
*/
|
|
|
|
|
|
//#################################################################################
|
|
// SECT_DialogEdit Inits
|
|
//#################################################################################
|
|
|
|
/*===========================================================================
|
|
* Description: Init dialog
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
/*
|
|
void SECT_DialogEnvs::fn_vInitDialog (Sector_Interface *p_oDLL, CWnd *pParent)
|
|
{
|
|
// create the dialog
|
|
m_bInitialised = FALSE;
|
|
m_pSectorInterface = p_oDLL;
|
|
CFormView::Create(NULL, "", AFX_WS_DEFAULT_VIEW, CRect(0,0,120,180), pParent, AFX_IDW_PANE_FIRST, NULL);
|
|
|
|
// init data for dialog
|
|
CFormView::UpdateData(FALSE);
|
|
|
|
// FOR TUTORIAL
|
|
TUT_M_vGetTutDll();
|
|
|
|
TUT_M_vRegisterControl(m_cEnvListBox.m_hWnd, "OSC_DLISTENV_LIST_ENVS", TUT_e_ListBox);
|
|
TUT_M_vRegisterControl(m_cNewEnv.m_hWnd, "OSC_DLISTENV_BUTTON_NEW", TUT_e_Button);
|
|
TUT_M_vRegisterControl(m_cReplace.m_hWnd, "OSC_DLISTENV_BUTTON_REP", TUT_e_Button);
|
|
// END TUTORIAL
|
|
|
|
// init all controls
|
|
fn_vInitEnvElem(-1);
|
|
m_bInitialised = TRUE;
|
|
// init listbox
|
|
m_cEnvListBox.fn_vInitParameters(this, m_pSectorInterface, E_te_Environment);
|
|
}
|
|
*/
|
|
|
|
/*===========================================================================
|
|
* Description: Reinit dialog
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
/*
|
|
void SECT_DialogEnvs::fn_vReinitDialog (void)
|
|
{
|
|
fn_vInitEnvListBox();
|
|
}
|
|
*/
|
|
|
|
/*===========================================================================
|
|
* Description: Init controls state
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
/*
|
|
void SECT_DialogEnvs::fn_vInitControls (BOOL bEnable)
|
|
{
|
|
m_cEnvListBox.EnableWindow(bEnable);
|
|
m_cNewEnv.EnableWindow(bEnable);
|
|
}
|
|
*/
|
|
|
|
/*===========================================================================
|
|
* Description: Reinit environment list
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
/*
|
|
void SECT_DialogEnvs::fn_vInitEnvElem (long lEnvElem)
|
|
{
|
|
Sector_Object *pSector;
|
|
|
|
// find corresponding element
|
|
if (lEnvElem != -1)
|
|
pSector = (Sector_Object *) m_pSectorInterface->GetEditedSector()->GetObject();
|
|
else
|
|
pSector = NULL;
|
|
|
|
// update edited element
|
|
m_lEnvElem = lEnvElem;
|
|
m_pEnvElem = (pSector) ? pSector->GetEnvironment(m_lEnvElem) : NULL;
|
|
|
|
// update infos
|
|
fn_vSelectEnv((m_pEnvElem) ? m_pEnvElem->GetEnvironment() : NULL);
|
|
m_cEnvListBox.fn_vReinitListObjects();
|
|
}
|
|
*/
|
|
/*===========================================================================
|
|
* Description: Init listbox with all available environments
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
/*
|
|
void SECT_DialogEnvs::fn_vInitEnvListBox (void)
|
|
{
|
|
// set list style
|
|
m_cEnvListBox.SetOrder(E_lo_Alpha, FALSE, FALSE);
|
|
|
|
// reinit list
|
|
m_cEnvListBox.SetSortedList(m_pSectorInterface->GetBaseObjectList(C_szEnvironmentTypeName));
|
|
// current selection => none
|
|
m_cEnvListBox.SetSelectedItem(-1);
|
|
}
|
|
*/
|
|
|
|
|
|
/*===========================================================================
|
|
* Description: update dialog when selection changes
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
/*
|
|
void SECT_DialogEnvs::fn_vSelectEnv (SECT_Environment *pEnvironment, BOOL bUpdateEnvElem)
|
|
{
|
|
SECT_Environment *pOldSelect, *pOldCurrent = NULL;
|
|
SECT_ModifEnvElem *pModif;
|
|
int iInd;
|
|
|
|
// update current environment
|
|
pOldSelect = m_pEnvironment;
|
|
m_pEnvironment = pEnvironment;
|
|
|
|
// update corresponding env elem
|
|
if ((bUpdateEnvElem)&&(m_pEnvElem))
|
|
{
|
|
pOldCurrent = m_pEnvElem->GetEnvironment();
|
|
if ((m_pEnvironment)&&(m_pEnvironment != pOldCurrent))
|
|
{
|
|
pModif = new SECT_ModifEnvElem(m_pSectorInterface, E_mt_ChangeEnv,
|
|
m_pEnvElem, m_pEnvironment, m_lEnvElem);
|
|
m_pSectorInterface->M_GetEditManager()->AskFor(pModif);
|
|
}
|
|
}
|
|
|
|
// redraw previous element
|
|
if (pOldSelect != m_pEnvironment)
|
|
{
|
|
iInd = m_cEnvListBox.GetCorrespondingIndex((DWORD) pOldSelect);
|
|
m_cEnvListBox.RedrawItems(iInd, iInd);
|
|
}
|
|
|
|
// redraw previous element
|
|
if ((pOldCurrent)&&(pOldCurrent != pOldSelect))
|
|
{
|
|
iInd = m_cEnvListBox.GetCorrespondingIndex((DWORD) pOldCurrent);
|
|
m_cEnvListBox.RedrawItems(iInd, iInd);
|
|
}
|
|
|
|
// update selection
|
|
iInd = m_cEnvListBox.GetCorrespondingIndex((DWORD) m_pEnvironment);
|
|
m_cEnvListBox.RedrawItems(iInd, iInd);
|
|
m_cEnvListBox.EnsureVisible(iInd, TRUE);
|
|
m_cEnvListBox.UpdateWindow();
|
|
|
|
// update env list
|
|
if ((bUpdateEnvElem)&&(m_pEnvElem))
|
|
m_pSectorInterface->GetDialogEnvList()->fn_vUpdateEnvElem();
|
|
|
|
// update env dialog
|
|
if (m_pSectorInterface->GetDialogEnv())
|
|
m_pSectorInterface->GetDialogEnv()->fn_vInitEnvironment(m_pEnvironment, FALSE);
|
|
}
|
|
*/
|
|
|
|
//#################################################################################
|
|
// SECT_DialogEdit Messages
|
|
//#################################################################################
|
|
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
void SECT_DialogEnvs::OnSize (UINT nFlags, int cx, int cy)
|
|
{
|
|
RECT WindowPosition;
|
|
int ecx, ecy;
|
|
|
|
if (!m_bInitialised)
|
|
return;
|
|
|
|
// calculate name position
|
|
GetWindowRect(&WindowPosition);
|
|
ecx = WindowPosition.right - WindowPosition.left;
|
|
ecx = (ecx < 70) ? 70 : ecx;
|
|
ecy = WindowPosition.bottom - WindowPosition.top - 10;
|
|
ecy = (ecy < 100) ? 100 : ecy;
|
|
|
|
// mechanic
|
|
GetDlgItem(SECT_IDC_TEXTENVELEM)->MoveWindow(5, 5, ecx-10, ecy);
|
|
m_cEnvListBox.MoveWindow(10, 25, ecx-20, ecy-50);
|
|
m_cNewEnv.MoveWindow(5, ecy-20, 30, 18);
|
|
m_cReplace.MoveWindow(ecx-38, ecy-20, 30, 18);
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
void SECT_DialogEnvs::OnDestroy (void)
|
|
{
|
|
// FOR TUTORIAL
|
|
TUT_M_vGetTutDll();
|
|
// environment
|
|
TUT_M_vUnregisterControl(m_cEnvListBox.m_hWnd);
|
|
TUT_M_vUnregisterControl(m_cNewEnv.m_hWnd);
|
|
TUT_M_vUnregisterControl(m_cReplace.m_hWnd);
|
|
|
|
// END TUTORIAL
|
|
|
|
CFormView::OnDestroy();
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
void SECT_DialogEnvs::OnSelChangeEnvListBox (NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
SECT_Environment *pEnv = NULL;
|
|
LPNM_LISTVIEW pNMListView = (LPNM_LISTVIEW)pNMHDR;
|
|
BOOL bOldSelect, bNewSelect;
|
|
int iIndex;
|
|
|
|
// update param
|
|
*pResult = 0;
|
|
|
|
if ((pNMListView->uChanged != LVIF_STATE)||(m_cEnvListBox.fn_bIsSelecting()))
|
|
return;
|
|
|
|
bOldSelect = (pNMListView->uOldState & LVIS_SELECTED);
|
|
bNewSelect = (pNMListView->uNewState & LVIS_SELECTED);
|
|
|
|
// get corresponding sector
|
|
iIndex = pNMListView->iItem;
|
|
pEnv = (SECT_Environment *) m_cEnvListBox.GetItemData(iIndex);
|
|
g_pClickedEnv = pEnv;
|
|
|
|
m_cEnvListBox.SetSelectedItem(-1);
|
|
|
|
if (bOldSelect != bNewSelect)
|
|
{
|
|
// select corresponding environment
|
|
if ((!pEnv)||(!pEnv->fn_bIsAvailable()))
|
|
fn_vSelectEnv((m_pEnvElem) ? m_pEnvElem->GetEnvironment() : NULL, FALSE);
|
|
else
|
|
fn_vSelectEnv((pEnv != m_pEnvironment) ? pEnv : NULL, FALSE);
|
|
}
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
void SECT_DialogEnvs::OnDblClkEnvListBox (NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
SECT_Environment *pEnv = NULL;
|
|
|
|
// update param
|
|
*pResult = 0;
|
|
|
|
// get corresponding sector
|
|
pEnv = g_pClickedEnv;
|
|
g_pClickedEnv = NULL;
|
|
|
|
|
|
// select corresponding environment
|
|
if ((!pEnv)||(!pEnv->fn_bIsAvailable()))
|
|
fn_vSelectEnv((m_pEnvElem) ? m_pEnvElem->GetEnvironment() : NULL);
|
|
else
|
|
fn_vSelectEnv(pEnv);
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
void SECT_DialogEnvs::OnNewEnv (void)
|
|
{
|
|
// update env dialog
|
|
fn_vSelectEnv(NULL);
|
|
m_pSectorInterface->GetDialogEnv()->fn_vInitEnvironment(NULL, TRUE);
|
|
// disable dialog
|
|
fn_vInitControls(FALSE);
|
|
m_pSectorInterface->GetDialogEnvList()->fn_vInitControls(FALSE);
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
void SECT_DialogEnvs::OnReplace (void)
|
|
{
|
|
m_oDialogReplace.fn_vInitSectorInterface(m_pSectorInterface);
|
|
m_oDialogReplace.DoModal();
|
|
}
|
|
*/
|
|
|
|
//#################################################################################
|
|
// SECT_EnvElemListBox
|
|
//#################################################################################
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
SECT_EnvElemListBox::SECT_EnvElemListBox (void)
|
|
{
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
SECT_EnvElemListBox::~SECT_EnvElemListBox (void)
|
|
{
|
|
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
BOOL SECT_EnvElemListBox::fn_bIsCurrentElement (CPA_BaseObject *pElem)
|
|
{
|
|
SECT_EnvElem *pEnvElem;
|
|
|
|
// no dialog => no current element
|
|
if (!m_pDialog)
|
|
return FALSE;
|
|
|
|
// init parameters
|
|
pEnvElem = ((SECT_DialogEnvs *) m_pDialog)->GetCurrentEnvElem();
|
|
return ((pEnvElem)&&(pElem == pEnvElem->GetEnvironment()));
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
BOOL SECT_EnvElemListBox::fn_bIsSelectedElement (CPA_BaseObject *pElem)
|
|
{
|
|
// no dialog => no selected element
|
|
if (!m_pDialog)
|
|
return FALSE;
|
|
|
|
return (pElem == ((SECT_DialogEnvs *) m_pDialog)->GetSelectedEnvironment());
|
|
}
|
|
*/
|
|
|
|
/*----------------------------------------
|
|
----------------------------------------*/
|
|
/*
|
|
BOOL SECT_EnvElemListBox::fn_bIsAlreadyUsed (CPA_BaseObject *pElem)
|
|
{
|
|
return FALSE;
|
|
}
|
|
*/
|