📄 frame.h
字号:
/* * Roadnav * Frame.h * * 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////// Contains the frame class for the application, and the associated/// event handlers./////////////////////////////////////////////////////////////////////////////////#ifndef FRAME_H#define FRAME_H#include <wx/minifram.h>#include <wx/datetime.h>#include "wxSkinnableFrame.h"#include "libroadnav/MapControl.h"#include "GPSMonitorThread.h"#include "GPSFrame.h"#include "WhatsNearByFrame.h"#include "libroadnav/DownloadThread.h"#include "DirectionsFrame.h"#include "MapEventExtender.h"#include "libroadnav/MapAppearanceSettings.h"#include "ThemeManager.h"#include "SolarTimer.h"#include "libroadnav/MapControlData_Tiles.h"#include "Scripting.h"#include "TTS.h"//////////////////////////////////////////////////////////////////////////////////// \brief Main frame of Roadnav/////////////////////////////////////////////////////////////////////////////////class MapFrame : public wxSkinnableFrame{ public: ////////////////////////////////////////////////////////////////////////////// /// @name Construction/destruction ////////////////////////////////////////////////////////////////////////////// /// @{ MapFrame(wxString title); ~MapFrame(); /// @} void RedrawMap(wxCommandEvent & event); MapControl * GetMapControl(); ITTS * GetTTS(); ////////////////////////////////////////////////////////////////////////////// /// @name Event handlers ////////////////////////////////////////////////////////////////////////////// /// @{ void OnGPSUpdate(wxGPSEvent & event); void OnGPSUpdateIdle(wxGPSEvent & event); void OnGPSUpdateIdleSpeedControlledZooming(wxGPSEvent & event); void OnGPSUpdateIdleRoadTypeZooming(wxGPSEvent & event); void OnGPSUpdateIdleKeepGPSOnScreen(wxGPSEvent & event); void OnGPSUpdateIdlePointGPSHeadingUp(wxGPSEvent & event); void OnGPSUpdateIdleUpdateGPSTrack(wxGPSEvent & event); void OnGPSWindowHiding(); void OnDirectionsWindowHiding(); void OnWhatsNearByWindowHiding(); void OnDownloadCounty(wxCommandEvent & ev);#if defined _WINDOWS virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);#endif /// @} EToolMode GetToolMode() const; void SetToolMode(EToolMode mode); void SetVariable(wxString strName, wxString strValue); MapAppearanceSettings& GetMapAppearanceSettings(); IMapControlData& GetMapControlData(); Address m_adrGPS; /// Current GPS coordinates Point m_ptGPS; /// Current GPS heading double m_fGPSHeading; /// Current GPS speed (MPH) double m_fGPSSpeed; protected: virtual int MapNameToID(wxString strName); virtual void CreateNamedControl(wxString strName); virtual void DeleteNamedControl(wxString strName, wxControl * pControl); private: void ApplyPreferences(); void SaveMarkers(); // menu handlers ////////////////////////////////////////////////////////////////////////////// /// @name File menu handlers ////////////////////////////////////////////////////////////////////////////// /// @{#ifdef USE_SCRIPTING void OnFileRunScript(wxCommandEvent & event);#endif void OnFileSaveAs(wxCommandEvent & event); void OnFilePrint(wxCommandEvent & event); void OnFilePrintPreview(wxCommandEvent & event); void OnFileExit(wxCommandEvent & event); /// @} ////////////////////////////////////////////////////////////////////////////// /// @name View menu handlers ////////////////////////////////////////////////////////////////////////////// /// @{ void OnViewCompass(wxCommandEvent & event); void OnViewAerialPhotos(wxCommandEvent & event); void OnView3DMode(wxCommandEvent & event); void OnViewScale(wxCommandEvent & event); void OnViewGPSHistory(wxCommandEvent & event); void OnViewZoomLevel(wxCommandEvent& event); void OnViewZoomIn(wxCommandEvent& event); void OnViewZoomOut(wxCommandEvent& event); void OnViewZoomMax(wxCommandEvent& event); void OnViewZoomMin(wxCommandEvent& event); void OnViewGPSMarker(wxCommandEvent& event); void OnViewGPSMarkerToggle(wxCommandEvent& event); void OnViewGPSWindow(wxCommandEvent& event); void OnViewWhatsNearByWindow(wxCommandEvent& event); void OnViewFullScreen(wxCommandEvent& event); /// @} ////////////////////////////////////////////////////////////////////////////// /// @name Map menu handlers ////////////////////////////////////////////////////////////////////////////// /// @{ void OnMapSetAddress(wxCommandEvent & event); void OnMapWaypoints(wxCommandEvent & event); void OnMapSetAngle(wxCommandEvent & event); void OnMapGetDirections(wxCommandEvent & event); void OnMapGetDirectionsAccel(wxCommandEvent & event); void OnMapMoveCenterLeft(wxCommandEvent & event); void OnMapMoveCenterRight(wxCommandEvent & event); void OnMapMoveCenterUp(wxCommandEvent & event); void OnMapMoveCenterDown(wxCommandEvent & event); /// @} ////////////////////////////////////////////////////////////////////////////// /// @name Tools menu handlers ////////////////////////////////////////////////////////////////////////////// /// @{ void OnToolsMeasure(wxCommandEvent& event); void OnUpdateToolsMeasure(wxUpdateUIEvent& event); void OnToolsZoom(wxCommandEvent& event); void OnUpdateToolsZoom(wxUpdateUIEvent& event); void OnToolsDownloadTIGERLineMaps(wxCommandEvent & event);#ifdef USE_OPENSTREETMAP void OnToolsDownloadOSMMaps(wxCommandEvent & event); void OnToolsImportOSMMaps(wxCommandEvent & event);#endif void OnToolsPreferences(wxCommandEvent & event); /// @} ////////////////////////////////////////////////////////////////////////////// /// @name Help menu handlers ////////////////////////////////////////////////////////////////////////////// /// @{ void OnHelpAbout(wxCommandEvent & event); /// @} ////////////////////////////////////////////////////////////////////////////// /// @name Misc events ////////////////////////////////////////////////////////////////////////////// /// @{ void OnMapRecentered(wxCommandEvent & event); void OnWhatsNearbyDoubleClick(wxCommandEvent & event); void OnClose(wxCloseEvent & event); void OnIdle(wxIdleEvent & event); void OnSolarEvent(SolarEvent& event); void OnEscapeKey(wxCommandEvent & event); void OnSolarTimerTest(wxCommandEvent& event); void OnTimerInit(wxTimerEvent& event);#ifdef USE_SCRIPTING void OnTimerScripting(wxTimerEvent& event);#endif void OnTimerConfigFlush(wxTimerEvent& event); /// @} void UpdateSkinState(); // variables /// The map control in the main window MapControl * m_ctlMap; /// Map menu wxMenu * m_menuMap; // Manages the drawing details MapAppearanceSettings m_MapAppearanceSettings; ThemeManager m_ThemeManager; void InitializeThemes(); /// Speed controlled detail level offset int m_iSpeedControlledDetailLevelOffset; /// Speed controlled detail level cutoffs - each time the velocity exceeds one of these cutoffs, /// the map will zoom out one level. std::vector<double> m_vSpeedControlledDetailLevelCutoffs; /// View menu wxMenu * m_menuView; /// wxPrintData structure wxPrintData m_pdData; /// Boolean - should the screen track the GPS marker coordinates? bool m_bScreenTracksGPS; /// Pointer to GPS status window GPSFrame * m_pfrmGPS; CompassControl * m_pctlCompass; DirectionsFrame * m_pfrmDirections; /// Pointer to Whats Nearby window WhatsNearByFrame * m_pfrmWhatsNearBy; /// Pointer to GPS monitor thread GPSMonitorThread * m_GPSMonitorThread; /// Thread responsible for background downloads DownloadThread * m_DownloadThread; bool m_bNorthAlwaysUp; EToolMode m_ToolMode; SolarTimer m_SolarTimer; void UpdateTheme(); MapControlData_Tiles m_cRecords; wxTimer * m_ptmrInit; wxTimer * m_ptmrConfigFlush; bool m_bOnGPSInProgress; wxGPSEvent m_evGPS; bool m_bNewGPSData; wxMutex m_mtxGPS; bool m_bGPSJustRun; wxDateTime m_tLastRoadTypeZoomingCheck; int m_iRoadTypeZoomingCountdown; ERecordType m_eRoadTypeZoomingCurrentType; ERecordType m_eRoadTypeZoomingNextType; int m_ariRoadTypeZoomingDetailLevels[(int) LAST_RECORD_TYPE + 1]; #ifdef USE_SCRIPTING Scripting * m_pScripting; wxTimer * m_ptmrScripting;#endif ITTS * m_pcTTS; DECLARE_EVENT_TABLE()};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -