/*========================================================================= * * SEClEnvs.cpp : Environment List Sector Dialog - Implementation file * * * Version 1.0 * Creation date * Revision date * * Shaitan *=======================================================================*/ /* #include "stdafx.h" #include "acp_base.h" #include "SECTint.hpp" #include "SEClEnvs.hpp" #include "SECdEnvs.hpp" #include "SECdSrfs.hpp" #include "SECmodif.hpp" #include "SECdEnv.hpp" //#include "SECdList.hpp" #include "..\Main\Inc\_EditID.h" #include "TUT.h" */ //################################################################################# // SECT_DialogEdit dialog //################################################################################# /*---------------------------------------- ----------------------------------------*/ /* SECT_DialogEnvList::SECT_DialogEnvList(CWnd* pParent) : CFormView(SECT_DialogEnvList::IDD) { //{{AFX_DATA_INIT(SECT_DialogEnvList) //}}AFX_DATA_INIT } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(SECT_DialogEnvList) // env list DDX_Control(pDX, SECT_IDC_ENVLIST, m_cEnvList); DDX_Control(pDX, SECT_IDC_ADDENVELEM, m_cAddElem); DDX_Control(pDX, SECT_IDC_DELENVELEM, m_cDelElem); // apply controls DDX_Control(pDX, SECT_IDC_APPLYALL, m_cApplyAll); DDX_Control(pDX, SECT_IDC_APPLYSELECT, m_cApplySelect); DDX_Control(pDX, SECT_IDC_CANCELSELECT, m_cCancelSelect); //}}AFX_DATA_MAP } */ /*---------------------------------------- ----------------------------------------*/ /* BEGIN_MESSAGE_MAP(SECT_DialogEnvList, CFormView) //{{AFX_MSG_MAP(SECT_DialogEnvList) ON_WM_SIZE() ON_WM_DESTROY() ON_WM_DRAWITEM() // env list ON_LBN_SELCHANGE(SECT_IDC_ENVLIST, OnSelChangeEnvList) ON_BN_CLICKED(SECT_IDC_ADDENVELEM, OnAddElem) ON_BN_CLICKED(SECT_IDC_DELENVELEM, OnDelElem) // keydown ON_WM_VKEYTOITEM() // apply ON_BN_CLICKED(SECT_IDC_APPLYALL, OnApplyAll) ON_BN_CLICKED(SECT_IDC_APPLYSELECT, OnApplySelect) ON_BN_CLICKED(SECT_IDC_CANCELSELECT, OnCancelSelect) //}}AFX_MSG_MAP END_MESSAGE_MAP() */ //################################################################################# // SECT_DialogEdit Inits //################################################################################# /*=========================================================================== * Description: Init dialog * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogEnvList::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); // init all controls fn_vInitEnvList(NULL); // FOR TUTORIAL TUT_M_vGetTutDll(); // envlist TUT_M_vRegisterControl (m_cEnvList.m_hWnd, "OSC_DELEM_LIST_ENVELEMS", TUT_e_ListBox); TUT_M_vRegisterControl (m_cAddElem.m_hWnd, "OSC_DELEM_BUTTON_ADDELEM", TUT_e_Button); TUT_M_vRegisterControl (m_cDelElem.m_hWnd, "OSC_DELEM_BUTTON_DELELEM", TUT_e_Button); // apply TUT_M_vRegisterControl (m_cApplyAll.m_hWnd, "OSC_DELEM_BUTTON_APPLYALL", TUT_e_Button); TUT_M_vRegisterControl (m_cApplySelect.m_hWnd, "OSC_DELEM_BUTTON_APPLYSEL", TUT_e_Button); TUT_M_vRegisterControl (m_cCancelSelect.m_hWnd, "OSC_DELEM_BUTTON_CANCELSEL", TUT_e_Button); // END TUTORIAL m_bInitialised = TRUE; } */ /*=========================================================================== * Description: Init controls state * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogEnvList::fn_vInitControls (BOOL bEnable) { m_cEnvList.EnableWindow(bEnable); m_cAddElem.EnableWindow(bEnable); m_cDelElem.EnableWindow(bEnable && (m_lEnvElem != -1)); } */ /*=========================================================================== * Description: Init environment list * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogEnvList::fn_vInitEnvList (CPA_SuperObject *pEditedSector) { Sector_Object *pSector; SECT_EnvElem *pEnvElem; SECT_SurfElem *pSurfElem; SECT_Surface *pSurface; CString csName; long lNumEnv = 0; int iPos; // update edited sector m_pEditedSector = pEditedSector; // reinit env list m_cEnvList.ResetContent(); m_lEnvElem = -1; // update controls m_cEnvList.EnableWindow((m_pEditedSector != NULL)); m_cAddElem.EnableWindow((m_pEditedSector != NULL)); m_cDelElem.EnableWindow(FALSE); // update apply m_cApplyAll.EnableWindow((m_pEditedSector != NULL)); m_cApplySelect.EnableWindow((m_pEditedSector != NULL)); // no edited sector => no list if (!m_pEditedSector) return; // fill env list pSector = (Sector_Object *) m_pEditedSector->GetObject(); pEnvElem = pSector->GetEnvironment(lNumEnv); pSurfElem = pSector->GetSurface(lNumEnv); // fill list with all environments while (pEnvElem) { if (pSurfElem) { pSurface = pSurfElem->GetSurface(); csName = pSurface->GetName(); } else csName ="NoSurface"; iPos = m_cEnvList.AddString(csName); lNumEnv++; pEnvElem = pSector->GetEnvironment(lNumEnv); pSurfElem = pSector->GetSurface(lNumEnv); } // update controls fn_vInitEnvElem(-1); } */ /*=========================================================================== * Description: reinit environment list * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogEnvList::fn_vInitEnvElem (long lEnvElem) { // update edited element m_lEnvElem = lEnvElem; // update selection m_cEnvList.SetCurSel(m_lEnvElem); // update env list controls m_cDelElem.EnableWindow((m_lEnvElem != -1)); // update env elem controls m_pSectorInterface->GetDialogEnvs()->fn_vInitEnvElem(m_lEnvElem); m_pSectorInterface->GetDialogSrf()->fn_vInitEnvElem(m_lEnvElem); } */ /*=========================================================================== * Description: reinit environment list * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogEnvList::fn_vUpdateEnvElem (void) { // update selection m_cEnvList.SetCurSel(m_lEnvElem); } */ /*=========================================================================== * Description: draw item in envlist * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogEnvList::fn_vDrawEnvListItem (int nIDCtl, LPDRAWITEMSTRUCT lpDIS) { // draw item Sector_Object *pSector; SECT_SurfElem *pSurfElem; SECT_EnvElem *pEnvElem; COLORREF cColor; CString csText; BOOL bSelected; CDC *pDC; long lWidth, lLeft; // init parameters pDC = CDC::FromHandle(lpDIS->hDC); bSelected = (lpDIS->itemState & ODS_SELECTED); lWidth = lpDIS->rcItem.right - lpDIS->rcItem.left - 2; lLeft = lpDIS->rcItem.left; // fill drawing rect cColor = RGB (254, 254, 254); pDC->FillSolidRect(&lpDIS->rcItem, cColor); pSector = (Sector_Object *) m_pEditedSector->GetObject(); pEnvElem = pSector->GetEnvironment(lpDIS->itemID); pSurfElem = pSector->GetSurface(lpDIS->itemID); // draw env lpDIS->rcItem.left += 1; lpDIS->rcItem.right = lpDIS->rcItem.left + lWidth/2; cColor = (m_cEnvList.IsWindowEnabled()) ? RGB (128, 0, 0) : RGB (128, 128, 128); pDC->SetTextColor(cColor); csText = pEnvElem->GetEnvironment()->GetNameToDraw(); pDC->DrawText(csText, &lpDIS->rcItem, DT_SINGLELINE | DT_LEFT | DT_VCENTER); // draw surface if (pSurfElem) { lpDIS->rcItem.left = lpDIS->rcItem.right + 1; lpDIS->rcItem.right = lpDIS->rcItem.left + lWidth/2; cColor = (m_cEnvList.IsWindowEnabled()) ? RGB (100, 0, 0) : RGB (128, 128, 128); pDC->SetTextColor(cColor); csText = pSurfElem->GetSurface()->GetNameToDraw(); pDC->DrawText(csText, &lpDIS->rcItem, DT_SINGLELINE | DT_LEFT | DT_VCENTER); } // selection if (bSelected) { lpDIS->rcItem.left = lLeft; lpDIS->rcItem.right = lLeft + lWidth + 2; pDC->InvertRect(&lpDIS->rcItem); } } */ //################################################################################# // SECT_DialogEdit Messages //################################################################################# /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::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 - 20; ecy = WindowPosition.bottom - WindowPosition.top - 105; ecy = (ecy < 50) ? 50 : ecy; ecx = (ecx < 80) ? 80 : ecx; // move list m_cEnvList.MoveWindow(10, 5, ecx, ecy); // move list controls m_cAddElem.MoveWindow(ecx/2 - 40, ecy+10, 30, 16); m_cDelElem.MoveWindow(ecx/2 + 30, ecy+10, 30, 16); // move apply controls GetDlgItem(SECT_IDC_SEPARATOR)->MoveWindow(5, ecy+35, ecx+10, 5); m_cApplyAll.MoveWindow(10, ecy+45, ecx, 15); m_cApplySelect.MoveWindow(10, ecy+65, ecx, 15); m_cCancelSelect.MoveWindow(10, ecy+85, ecx, 15); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::OnDestroy (void) { // FOR TUTORIAL TUT_M_vGetTutDll(); TUT_M_vUnregisterControl (m_cEnvList.m_hWnd); TUT_M_vUnregisterControl (m_cAddElem.m_hWnd); TUT_M_vUnregisterControl (m_cDelElem.m_hWnd); // apply TUT_M_vUnregisterControl (m_cApplyAll.m_hWnd); TUT_M_vUnregisterControl (m_cApplySelect.m_hWnd); TUT_M_vUnregisterControl (m_cCancelSelect.m_hWnd); // END TUTORIAL CFormView::OnDestroy(); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::OnDrawItem (int nIDCtl, LPDRAWITEMSTRUCT lpDIS) { // invalid item => default handling if (lpDIS->itemID == LB_ERR) return; // env list => draw item if (nIDCtl == SECT_IDC_ENVLIST) fn_vDrawEnvListItem(nIDCtl, lpDIS); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::OnSelChangeEnvList() { SECT_EnvElem *pEnvElem = NULL; int iInd; // get corresponding element iInd = m_cEnvList.GetCurSel(); // select it and update dialog if (iInd != m_lEnvElem) fn_vInitEnvElem(iInd); else fn_vInitEnvElem(-1); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::OnAddElem() { SECT_ModifEnvAndSrf *pModif; SECT_Environment *pDefaultEnv; SECT_Surface *pDefaultSurf; Sector_Object *pSector; // no sector => no modif if (!m_pEditedSector) return; pSector = (Sector_Object *) m_pEditedSector->GetObject(); // test if there is a surface available pDefaultSurf = m_pSectorInterface->GetDefaultSurface(pSector); if (!pDefaultSurf) return; // get default environment pDefaultEnv = m_pSectorInterface->GetDefaultEnvironment(); // create new environment elements pModif = new SECT_ModifEnvAndSrf(m_pSectorInterface, E_mt_AddEnvAndSrf, m_pEditedSector, -1, pDefaultEnv, pDefaultSurf); m_pSectorInterface->M_GetEditManager()->AskFor(pModif); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::OnDelElem() { SECT_ModifEnvAndSrf *pModif; // no sector or no environment => no modif if ((!m_pEditedSector)||(m_lEnvElem == -1)) return; // get parameters pModif = new SECT_ModifEnvAndSrf(m_pSectorInterface, E_mt_DelEnvAndSrf, m_pEditedSector, m_lEnvElem, NULL, NULL); m_pSectorInterface->M_GetEditManager()->AskFor(pModif); } */ /*---------------------------------------- ----------------------------------------*/ /* int SECT_DialogEnvList::OnVKeyToItem (UINT nKey, CWnd *pListBox, UINT nIndex) { // no sector or no environment => no modif if ((!m_pEditedSector)||(m_lEnvElem == -1)) return -2; // interface handling m_pSectorInterface->fn_vOnKeyDownInEnvList (m_pEditedSector, m_lEnvElem, nKey); return -2; } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::OnApplyAll() { SECT_ModifApplyToSectors *pModif; pModif = new SECT_ModifApplyToSectors(m_pSectorInterface, E_tm_ApplyToSectors, m_pEditedSector, NULL); m_pSectorInterface->M_GetEditManager()->AskFor(pModif); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::OnApplySelect() { SECT_ModifApplyToSectors *pModif; pModif = new SECT_ModifApplyToSectors(m_pSectorInterface, E_tm_ApplyToSectors, m_pEditedSector, m_pSectorInterface->GetSelectList()); m_pSectorInterface->M_GetEditManager()->AskFor(pModif); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogEnvList::OnCancelSelect() { // remove all selected sectors m_pSectorInterface->GetSelectList()->RemoveAll(); // update drawing m_pSectorInterface->fn_vShowSelection(); // udpate sector list // m_pSectorInterface->GetDialogList()->fn_vReinitSectorList(); m_pSectorInterface->GetDialogList()->fn_vUpdateSelection(E_lrm_ReinitList); } */