/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// // ViewFlagsDlg.cpp : implementation file // #include "stdafx.h" #include "OdaDgnApp.h" #include "SetGeoPlacemarkDlg.h" #include "DgKMLPlacemark.h" // CSetGeoPlacemarkDlg dialog IMPLEMENT_DYNAMIC(CSetGeoPlacemarkDlg, CDialog) CSetGeoPlacemarkDlg::CSetGeoPlacemarkDlg(CWnd* pParent /*=NULL*/ ) : CDialog(CSetGeoPlacemarkDlg::IDD, pParent) { m_dLatitude = 0; m_dLongitude = 0; m_dAltitude = 0; m_strName.Empty(); } //================================================================================= CSetGeoPlacemarkDlg::~CSetGeoPlacemarkDlg() { } //================================================================================= void CSetGeoPlacemarkDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_LONG_EDIT, m_dLongitude ); DDX_Text(pDX, IDC_LAT_EDIT, m_dLatitude); DDX_Text(pDX, IDC_ALT_EDIT, m_dAltitude); DDX_Text(pDX, IDC_PMNAME_EDIT, m_strName); } //================================================================================= BEGIN_MESSAGE_MAP(CSetGeoPlacemarkDlg, CDialog) ON_WM_TIMER() ON_EN_SETFOCUS(IDC_PMNAME_EDIT, OnEnSetfocusPmNameEdit) ON_EN_SETFOCUS(IDC_LONG_EDIT, OnEnSetfocusLongEdit) ON_EN_SETFOCUS(IDC_LAT_EDIT, OnEnSetfocusLatEdit) ON_EN_SETFOCUS(IDC_ALT_EDIT, OnEnSetfocusAltEdit) END_MESSAGE_MAP() //================================================================================= #define SET_NAME_TIMER 159 #define SET_LONG_TIMER 160 #define SET_LAT_TIMER 161 void CSetGeoPlacemarkDlg::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent == SET_NAME_TIMER) { m_strName = L"Line Road Crossroad"; UpdateData(FALSE); KillTimer(SET_NAME_TIMER); } else if (nIDEvent == SET_LONG_TIMER) { m_dLongitude = -75.6886746586; UpdateData(FALSE); KillTimer(SET_LONG_TIMER); } else if (nIDEvent == SET_LAT_TIMER) { m_dLatitude = 40.0656812758; UpdateData(FALSE); KillTimer(SET_LAT_TIMER); } else { CDialog::OnTimer(nIDEvent); } } //================================================================================= void CSetGeoPlacemarkDlg::OnEnSetfocusPmNameEdit() { UpdateData(FALSE); #ifdef AUTOSET_DATA_DEMO if( m_strName.IsEmpty() ) SetTimer(SET_NAME_TIMER, 500, NULL); #endif } //================================================================================= void CSetGeoPlacemarkDlg::OnEnSetfocusLongEdit() { #ifdef AUTOSET_DATA_DEMO if ( OdZero(m_dLongitude) ) SetTimer(SET_LONG_TIMER, 500, NULL); #endif } //================================================================================= void CSetGeoPlacemarkDlg::OnEnSetfocusLatEdit() { #ifdef AUTOSET_DATA_DEMO if (OdZero(m_dLatitude)) SetTimer(SET_LAT_TIMER, 500, NULL); #endif } //================================================================================= void CSetGeoPlacemarkDlg::OnEnSetfocusAltEdit() { } //================================================================================= BOOL CSetGeoPlacemarkDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(FALSE); return TRUE; } //================================================================================= void CSetGeoPlacemarkDlg::OnOk() { CDialog::OnOK(); } // CSetGeoCoordSystemByPlacemarkDlg dialog IMPLEMENT_DYNAMIC(CSetGeoCoordSystemByPlacemarkDlg, CDialog) CSetGeoCoordSystemByPlacemarkDlg::CSetGeoCoordSystemByPlacemarkDlg(CWnd* pParent, const OdDgElementId& idModel) : CDialog(CSetGeoCoordSystemByPlacemarkDlg::IDD, pParent) { m_iPlacemarkCombo = -1; m_idModel = idModel; } //================================================================================= CSetGeoCoordSystemByPlacemarkDlg::~CSetGeoCoordSystemByPlacemarkDlg() { } //================================================================================= void CSetGeoCoordSystemByPlacemarkDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_CBIndex(pDX, IDC_PLACEMARK_COMBO, m_iPlacemarkCombo); } //================================================================================= BEGIN_MESSAGE_MAP(CSetGeoCoordSystemByPlacemarkDlg, CDialog) END_MESSAGE_MAP() //================================================================================= BOOL CSetGeoCoordSystemByPlacemarkDlg::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(FALSE); if( !m_idModel.isNull() ) { OdDgModelPtr pModel = m_idModel.openObject(OdDg::kForRead); OdDgElementIteratorPtr pIter = pModel->createGraphicsElementsIterator(); CComboBox* pPlacemarkCombo = (CComboBox*)(GetDlgItem(IDC_PLACEMARK_COMBO)); for(; !pIter->done(); pIter->step()) { OdDgElementPtr pItem = pIter->item().openObject(OdDg::kForRead); if (pItem.isNull()) continue; if( pItem->isKindOf(OdDgKMLPlacemark2d::desc()) ) { OdDgKMLPlacemark2dPtr pPlacemark = pItem; m_arrIdPlacemarks.push_back(pPlacemark->elementId()); OdString strData = pPlacemark->getName(); strData.trimRight(L'_'); pPlacemarkCombo->AddString(strData.c_str()); strData.releaseBuffer(); } else if (pItem->isKindOf(OdDgKMLPlacemark3d::desc())) { OdDgKMLPlacemark3dPtr pPlacemark = pItem; m_arrIdPlacemarks.push_back(pPlacemark->elementId()); OdString strData = pPlacemark->getName(); strData.trimRight(L'_'); pPlacemarkCombo->AddString(strData.c_str()); strData.releaseBuffer(); } } } return TRUE; } //=================================================================================