📄 locationpagecoordinates.cpp
字号:
/* * Roadnav * LocationPageCoordinates.cpp * * Copyright (c) 2004 - 2007 Richard L. Lynch <rllynch@users.sourceforge.net> * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *////////////////////////////////////////////////////////////////////////////////// \file////// \brief This location page allows a set of GPS coordinates to be entered./////////////////////////////////////////////////////////////////////////////////#ifdef HAVE_CONFIG_H# include <config.h>#endif#ifdef _MSC_VER#pragma warning(disable: 4786)#pragma warning(disable: 4800)#endif#include <wx/wx.h>#include <wx/valgen.h>#include <vector>#include "App.h"#include "LocationPageCoordinates.h"#include "libroadnav/MapLookup.h"#include "libroadnav/MapState.h"#include "libroadnav/Map.h"#include "libroadnav/MapAbbreviations.h"#include "libroadnav/MapZip.h"#include "libroadnav/MapRepresentations.h"#include "libroadnav/MapControlDataImporter_TigerLine.h"#include "libroadnav/MapSupport.h"using namespace std;//////////////////////////////////////////////////////////////////////////////////// LocationPageCoordinates event table/////////////////////////////////////////////////////////////////////////////////BEGIN_EVENT_TABLE(LocationPageCoordinates, wxPanel)END_EVENT_TABLE()//////////////////////////////////////////////////////////////////////////////////// \brief Constructor - create the control/////////////////////////////////////////////////////////////////////////////////LocationPageCoordinates::LocationPageCoordinates(wxWindow *parent) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxNO_BORDER){ wxBoxSizer * sizerWnd = new wxBoxSizer(wxVERTICAL); ////////////////////////////////////////////////////////////////////////////// // Coordinates entry ////////////////////////////////////////////////////////////////////////////// sizerWnd->Add( new wxStaticText(this, -1, wxT("Coordinates"), wxDefaultPosition), 1, wxALIGN_LEFT | wxALIGN_BOTTOM | wxLEFT | wxRIGHT | wxTOP, 5); m_ctlCoordinates = new wxTextCtrl(this, -1, m_strCoordinates, wxDefaultPosition, wxSize(200, -1), 0, wxGenericValidator(&m_strCoordinates)); sizerWnd->Add(m_ctlCoordinates, 1, wxGROW | wxALL, 5); ////////////////////////////////////////////////////////////////////////// // Set up the sizer ////////////////////////////////////////////////////////////////////////// m_ctlCoordinates->SetFocus(); sizerWnd->Fit(this); SetSizer(sizerWnd); Layout(); sizerWnd->SetSizeHints(this); }///////////////////////////////////////////////////////////////////////////////// /// \brief Parse the entered addresses.////// This function parses the address that was entered into it and returns/// a Address pointer. Multiple calls to GetAddress will return the same/// pointer since FindAddress is used./////////////////////////////////////////////////////////////////////////////////Address LocationPageCoordinates::GetAddress(wxString * pstrErrorMsg, bool bRoadsOnly){ if (pstrErrorMsg) *pstrErrorMsg = m_strErrorMsg; return m_cAddress;}///////////////////////////////////////////////////////////////////////////////// /// \brief Update the address in the dialog with the address provided in/// the cAddress argument./////////////////////////////////////////////////////////////////////////////////void LocationPageCoordinates::SetAddress(Address cAddress){ m_strCoordinates = cAddress.m_ptCoordinates.FormatPoint(); TransferDataToWindow();}///////////////////////////////////////////////////////////////////////////////// /// \brief Indicates if the location dialog may close. Always returns true./////////////////////////////////////////////////////////////////////////////////bool LocationPageCoordinates::MayClose(bool bRoadsOnly){ Point ptEntered; const bool * pbVisibility; if (bRoadsOnly) pbVisibility = OnlyRoadsVisibility(); else pbVisibility = AllVisibility(); ptEntered.ParsePoint(m_strCoordinates); m_cAddress = FindCoordinates(ptEntered, pbVisibility); if (!m_cAddress.m_bValid) { m_strErrorMsg = wxT("Sorry, there is nothing near those coordinates."); wxMessageDialog dlgError(this, m_strErrorMsg, wxT("Error"), wxOK | wxICON_ERROR); dlgError.ShowModal(); return false; } return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -