/*========================================================================= * * SECTdMec.cpp : Mechanic Environment dialog - Implementation file * * * Version 1.0 * Creation date * Revision date * * Shaitan *=======================================================================*/ /* #include "stdafx.h" #include "acp_base.h" #include "SECTint.hpp" #include "SECdMec.hpp" #include "SECmodif.hpp" #include "SECdEnv.hpp" #include "SEClEnvs.hpp" #include "SECdEnvs.hpp" #include "SECdSrfs.hpp" #include "..\Main\Inc\_EditID.h" #include "TUT.h" */ //################################################################################# // SECT_DialogMec dialog //################################################################################# /*---------------------------------------- ----------------------------------------*/ /* SECT_DialogMec::SECT_DialogMec(CWnd* pParent) : CFormView(SECT_DialogMec::IDD) { //{{AFX_DATA_INIT(SECT_DialogMec) //}}AFX_DATA_INIT } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(SECT_DialogMec) DDX_Control(pDX, SECT_IDC_MECSAVE, m_cSave); DDX_Control(pDX, SECT_IDC_MECCANCEL, m_cCancel); DDX_Control(pDX, SECT_IDC_MECNAME, m_cName); DDX_Control(pDX, SECT_IDC_MECDEFAULT, m_cDefault); DDX_Control(pDX, SECT_IDC_GRAVITY, m_cGravity); DDX_Control(pDX, SECT_IDC_VERTICALX, m_cVectorX); DDX_Control(pDX, SECT_IDC_VERTICALY, m_cVectorY); DDX_Control(pDX, SECT_IDC_VERTICALZ, m_cVectorZ); DDX_Control(pDX, SECT_IDC_VISCOSITY, m_cViscosity); DDX_Control(pDX, SECT_IDC_DENSITY, m_cDensity); DDX_Control(pDX, SECT_IDC_LEVEL, m_cLevel); DDX_Control(pDX, SECT_IDC_STREAMX, m_cStreamX); DDX_Control(pDX, SECT_IDC_STREAMY, m_cStreamY); DDX_Control(pDX, SECT_IDC_STREAMZ, m_cStreamZ); DDX_Control(pDX, SECT_IDC_VOLUMIC, m_cVolumic); //}}AFX_DATA_MAP } */ /*---------------------------------------- ----------------------------------------*/ /* BEGIN_MESSAGE_MAP(SECT_DialogMec, CFormView) //{{AFX_MSG_MAP(SECT_DialogMec) ON_WM_SIZE() ON_WM_DESTROY() ON_BN_CLICKED(SECT_IDC_MECSAVE, OnSave) ON_BN_CLICKED(SECT_IDC_MECCANCEL, OnCancel) ON_EN_KILLFOCUS(SECT_IDC_MECNAME, OnChangeName) ON_BN_CLICKED(SECT_IDC_MECDEFAULT, OnDefault) ON_EN_KILLFOCUS(SECT_IDC_GRAVITY, OnChangeGravity) ON_EN_KILLFOCUS(SECT_IDC_VERTICALX, OnChangeVectorX) ON_EN_KILLFOCUS(SECT_IDC_VERTICALY, OnChangeVectorY) ON_EN_KILLFOCUS(SECT_IDC_VERTICALZ, OnChangeVectorZ) ON_EN_KILLFOCUS(SECT_IDC_VISCOSITY, OnChangeViscosity) ON_EN_KILLFOCUS(SECT_IDC_DENSITY, OnChangeDensity) ON_EN_KILLFOCUS(SECT_IDC_LEVEL, OnChangeLevel) ON_EN_KILLFOCUS(SECT_IDC_STREAMX, OnChangeStreamX) ON_EN_KILLFOCUS(SECT_IDC_STREAMY, OnChangeStreamY) ON_EN_KILLFOCUS(SECT_IDC_STREAMZ, OnChangeStreamZ) ON_CBN_SELCHANGE(SECT_IDC_VOLUMIC, OnSelChangeComboVolumic) //}}AFX_MSG_MAP END_MESSAGE_MAP() */ //################################################################################# // SECT_DialogMec Inits //################################################################################# /*=========================================================================== * Description: Init dialog * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogMec::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(); // environment TUT_M_vRegisterControl(m_cName.m_hWnd, "OSC_DMEC_EDIT_NAME", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cDefault.m_hWnd, "OSC_DMEC_BUTTON_DEFAULT", TUT_e_Button); TUT_M_vRegisterControl(m_cCancel.m_hWnd, "OSC_DMEC_BUTTON_CANCEL", TUT_e_Button); TUT_M_vRegisterControl(m_cSave.m_hWnd, "OSC_DMEC_BUTTON_SAVE", TUT_e_Button); // gravity TUT_M_vRegisterControl(m_cGravity.m_hWnd, "OSC_DMEC_EDIT_GRAVITY", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cVectorX.m_hWnd, "OSC_DMEC_EDIT_VECTORX", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cVectorY.m_hWnd, "OSC_DMEC_EDIT_VECTORY", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cVectorZ.m_hWnd, "OSC_DMEC_EDIT_VECTORZ", TUT_e_TextEdit); // fluid TUT_M_vRegisterControl(m_cViscosity.m_hWnd, "OSC_DMEC_EDIT_VISCOSITY", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cDensity.m_hWnd, "OSC_DMEC_EDIT_DENSITY", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cLevel.m_hWnd, "OSC_DMEC_EDIT_LEVEL", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cStreamX.m_hWnd, "OSC_DMEC_EDIT_STREAMX", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cStreamY.m_hWnd, "OSC_DMEC_EDIT_STREAMY", TUT_e_TextEdit); TUT_M_vRegisterControl(m_cStreamZ.m_hWnd, "OSC_DMEC_EDIT_STREAMZ", TUT_e_TextEdit); // volumic environment TUT_M_vRegisterControl(m_cVolumic.m_hWnd, "OSC_DMEC_COMBO_VOLUMIC", TUT_e_ComboBox); // END TUTORIAL // init volumic combo m_cVolumic.ResetContent(); m_cVolumic.AddString(C_EntryVolumicAir); m_cVolumic.AddString(C_EntryVolumicWater); m_cVolumic.AddString(C_EntryVolumicLava); // init environment values m_pDefaultMecEnv = NULL; fn_vInitMecEnvironment(NULL, FALSE); m_bInitialised = TRUE; } */ /*=========================================================================== * Description: Init default mec env * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogMec::fn_vReinitDialog (void) { if (!m_pDefaultMecEnv) { m_pDefaultMecEnv = new SECT_MecEnvironment(m_pSectorInterface, ""); m_pDefaultMecEnv->fn_bUnValidate(); m_pDefaultMecEnv->fn_vNotifyUnSave(); } } */ /*=========================================================================== * Description: Init all control state * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogMec::fn_vInitControls (BOOL bEnable) { // init button states m_cSave.EnableWindow(bEnable); m_cCancel.EnableWindow(bEnable); // init name m_cName.SetReadOnly(!bEnable); m_cDefault.EnableWindow(bEnable); // init gravity controls m_cGravity.SetReadOnly(!bEnable); m_cVectorX.SetReadOnly(!bEnable); m_cVectorY.SetReadOnly(!bEnable); m_cVectorZ.SetReadOnly(!bEnable); // init fluid controls m_cDensity.SetReadOnly(!bEnable); m_cViscosity.SetReadOnly(!bEnable); m_cLevel.SetReadOnly(!bEnable); m_cStreamX.SetReadOnly(!bEnable); m_cStreamY.SetReadOnly(!bEnable); m_cStreamZ.SetReadOnly(!bEnable); // init volumic control m_cVolumic.EnableWindow(bEnable); } */ /*=========================================================================== * Description: register initial values * Creation date: * Author: Shaitan *--------------------------------------------------------------------------- * Revision date: Author: *=========================================================================*/ /* void SECT_DialogMec::fn_vInitMecEnvironment (SECT_MecEnvironment *pMecEnv, BOOL bEnable) { int iInd; char szVal[256]; // update or create mec env if ((!pMecEnv) && bEnable) m_pMecEnv = m_pDefaultMecEnv; else m_pMecEnv = pMecEnv; // update all controls fn_vInitControls(bEnable); // init name m_csName = (m_pMecEnv) ? m_pMecEnv->GetName() : ""; // init gravity m_xGravity = (m_pMecEnv) ? (float) m_pMecEnv->GetGravity() : (float) 0.0; m_pVertical = (m_pMecEnv) ? m_pMecEnv->GetVertical() : NULL; // init fluid m_xViscosity = (m_pMecEnv) ? (float) m_pMecEnv->GetFluidViscosity() : (float) 0.0; m_xDensity = (m_pMecEnv) ? (float) m_pMecEnv->GetFluidDensity() : (float) 0.0; m_xLevel = (m_pMecEnv) ? (float) m_pMecEnv->GetFluidLevel() : (float) 0.0; m_pStream = (m_pMecEnv) ? m_pMecEnv->GetFluidStream() : NULL; // init volumic m_csVolumic = (m_pMecEnv) ? m_pMecEnv->GetVolumicEnvironment() : ""; // init text if (!m_pMecEnv) { m_cName.SetWindowText(""); m_cGravity.SetWindowText(""); m_cVectorX.SetWindowText(""); m_cVectorY.SetWindowText(""); m_cVectorZ.SetWindowText(""); m_cDensity.SetWindowText(""); m_cViscosity.SetWindowText(""); m_cLevel.SetWindowText(""); m_cStreamX.SetWindowText(""); m_cStreamY.SetWindowText(""); m_cStreamZ.SetWindowText(""); m_cVolumic.SetCurSel(-1); } else { // name m_cName.SetWindowText(m_csName); // gravity sprintf(szVal, "%5.2f", m_xGravity); m_cGravity.SetWindowText(szVal); sprintf(szVal, "%5.2f", m_pVertical->m_xX); m_cVectorX.SetWindowText(szVal); sprintf(szVal, "%5.2f", m_pVertical->m_xY); m_cVectorY.SetWindowText(szVal); sprintf(szVal, "%5.2f", m_pVertical->m_xZ); m_cVectorZ.SetWindowText(szVal); // fluid sprintf(szVal, "%5.2f", m_xDensity); m_cDensity.SetWindowText(szVal); sprintf(szVal, "%5.2f", m_xViscosity); m_cViscosity.SetWindowText(szVal); sprintf(szVal, "%5.2f", m_xLevel); m_cLevel.SetWindowText(szVal); sprintf(szVal, "%5.2f", m_pStream->m_xX); m_cStreamX.SetWindowText(szVal); sprintf(szVal, "%5.2f", m_pStream->m_xY); m_cStreamY.SetWindowText(szVal); sprintf(szVal, "%5.2f", m_pStream->m_xZ); m_cStreamZ.SetWindowText(szVal); // volumic iInd = m_cVolumic.FindStringExact(-1, m_csVolumic); m_cVolumic.SetCurSel(iInd); } } */ //################################################################################# // Specific Parameters //################################################################################# /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeName (void) { CString csFinalName; char szNewName[256]; // no mec env => no changes if ((!m_pMecEnv)||(!m_cName.GetModify())) return; // get corresponding name m_cName.GetWindowText(szNewName, 255); if (!strcmp(szNewName, "")) { m_cName.SetWindowText(m_csName); return; } // get prefixed name csFinalName = m_pSectorInterface->GetInterface()->GetPrefixedName(szNewName); // check name validity if (m_pMecEnv->fn_eCheckValidity(csFinalName) == E_mc_None) m_csName = csFinalName; // update window m_cName.SetWindowText(m_csName); m_cName.SetModify(FALSE); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeGravity (void) { char szVal[15]; if (m_cGravity.GetModify()) { m_cGravity.GetWindowText(szVal, 15); m_xGravity = (float) atof(szVal); m_cGravity.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeVectorX (void) { char szVal[15]; if (m_cVectorX.GetModify()) { m_cVectorX.GetWindowText(szVal, 15); m_pVertical->m_xX = (float) atof(szVal); m_cVectorX.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeVectorY (void) { char szVal[15]; if (m_cVectorY.GetModify()) { m_cVectorY.GetWindowText(szVal, 15); m_pVertical->m_xY = (float) atof(szVal); m_cVectorY.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeVectorZ (void) { char szVal[15]; if (m_cVectorZ.GetModify()) { m_cVectorZ.GetWindowText(szVal, 15); m_pVertical->m_xZ = (float) atof(szVal); m_cVectorZ.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeViscosity (void) { char szVal[15]; if (m_cViscosity.GetModify()) { m_cViscosity.GetWindowText(szVal, 15); m_xViscosity = (float) atof(szVal); m_cViscosity.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeDensity (void) { char szVal[15]; if (m_cDensity.GetModify()) { m_cDensity.GetWindowText(szVal, 15); m_xDensity = (float) atof(szVal); m_cDensity.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeLevel (void) { char szVal[15]; if (m_cLevel.GetModify()) { m_cLevel.GetWindowText(szVal, 15); m_xLevel = (float) atof(szVal); m_cLevel.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeStreamX (void) { char szVal[15]; if (m_cStreamX.GetModify()) { m_cStreamX.GetWindowText(szVal, 15); m_pStream->m_xX = (float) atof(szVal); m_cStreamX.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeStreamY (void) { char szVal[15]; if (m_cStreamY.GetModify()) { m_cStreamY.GetWindowText(szVal, 15); m_pStream->m_xY = (float) atof(szVal); m_cStreamY.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnChangeStreamZ (void) { char szVal[15]; if (m_cStreamZ.GetModify()) { m_cStreamZ.GetWindowText(szVal, 15); m_pStream->m_xZ = (float) atof(szVal); m_cStreamZ.SetModify(FALSE); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnSelChangeComboVolumic (void) { char szText[256]; // get corresponding environment m_cVolumic.GetLBText(m_cVolumic.GetCurSel(), szText); // update value m_csVolumic = szText; } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnSave() { SECT_ModifMecEnvParams *pModif; // no mec env => no changes if (!m_pMecEnv) return; // default mec env => create new one if (m_pMecEnv == m_pDefaultMecEnv) m_pMecEnv = new SECT_MecEnvironment(m_pSectorInterface, m_csName); // modif pModif = new SECT_ModifMecEnvParams(m_pSectorInterface, E_tm_ModifMecEnv, m_pMecEnv, m_csName, m_xGravity, m_pVertical, m_xViscosity, m_xDensity, m_xLevel, m_pStream, m_csVolumic); m_pSectorInterface->M_GetEditManager()->AskFor(pModif); // give controtl to dialog env & update combo meca m_pSectorInterface->GetDialogEnv()->fn_vInitMecListBox(); m_pSectorInterface->GetDialogEnv()->fn_vSelectMechanic(m_pMecEnv); m_pSectorInterface->GetDialogEnv()->fn_vInitControls(TRUE); m_pSectorInterface->GetDialogSrf()->fn_vInitControls(TRUE); m_pSectorInterface->GetDialogEnvs()->fn_vInitControls(TRUE); m_pSectorInterface->GetDialogEnvList()->fn_vInitControls(TRUE); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnCancel() { // new mec env => cancel if (m_pMecEnv == m_pDefaultMecEnv) m_pMecEnv = NULL; // reinit controls fn_vInitMecEnvironment(m_pMecEnv, FALSE); // give controtl to dialog env m_pSectorInterface->GetDialogEnv()->fn_vInitControls(TRUE); m_pSectorInterface->GetDialogSrf()->fn_vInitControls(TRUE); m_pSectorInterface->GetDialogEnvs()->fn_vInitControls(TRUE); m_pSectorInterface->GetDialogEnvList()->fn_vInitControls(TRUE); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnDefault() { if (m_cName.GetModify()) { OnChangeName(); m_cName.SetFocus(); } } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnSize(UINT, int, int) { RECT WindowPosition; int ecx, ecy; if (!m_bInitialised) return; // calculate name position GetWindowRect(&WindowPosition); ecx = WindowPosition.right - WindowPosition.left; ecx = (ecx < 310) ? 0 : ecx-300; ecy = WindowPosition.bottom - WindowPosition.top; ecy = (ecy < 180) ? 0 : ecy-180; // buttons m_cCancel.MoveWindow(ecx/2, 7, 40, 16); m_cSave.MoveWindow(ecx/2+260, 7, 40, 16); // name m_cName.MoveWindow(ecx/2+50, 5, 200, 20); // Volumic environment GetDlgItem(SECT_IDC_TEXTVOLUMIC)->MoveWindow(ecx/2, 30, 147, 40); m_cVolumic.MoveWindow(ecx/2+10, 45, 130, 20); // Gravity parameters GetDlgItem(SECT_IDC_TEXTGRAVITY)->MoveWindow(ecx/2, 75, 147, 90); GetDlgItem(SECT_IDC_TEXTCOEFF)->MoveWindow(ecx/2+10, 91, 60, 18); m_cGravity.MoveWindow(ecx/2+80, 90, 60, 20); GetDlgItem(SECT_IDC_TEXTVERTICAL)->MoveWindow(ecx/2+10, 115, 70, 18); m_cVectorX.MoveWindow(ecx/2+5, 135, 43, 20); m_cVectorY.MoveWindow(ecx/2+50, 135, 43, 20); m_cVectorZ.MoveWindow(ecx/2+95, 135, 43, 20); // mechanic GetDlgItem(SECT_IDC_TEXTFLUID)->MoveWindow(ecx/2+152, 30, 147, 135); GetDlgItem(SECT_IDC_TEXTVISCOSITY)->MoveWindow(ecx/2+162, 46, 60, 18); m_cViscosity.MoveWindow(ecx/2+232, 45, 60, 20); GetDlgItem(SECT_IDC_TEXTDENSITY)->MoveWindow(ecx/2+162, 68, 60, 18); m_cDensity.MoveWindow(ecx/2+232, 67, 60, 20); GetDlgItem(SECT_IDC_TEXTLEVEL)->MoveWindow(ecx/2+162, 90, 60, 18); m_cLevel.MoveWindow(ecx/2+232, 89, 60, 20); GetDlgItem(SECT_IDC_TEXTSTREAM)->MoveWindow(ecx/2+162, 115, 70, 18); m_cStreamX.MoveWindow(ecx/2+157, 135, 43, 20); m_cStreamY.MoveWindow(ecx/2+202, 135, 43, 20); m_cStreamZ.MoveWindow(ecx/2+247, 135, 43, 20); } */ /*---------------------------------------- ----------------------------------------*/ /* void SECT_DialogMec::OnDestroy (void) { // FOR TUTORIAL TUT_M_vGetTutDll(); // environment TUT_M_vUnregisterControl(m_cName.m_hWnd); TUT_M_vUnregisterControl(m_cDefault.m_hWnd); TUT_M_vUnregisterControl(m_cCancel.m_hWnd); TUT_M_vUnregisterControl(m_cSave.m_hWnd); // gravity TUT_M_vUnregisterControl(m_cGravity.m_hWnd); TUT_M_vUnregisterControl(m_cVectorX.m_hWnd); TUT_M_vUnregisterControl(m_cVectorY.m_hWnd); TUT_M_vUnregisterControl(m_cVectorZ.m_hWnd); // fluid TUT_M_vUnregisterControl(m_cViscosity.m_hWnd); TUT_M_vUnregisterControl(m_cDensity.m_hWnd); TUT_M_vUnregisterControl(m_cLevel.m_hWnd); TUT_M_vUnregisterControl(m_cStreamX.m_hWnd); TUT_M_vUnregisterControl(m_cStreamY.m_hWnd); TUT_M_vUnregisterControl(m_cStreamZ.m_hWnd); // volumic environment TUT_M_vUnregisterControl(m_cVolumic.m_hWnd); // END TUTORIAL CFormView::OnDestroy(); } */