111 MyFrame(
const wxString& title,
const wxPoint& pos,
const wxSize& size,
112 RestServer& rest_server, wxAuiDefaultDockArt* pauidockart,
113 OpenFileFunc open_gpx_file);
117 void SetGPSCompassScale()
override;
118 void FastClose()
override;
119 void RefreshAllCanvas(
bool bErase =
true)
override;
120 void UpdateStatusBar()
override;
121 void ToggleFullScreen()
override;
122 Track* TrackOff(
bool do_add_point =
false)
override;
123 void TrackOn(
void)
override;
124 void ProcessOptionsDialog(
int resultFlags)
override {
125 ProcessOptionsDialog(resultFlags,
nullptr);
128 void SetAlertString(wxString msg)
override {
129 GetPrimaryCanvas()->SetAlertString(msg);
132 void JumpToPosition(
double lat,
double lon)
override {
133 if (!GetFocusCanvas())
return;
134 JumpToPosition(GetFocusCanvas(), lat, lon, GetFocusCanvas()->GetVPScale());
137 void JumpToPosition(
double lat,
double lon,
double scale)
override {
138 if (!GetFocusCanvas())
return;
139 JumpToPosition(GetFocusCanvas(), lat, lon,
scale);
143 double scale)
override {
147 JumpToPosition(cc, lat, lon,
scale);
150 double lon)
override {
154 JumpToPosition(cc, lat, lon, GetFocusCanvas()->GetVPScale());
158 return GetPrimaryCanvas();
162 return GetFocusCanvas();
166 return SwitchKBFocus(
dynamic_cast<ChartCanvas*
>(acc));
169 double GetCanvasTrueScale()
override {
170 return GetPrimaryCanvas()->GetCanvasTrueScale();
173 double GetPixPerMM()
override {
return GetPrimaryCanvas()->
GetPixPerMM(); }
175 double GetContentScaleFactor()
override {
176 if (GetPrimaryCanvas())
177 return GetPrimaryCanvas()->GetContentScaleFactor();
182 void RequestNewToolbars(
bool bforcenew =
false)
override;
184 bool GetCanvasPointPix(
double rlat,
double rlon, wxPoint* r)
override {
188 virtual wxSize GetFocusCanvasSize()
override {
189 return GetFocusCanvas() ? GetFocusCanvas()->GetSize() : wxSize(0, 0);
192 void CancelAllMouseRoute()
override;
193 void InvalidateAllCanvasUndo()
override;
194 void PositionConsole()
override;
195 void InvalidateAllGL()
override;
197 auto chart =
dynamic_cast<ChartBase*
>(arg);
199 return GetPrimaryCanvas()->GetBestVPScale(chart);
204 void LoadHarmonics()
override;
206 bool DropMarker(
bool atOwnShip =
true)
override;
207 double GetMag(
double a,
double lat,
double lon)
override;
208 void SetMasterToolbarItemState(
int tool_id,
bool state)
override;
209 bool DoChartUpdate()
override;
210 void ProcessCanvasResize()
override;
211 bool SetGlobalToolbarViz(
bool viz)
override;
217 UpdateGlobalMenuItems(
dynamic_cast<ChartCanvas*
>(acc));
219 void UpdateGlobalMenuItems()
override;
221 RefreshCanvasOther(
dynamic_cast<ChartCanvas*
>(ccThis));
223 virtual double* GetCOGTable()
override {
return COGTable; }
224 virtual void StartCogTimer()
override {
225 FrameCOGTimer.Start(100, wxTIMER_CONTINUOUS);
228 wxWindow* GetPrimaryCanvasWindow()
override {
return GetPrimaryCanvas(); }
229 void ApplyGlobalSettings(
bool bnewtoolbar)
override;
230 void SetMenubarItemState(
int item_id,
bool state)
override;
231 void ToggleColorScheme()
override;
232 void ActivateMOB()
override;
233 void ToggleTestPause()
override;
238 void DoSettings()
override;
240 void UpdateRotationState(
double rotation)
override;
241 void SetChartUpdatePeriod()
override;
242 wxStatusBar* GetStatusBar()
override {
return wxFrame::GetStatusBar(); }
243 wxStatusBar* GetFrameStatusBar()
const override {
return m_pStatusBar; }
245 enum _DisCat nset)
override {
246 SetENCDisplayCategory(
dynamic_cast<ChartCanvas*
>(acc), nset);
248 int GetCanvasIndexUnderMouse()
override;
250 double GetCanvasRefScale()
override {
251 return GetPrimaryCanvas()->GetVP().
ref_scale;
256 void SendGlJsonConfigMsg()
override {
257 if (GetPrimaryCanvas() && GetPrimaryCanvas()->GetglCanvas())
258 GetPrimaryCanvas()->GetglCanvas()->SendJSONConfigMessage();
260 bool CanAccelerateGlPanning()
override {
261 return GetPrimaryCanvas()->GetglCanvas()->CanAcceleratePanning();
263 void SetupGlCompression()
override {
264 GetPrimaryCanvas()->GetglCanvas()->SetupCompression();
266 wxString GetGlVersionString()
override {
267 return GetPrimaryCanvas()->GetglCanvas()->GetVersionString();
269 wxGLCanvas* GetWxGlCanvas()
override {
270 return GetPrimaryCanvas()->GetglCanvas();
274 void SendGlJsonConfigMsg()
override {}
275 bool CanAccelerateGlPanning()
override {
return false; }
276 void SetupGlCompression()
override {}
277 wxString GetGlVersionString()
override {
return ""; }
278 wxGLCanvas* GetWxGlCanvas()
override {
return nullptr; }
281 int GetNextToolbarToolId()
override {
282 return m_next_available_plugin_tool_id;
284 void SetToolbarItemBitmaps(
int tool_id, wxBitmap* bitmap,
285 wxBitmap* bmpDisabled)
override;
286 void SetToolbarItemSVG(
int tool_id, wxString normalSVGfile,
287 wxString rolloverSVGfile,
288 wxString toggledSVGfile)
override;
289 void UpdateAllFonts()
override;
290 void ScheduleReconfigAndSettingsReload(
bool reload,
bool new_dialog)
override;
291 void ScheduleReloadCharts()
override;
292 void ChartsRefresh()
override;
293 void FreezeCharts()
override;
294 void ThawCharts()
override;
296 void ScheduleDeleteSettingsDialog()
override;
298 void BeforeUndoableAction(UndoType undo_type,
RoutePoint* point,
299 UndoBeforePointerType pointer_type,
300 UndoItemPointer pointer)
override {
301 if (!GetPrimaryCanvas())
return;
302 GetPrimaryCanvas()->undo->BeforeUndoableAction(undo_type, point,
303 pointer_type, pointer);
306 virtual void AfterUndoableAction(UndoItemPointer pointer)
override {
307 GetPrimaryCanvas()->undo->AfterUndoableAction(pointer);
309 virtual void TouchAISActive()
override;
310 virtual void UpdateAISMOBRoute(
const AisTargetData* ptarget)
override;
311 virtual void ActivateAISMOBRoute(
const AisTargetData* ptarget)
override;
312 void OnToolLeftClick(wxCommandEvent& event)
override;
314 void SetENCDisplayCategory(
ChartCanvas* cc,
enum _DisCat nset);
317 wxFont* GetFont(wxFont* font,
double scale)
override;
318 int GetApplicationMemoryUse(
void);
320 void OnEraseBackground(wxEraseEvent& event);
321 void OnMaximize(wxMaximizeEvent& event);
322 void OnCloseWindow(wxCloseEvent& event);
323 void OnExit(wxCommandEvent& event);
324 void OnSize(wxSizeEvent& event);
325 void OnMove(wxMoveEvent& event);
326 void OnInitTimer(wxTimerEvent& event);
339 void OnMemFootTimer(wxTimerEvent& event);
340 void OnRecaptureTimer(wxTimerEvent& event);
342 void OnIconize(wxIconizeEvent& event);
343 void OnBellsFinished(wxCommandEvent& event);
358#ifdef wxHAS_POWER_EVENTS
359 void OnSuspending(wxPowerEvent& event);
360 void OnSuspended(wxPowerEvent& event);
361 void OnSuspendCancel(wxPowerEvent& event);
362 void OnResume(wxPowerEvent& event);
366 void selectChartDisplay(
int type,
int family);
367 void applySettingsString(wxString settings);
368 void setStringVP(wxString VPS);
369 void InvalidateAllQuilts();
377 void NotifyChildrenResize();
380 void DoSettingsNew(
void);
383 void TriggerRecaptureTimer();
385 void MouseEvent(wxMouseEvent& event);
386 void CenterView(
ChartCanvas* cc,
const LLBBox& bbox);
390 void BuildMenuBar(
void);
391 void RegisterGlobalMenuItems();
393 void DoOptionsDialog();
394 void ProcessOptionsDialog(
int resultFlags, ArrayOfCDI* pNewDirArray);
395 void PrepareOptionsClose(
options* settings,
int settings_return_value);
407 void ToggleRocks(
void);
416 void TrackDailyRestart(
void);
417 bool ShouldRestartTrack();
418 void InitializeTrackRestart();
422 void SubmergeAllCanvasToolbars(
void);
423 void SurfaceAllCanvasToolbars(
void);
424 void SetAllToolbarScale(
void);
426 void RefreshGroupIndices(
void);
428 double GetBestVPScale(
ChartBase* pchart);
430 DataMonitor* GetDataMonitor()
const {
return m_data_monitor; }
432 void SetAndApplyColorScheme(ColorScheme cs);
434 void OnFrameTCTimer(wxTimerEvent& event);
435 void OnFrameCOGTimer(wxTimerEvent& event);
437 void HandleBasicNavMsg(std::shared_ptr<const BasicNavDataMsg> msg);
438 void HandleGPSWatchdogMsg(std::shared_ptr<const GPSWatchdogMsg> msg);
440 bool CheckGroup(
int igroup);
441 bool SendJSON_WMM_Var_Request(
double lat,
double lon, wxDateTime date);
443 void DestroyPersistentDialogs();
444 void UpdateAISTool(
void);
446 wxMenuBar* m_pMenuBar;
453 wxTimer FrameTCTimer;
455 wxTimer FrameCOGTimer;
456 wxTimer MemFootTimer;
457 wxTimer m_resizeTimer;
458 wxTimer FrameTenHzTimer;
463 wxGenericProgressDialog* Updateprog =
nullptr;
466 void RequestNewToolbarArgEvent(wxCommandEvent& WXUNUSED(event)) {
467 return RequestNewMasterToolbar();
470 void UpdateGPSCompassStatusBoxes(
bool b_force_new =
false);
472 bool UpdateChartDatabaseInplace(ArrayOfCDI& DirArray,
bool b_force,
474 const wxString& ChartListFileName);
475 void FinalizeChartDBUpdate();
477 bool m_bdefer_resize;
479 double COGTable[kMaxCogAverageSeconds];
481 void CreateCanvasLayout(
bool b_useStoredSize =
false);
483 void SetCanvasSizes(wxSize frameSize);
486 void RequestNewMasterToolbar(
bool bforcenew =
true);
487 bool CheckAndAddPlugInTool();
488 bool AddDefaultPositionPlugInTools();
490 void UpdateCanvasConfigDescriptors();
491 void ScheduleSettingsDialog();
492 void ScheduleSettingsDialogNew();
493 static void RebuildChartDatabase();
494 void PositionIENCToolbar();
496 void InitAppMsgBusListener();
498 void ReleaseApiListeners();
499 void ConfigureStatusBar();
502 void ProcessUnitTest();
503 bool ProcessQuitFlag();
504 void ProcessDeferredTrackOn();
505 void SendFixToPlugins();
506 void ProcessAnchorWatch();
507 void ProcessLogAndBells();
508 void CalculateCOGAverage();
509 void CheckToolbarPosition();
511 void ODoSetSize(
void);
514 void UpdateAllToolbars(ColorScheme cs);
516 void FilterCogSog(
void);
518 void ApplyGlobalColorSchemetoStatusBar(
void);
520 bool ScrubGroupArray();
522 void OnToolbarAnimateTimer(wxTimerEvent& event);
523 bool CollapseGlobalToolbar();
525 int m_StatusBarFieldCount;
527 wxDateTime m_MMEAeventTime;
528 unsigned long m_ulLastNMEATicktime;
530 wxDateTime m_fix_start_time;
532 wxString m_last_reported_chart_name;
533 wxString m_last_reported_chart_pubdate;
535 wxString m_lastAISiconName;
538 int m_next_available_plugin_tool_id;
540 double COGFilterTable[kMaxCogsogFilterSeconds];
541 double SOGFilterTable[kMaxCogsogFilterSeconds];
543 int m_ChartUpdatePeriod;
544 bool m_last_bGPSValid;
545 bool m_last_bVelocityValid;
548 wxString prev_locale;
560 wxDateTime m_target_rotate_time;
562 wxTimer ToolbarAnimateTimer;
563 int m_nMasterToolCountShown;
564 wxTimer m_recaptureTimer;
566 std::unique_ptr<LoadErrorsDlgCtrl> m_load_errors_dlg_ctrl;
567 wxString m_gshhg_chart_loc;
581 wxStatusBar* m_pStatusBar;
583 bool m_need_new_options;
584 wxArrayString pathArray;
585 double restoreScale[4];
586 unsigned int last_canvasConfig;
588 wxAuiDefaultDockArt* m_pauidockart;
590 OpenFileFunc m_open_gpx_file;
592 void CenterAisTarget(
const std::shared_ptr<const AisTargetData>& ais_target);
594 DECLARE_EVENT_TABLE()