/* /////////////////////////////////////////////////////////////////////////////////////////////////// // Description : WayDia.cpp // // Dialog edition the ways // /////////////////////////////////////////////////////////////////////////////////////////////////// // // /////////////////////////////////////////////////////////////////////////////////////////////////// // Creation date: 21 jan 1997 Author: J Thénoz /////////////////////////////////////////////////////////////////////////////////////////////////// // Modification date: Author: // // // // /////////////////////////////////////////////////////////////////////////////////////////////////// */ //ANNECY Shaitan Nettoyage (12/05/98) { /* #include "stdafx.h" #include "acp_base.h" #include "resource.h" #include "incitf.h" #include "incgam.h" #include "incai.h" #include "WpObj.hpp" #include "WayObj.hpp" #include "LinkObj.hpp" #include "Inter.hpp" #include "WayDia.hpp" #include "WpDia.hpp" #include "LinkDia.hpp" #include "RotDia.hpp" #include "oac.h" #include "x:\cpa\main\inc\_editid.h" #include "tut.h" ///////////////////////////////////////////////////////////////////////////// // DiaWay dialog IMPLEMENT_DYNCREATE ( DiaWay, CFormView); DiaWay::DiaWay(CWnd* pParent) : CFormView(DiaWay::IDD) { //{{AFX_DATA_INIT(DiaWay) m_EditWay = _T(""); m_csWayName = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDI_NETWAYPOINT); m_bInsert=FALSE; m_bDisableDelete=TRUE; m_pWayObj=NULL; } void DiaWay::fn_vInitDialog (void) { GetDlgItem (IDC_WAY_COMBO)->EnableWindow (FALSE); GetDlgItem (IDC_WAY_DELETE_BUTTON)->EnableWindow (FALSE); GetDlgItem (IDC_WAY_ADD_BUTTON)->EnableWindow (FALSE); GetDlgItem (IDC_WAY_NAME_EDIT)->EnableWindow (FALSE); } void DiaWay::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(DiaWay) DDX_Control(pDX, IDC_WAY_COMBO, m_ListNameWP); DDX_CBString(pDX, IDC_WAY_COMBO, m_EditWay); DDV_MaxChars(pDX, m_EditWay, 30); DDX_Text(pDX, IDC_WAY_NAME_EDIT, m_csWayName); DDV_MaxChars(pDX, m_csWayName, 30); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DiaWay, CFormView) //{{AFX_MSG_MAP(DiaWay) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_WAY_DELETE_BUTTON, OnDeleteWayButton) ON_BN_CLICKED(IDC_WAY_ADD_BUTTON, OnAddWayButton) ON_CBN_SELCHANGE(IDC_WAY_COMBO, OnSelchangeWayCombo) ON_CBN_EDITUPDATE(IDC_WAY_COMBO, OnEditupdateWayCombo) ON_WM_CLOSE() ON_WM_DESTROY() ON_CBN_DBLCLK(IDC_WAY_COMBO, OnDblclkWayCombo) //}}AFX_MSG_MAP END_MESSAGE_MAP() // to edit a new way void DiaWay::fn_vEdit (Way* poWay, int iSelect) { // Aspect of the dialog if (!m_pWayObj && poWay) { GetDlgItem (IDC_WAY_COMBO)->EnableWindow (TRUE); GetDlgItem (IDC_WAY_DELETE_BUTTON)->EnableWindow (TRUE); GetDlgItem (IDC_WAY_ADD_BUTTON)->EnableWindow (TRUE); GetDlgItem (IDC_WAY_NAME_EDIT)->EnableWindow (TRUE); } else if (m_pWayObj && !poWay) { GetDlgItem (IDC_WAY_COMBO)->EnableWindow (FALSE); GetDlgItem (IDC_WAY_DELETE_BUTTON)->EnableWindow (FALSE); GetDlgItem (IDC_WAY_ADD_BUTTON)->EnableWindow (FALSE); GetDlgItem (IDC_WAY_NAME_EDIT)->EnableWindow (FALSE); m_csWayName=""; UpdateData (FALSE); } m_pWayObj=poWay; if (m_pWayObj) { CString csWindowTitle; csWindowTitle = m_pWayObj->fn_csGetNameInNameList (); GetParent()->SetWindowText ( csWindowTitle ); fn_vRefreshDialog (iSelect); fn_vEditName (); } else { GetParent()->SetWindowText ( "no way to edit" ); m_ListNameWP.ResetContent(); m_bInsert=FALSE; m_bDisableDelete=TRUE; m_csWayName=""; } GetParent()->GetParent()->RedrawWindow (NULL, NULL, RDW_INVALIDATE|RDW_FRAME); } BOOL DiaWay::fn_bIsEdit (Way* poWay) { return m_pWayObj==poWay; } void DiaWay::fn_vRefreshDialog (int iSelect) { long lCount; char (*dpszNameWay) [30]; long lNbWayPointInNet = m_pWayObj->fn_lGetWPName (&dpszNameWay); UpdateData (FALSE); // just to call DoDataExange the first time m_ListNameWP.ResetContent(); for (lCount=0; lCountEnableWindow (!m_bDisableDelete); fn_vRefreshLinkBox (); m_csWayName = m_pWayObj->GetName (); UpdateData (FALSE); m_ListNameWP.SetCurSel (m_iSelect); } void DiaWay::fn_vRefreshNameList (void) { if (!m_pWayObj) return; long lCount; char (*dpszNameWay) [30]; long lNbWayPointInNet = m_pWayObj->fn_lGetWPName (&dpszNameWay); m_ListNameWP.ResetContent(); for (lCount=0; lCountGetListWaypoint()->GetCount()) m_pWayObj->fn_vSupWP (m_iSelect); m_bInsert=FALSE; m_pWayObj->fn_vDialogDeleteWp (); // disable the delete button because there is nothing to delete if (!m_bDisableDelete && m_ListNameWP.GetCount()<=1) { GetDlgItem (IDC_WAY_DELETE_BUTTON)->EnableWindow (FALSE); m_bDisableDelete=TRUE; } } void DiaWay::OnAddWayButton() { if (m_bInsert || m_iSelect==m_ListNameWP.GetCount()-1) { m_ListNameWP.SetFocus(); return; } m_bInsert=TRUE; m_ListNameWP.InsertString (m_iSelect,""); m_ListNameWP.SetEditSel (0,-1); m_ListNameWP.SetCurSel (m_iSelect); m_ListNameWP.SetFocus(); } void DiaWay::OnSelchangeWayCombo() { if (m_bInsert) { if (!fn_bValidEntry()) { m_ListNameWP.SetCurSel(m_iSelect); return; } m_bInsert=FALSE; } m_iSelect = m_ListNameWP.GetCurSel(); if (m_iSelect==m_pWayObj->GetListWaypoint()->GetCount()) { GetDlgItem (IDC_WAY_DELETE_BUTTON)->EnableWindow (FALSE); m_bDisableDelete=TRUE; } else { GetDlgItem (IDC_WAY_DELETE_BUTTON)->EnableWindow (TRUE); m_bDisableDelete=FALSE; } WayPoint::fn_pGetDialog()->fn_vEdit ( m_pWayObj->fn_pGetWayPoint (m_iSelect) ); m_pWayObj->GetInterface()->GetInterface()->fn_vCancelCurrentSelection (FALSE); if (m_pWayObj->fn_pGetWayPoint (m_iSelect)) m_pWayObj->GetInterface()->GetInterface()->fn_vAddSelectedObject (m_pWayObj->fn_pGetWayPoint (m_iSelect)->GetSuperObject() ); else m_pWayObj->GetInterface()->GetInterface()->fn_vCancelCurrentSelection (); Link::fn_pGetDialog()->fn_vEdit (m_pWayObj->fn_pGetLink (m_iSelect)); } void DiaWay::OnEditupdateWayCombo() { m_bInsert=TRUE; UpdateData (TRUE); m_ListNameWP.DeleteString (m_iSelect); m_ListNameWP.InsertString (m_iSelect,m_EditWay); m_ListNameWP.SetCurSel (m_iSelect); m_ListNameWP.SetEditSel(-1,0); } BOOL DiaWay::fn_bValidEntry (void) { WayPoint* pInsertWP=NULL; UpdateData (TRUE); if (m_iSelect==m_ListNameWP.GetCount()-1) m_ListNameWP.AddString (""); if (*m_EditWay) { if (!fn_bSameNameSuit()) { // this WP exist ? pInsertWP = (WayPoint*)(m_pWayObj->GetInterface()->GetMainWorld()->fn_p_oFindObject (m_EditWay.GetBuffer(30), "Waypoint" )); if (pInsertWP) { // this WP is static ? if (pInsertWP->fn_bGetCoordinate()) { m_pWayObj->fn_vInsBeforeWP (pInsertWP, m_iSelect ); if (m_bDisableDelete && m_ListNameWP.GetCount()>1) { GetDlgItem (IDC_WAY_DELETE_BUTTON)->EnableWindow (TRUE); m_bDisableDelete=FALSE; } return TRUE; } else MessageBox ( "The waypoint "+m_EditWay+ " is not static.", "Error", MB_ICONEXCLAMATION); } else MessageBox ( "The waypoint "+m_EditWay+ " is not defined.", "Error", MB_ICONEXCLAMATION); } else MessageBox ("The waypoint "+m_EditWay+ " is doubled in the net.", "Error", MB_ICONEXCLAMATION); m_ListNameWP.SetCurSel (m_iSelect); m_ListNameWP.SetEditSel(-1,0); return FALSE; } if (m_iSelect!=m_ListNameWP.GetCount()-1) { MessageBox ("You must give a waypoint name", "Error", MB_ICONEXCLAMATION); return FALSE; } return TRUE; } void DiaWay::fn_vMessageBoxDynamicWP ( WayPoint* poWP ) { MessageBox ( "The waypoint "+CString(poWP->GetSuperObject()->GetName())+ " is not static.", "Error", MB_ICONEXCLAMATION); } BOOL DiaWay::fn_bSameNameSuit (void) { char szCurrentText [30]; char szPreviousText [30]; long lCounter; sprintf (szPreviousText,"Impossible_name_WGDTSY"); for (lCounter=0; lCounterfn_vDialogAddWp (); } else { m_ListNameWP.SetCurSel (m_iSelect); m_ListNameWP.SetFocus(); } return TRUE; } } return CFormView::OnCommand(wParam, lParam); } BOOL DiaWay::fn_vSelectWPInList (WayPoint* poWP) { m_iSelect = m_ListNameWP.FindStringExact( 0, poWP->GetSuperObject()->GetName() ); if (m_iSelect==LB_ERR) return FALSE; m_ListNameWP.SetCurSel (m_iSelect); fn_vRefreshLinkBox (); return TRUE; } BOOL DiaWay::fn_vSelectWPInList (int iIndiceWP) { m_iSelect = iIndiceWP; m_ListNameWP.SetCurSel (m_iSelect); fn_vRefreshLinkBox (); return TRUE; } void DiaWay::fn_vRefreshLinkBox (void) { Link* poLink = m_pWayObj->fn_pGetLink(m_iSelect); if (poLink && poLink->fn_bIsRotationMode()) Link::fn_pGetRotationDialog()->fn_vEdit (poLink); else Link::fn_pGetDialog()->fn_vEdit (poLink); } void DiaWay::fn_vEditName (void) { m_csWayName = m_pWayObj->GetName (); } void DiaWay::OnKillfocusWayNameEdit() { CString pOldName = m_csWayName; UpdateData (TRUE); if (pOldName == m_csWayName) return; if (m_pWayObj->fn_eRename(m_csWayName)!=E_mc_None) { CString csMessage = m_csWayName+CString( " is already used."); M_GetMainWnd()->UpdateStatus ( csMessage.GetBuffer(80), C_STATUSPANE_INFOS, C_STATUS_ERROR ); m_csWayName=pOldName; UpdateData (FALSE); } else { m_pWayObj->GetInterface()->fn_vRefreshHierarchyList (); m_pWayObj->fn_vNotifyAllEdtList (); } } void DiaWay::OnDblclkWayCombo() { WayPoint* poWp = m_pWayObj->fn_pGetWayPoint (m_iSelect); m_pWayObj->GetInterface()->GetInterface()->fn_bSelectObject (poWp->GetSuperObject(), TRUE ); } BOOL DiaWay::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) { BOOL bCreate = CFormView::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); TUT_M_vGetTutDll (); TUT_M_vRegisterControl (m_hWnd , "OWP_WayDialog" , TUT_e_Window); TUT_M_vRegisterControlID (IDC_WAY_COMBO,"OWP_WayCombo",TUT_e_ComboBox); TUT_M_vRegisterControlID (IDC_WAY_DELETE_BUTTON,"OWP_WayDelete",TUT_e_Button); TUT_M_vRegisterControlID (IDC_WAY_ADD_BUTTON,"OWP_WayAdd",TUT_e_Button); TUT_M_vRegisterControlID (IDC_WAY_NAME_EDIT,"OWP_WayNameEdit",TUT_e_TextEdit); return bCreate; } void DiaWay::OnDestroy() { TUT_M_vGetTutDll (); TUT_M_vUnregisterControl (m_hWnd); TUT_M_vUnregisterControlID (IDC_WAY_COMBO); TUT_M_vUnregisterControlID (IDC_WAY_DELETE_BUTTON); TUT_M_vUnregisterControlID (IDC_WAY_ADD_BUTTON); TUT_M_vUnregisterControlID (IDC_WAY_NAME_EDIT); } */ //ENDANNECY Shaitan Nettoyage }