110 MyFrame(
const wxString& title,
const wxPoint& pos,
const wxSize& size,
111 RestServer& rest_server, wxAuiDefaultDockArt* pauidockart,
112 OpenFileFunc open_gpx_file);
116 void SetGPSCompassScale()
override;
117 void FastClose()
override;
118 void RefreshAllCanvas(
bool bErase =
true)
override;
119 void UpdateStatusBar()
override;
120 void ToggleFullScreen()
override;
121 Track* TrackOff(
bool do_add_point =
false)
override;
122 void TrackOn(
void)
override;
123 void ProcessOptionsDialog(
int resultFlags)
override {
124 ProcessOptionsDialog(resultFlags,
nullptr);
127 void SetAlertString(wxString msg)
override {
128 GetPrimaryCanvas()->SetAlertString(msg);
131 void JumpToPosition(
double lat,
double lon)
override {
132 if (!GetFocusCanvas())
return;
133 JumpToPosition(GetFocusCanvas(), lat, lon, GetFocusCanvas()->GetVPScale());
136 void JumpToPosition(
double lat,
double lon,
double scale)
override {
137 if (!GetFocusCanvas())
return;
138 JumpToPosition(GetFocusCanvas(), lat, lon,
scale);
142 double scale)
override {
146 JumpToPosition(cc, lat, lon,
scale);
149 double lon)
override {
153 JumpToPosition(cc, lat, lon, GetFocusCanvas()->GetVPScale());
157 return GetPrimaryCanvas();
161 return GetFocusCanvas();
165 return SwitchKBFocus(
dynamic_cast<ChartCanvas*
>(acc));
168 double GetCanvasTrueScale()
override {
169 return GetPrimaryCanvas()->GetCanvasTrueScale();
172 double GetPixPerMM()
override {
return GetPrimaryCanvas()->
GetPixPerMM(); }
174 double GetContentScaleFactor()
override {
175 if (GetPrimaryCanvas())
176 return GetPrimaryCanvas()->GetContentScaleFactor();
181 void RequestNewToolbars(
bool bforcenew =
false)
override;
183 bool GetCanvasPointPix(
double rlat,
double rlon, wxPoint* r)
override {
187 virtual wxSize GetFocusCanvasSize()
override {
188 return GetFocusCanvas() ? GetFocusCanvas()->GetSize() : wxSize(0, 0);
191 void CancelAllMouseRoute()
override;
192 void InvalidateAllCanvasUndo()
override;
193 void PositionConsole()
override;
194 void InvalidateAllGL()
override;
196 auto chart =
dynamic_cast<ChartBase*
>(arg);
198 return GetPrimaryCanvas()->GetBestVPScale(chart);
203 void LoadHarmonics()
override;
205 bool DropMarker(
bool atOwnShip =
true)
override;
206 double GetMag(
double a,
double lat,
double lon)
override;
207 void SetMasterToolbarItemState(
int tool_id,
bool state)
override;
208 bool DoChartUpdate()
override;
209 void ProcessCanvasResize()
override;
210 bool SetGlobalToolbarViz(
bool viz)
override;
216 UpdateGlobalMenuItems(
dynamic_cast<ChartCanvas*
>(acc));
218 void UpdateGlobalMenuItems()
override;
220 RefreshCanvasOther(
dynamic_cast<ChartCanvas*
>(ccThis));
222 virtual double* GetCOGTable()
override {
return COGTable; }
223 virtual void StartCogTimer()
override {
224 FrameCOGTimer.Start(100, wxTIMER_CONTINUOUS);
227 wxWindow* GetPrimaryCanvasWindow()
override {
return GetPrimaryCanvas(); }
228 void ApplyGlobalSettings(
bool bnewtoolbar)
override;
229 void SetMenubarItemState(
int item_id,
bool state)
override;
230 void ToggleColorScheme()
override;
231 void ActivateMOB()
override;
232 void ToggleTestPause()
override;
237 void DoSettings()
override;
239 void UpdateRotationState(
double rotation)
override;
240 void SetChartUpdatePeriod()
override;
241 wxStatusBar* GetStatusBar()
override {
return wxFrame::GetStatusBar(); }
242 wxStatusBar* GetFrameStatusBar()
const override {
return m_pStatusBar; }
244 enum _DisCat nset)
override {
245 SetENCDisplayCategory(
dynamic_cast<ChartCanvas*
>(acc), nset);
247 int GetCanvasIndexUnderMouse()
override;
249 double GetCanvasRefScale()
override {
250 return GetPrimaryCanvas()->GetVP().
ref_scale;
255 void SendGlJsonConfigMsg()
override {
256 if (GetPrimaryCanvas() && GetPrimaryCanvas()->GetglCanvas())
257 GetPrimaryCanvas()->GetglCanvas()->SendJSONConfigMessage();
259 bool CanAccelerateGlPanning()
override {
260 return GetPrimaryCanvas()->GetglCanvas()->CanAcceleratePanning();
262 void SetupGlCompression()
override {
263 GetPrimaryCanvas()->GetglCanvas()->SetupCompression();
265 wxString GetGlVersionString()
override {
266 return GetPrimaryCanvas()->GetglCanvas()->GetVersionString();
268 wxGLCanvas* GetWxGlCanvas()
override {
269 return GetPrimaryCanvas()->GetglCanvas();
273 void SendGlJsonConfigMsg()
override {}
274 bool CanAccelerateGlPanning()
override {
return false; }
275 void SetupGlCompression()
override {}
276 wxString GetGlVersionString()
override {
return ""; }
277 wxGLCanvas* GetWxGlCanvas()
override {
return nullptr; }
280 int GetNextToolbarToolId()
override {
281 return m_next_available_plugin_tool_id;
283 void SetToolbarItemBitmaps(
int tool_id, wxBitmap* bitmap,
284 wxBitmap* bmpDisabled)
override;
285 void SetToolbarItemSVG(
int tool_id, wxString normalSVGfile,
286 wxString rolloverSVGfile,
287 wxString toggledSVGfile)
override;
288 void UpdateAllFonts()
override;
289 void ScheduleReconfigAndSettingsReload(
bool reload,
bool new_dialog)
override;
290 void ScheduleReloadCharts()
override;
291 void ChartsRefresh()
override;
292 void FreezeCharts()
override;
293 void ThawCharts()
override;
295 void ScheduleDeleteSettingsDialog()
override;
297 void BeforeUndoableAction(UndoType undo_type,
RoutePoint* point,
298 UndoBeforePointerType pointer_type,
299 UndoItemPointer pointer)
override {
300 if (!GetPrimaryCanvas())
return;
301 GetPrimaryCanvas()->undo->BeforeUndoableAction(undo_type, point,
302 pointer_type, pointer);
305 virtual void AfterUndoableAction(UndoItemPointer pointer)
override {
306 GetPrimaryCanvas()->undo->AfterUndoableAction(pointer);
308 virtual void TouchAISActive()
override;
309 virtual void UpdateAISMOBRoute(
const AisTargetData* ptarget)
override;
310 virtual void ActivateAISMOBRoute(
const AisTargetData* ptarget)
override;
311 void EnableSettingsTool(
bool _enable)
override {
318 void OnToolLeftClick(wxCommandEvent& event)
override;
320 void SetENCDisplayCategory(
ChartCanvas* cc,
enum _DisCat nset);
323 wxFont* GetFont(wxFont* font,
double scale)
override;
324 wxFont* GetDefaultFont(wxString label,
int Ptsize)
override;
325 wxFont* GetScaledFont(
int pointSize, wxFontFamily family, wxFontStyle style,
326 wxFontWeight weight,
const wxString faceName,
327 double scale)
override;
329 int GetApplicationMemoryUse(
void);
331 void OnEraseBackground(wxEraseEvent& event);
332 void OnMaximize(wxMaximizeEvent& event);
333 void OnCloseWindow(wxCloseEvent& event);
334 void OnExit(wxCommandEvent& event);
335 void OnSize(wxSizeEvent& event);
336 void OnMove(wxMoveEvent& event);
337 void OnInitTimer(wxTimerEvent& event);
350 void OnMemFootTimer(wxTimerEvent& event);
351 void OnRecaptureTimer(wxTimerEvent& event);
353 void OnIconize(wxIconizeEvent& event);
354 void OnBellsFinished(wxCommandEvent& event);
369#ifdef wxHAS_POWER_EVENTS
370 void OnSuspending(wxPowerEvent& event);
371 void OnSuspended(wxPowerEvent& event);
372 void OnSuspendCancel(wxPowerEvent& event);
373 void OnResume(wxPowerEvent& event);
377 void selectChartDisplay(
int type,
int family);
378 void applySettingsString(wxString settings);
379 void setStringVP(wxString VPS);
380 void InvalidateAllQuilts();
388 void NotifyChildrenResize();
391 void DoSettingsNew(
void);
394 void TriggerRecaptureTimer();
396 void MouseEvent(wxMouseEvent& event);
397 void CenterView(
ChartCanvas* cc,
const LLBBox& bbox);
401 void BuildMenuBar(
void);
402 void RegisterGlobalMenuItems();
404 void DoOptionsDialog();
405 void ProcessOptionsDialog(
int resultFlags, ArrayOfCDI* pNewDirArray);
406 void PrepareOptionsClose(
options* settings,
int settings_return_value);
418 void ToggleRocks(
void);
427 void TrackDailyRestart(
void);
428 bool ShouldRestartTrack();
429 void InitializeTrackRestart();
433 void SubmergeAllCanvasToolbars(
void);
434 void SurfaceAllCanvasToolbars(
void);
435 void SetAllToolbarScale(
void);
437 void RefreshGroupIndices(
void);
439 double GetBestVPScale(
ChartBase* pchart);
441 DataMonitor* GetDataMonitor()
const {
return m_data_monitor; }
443 void SetAndApplyColorScheme(ColorScheme cs);
445 void OnFrameTCTimer(wxTimerEvent& event);
446 void OnFrameCOGTimer(wxTimerEvent& event);
448 void HandleBasicNavMsg(std::shared_ptr<const BasicNavDataMsg> msg);
449 void HandleGPSWatchdogMsg(std::shared_ptr<const GPSWatchdogMsg> msg);
451 bool CheckGroup(
int igroup);
452 bool SendJSON_WMM_Var_Request(
double lat,
double lon, wxDateTime date);
454 void DestroyPersistentDialogs();
455 void UpdateAISTool(
void);
456 wxMenuBar* m_pMenuBar;
463 wxTimer FrameTCTimer;
465 wxTimer FrameCOGTimer;
466 wxTimer MemFootTimer;
467 wxTimer m_resizeTimer;
468 wxTimer FrameTenHzTimer;
473 wxGenericProgressDialog* Updateprog =
nullptr;
476 void RequestNewToolbarArgEvent(wxCommandEvent& WXUNUSED(event)) {
477 return RequestNewMasterToolbar();
480 void UpdateGPSCompassStatusBoxes(
bool b_force_new =
false);
482 bool UpdateChartDatabaseInplace(ArrayOfCDI& DirArray,
bool b_force,
484 const wxString& ChartListFileName);
485 void FinalizeChartDBUpdate();
487 bool m_bdefer_resize;
489 double COGTable[kMaxCogAverageSeconds];
491 void CreateCanvasLayout(
bool b_useStoredSize =
false);
493 void SetCanvasSizes(wxSize frameSize);
496 void RequestNewMasterToolbar(
bool bforcenew =
true);
497 bool CheckAndAddPlugInTool();
498 bool AddDefaultPositionPlugInTools();
500 void UpdateCanvasConfigDescriptors();
501 void ScheduleSettingsDialog();
502 void ScheduleSettingsDialogNew();
503 static void RebuildChartDatabase();
504 void PositionIENCToolbar();
506 void InitAppMsgBusListener();
508 void ReleaseApiListeners();
509 void ConfigureStatusBar();
512 void ProcessUnitTest();
513 bool ProcessQuitFlag();
514 void ProcessDeferredTrackOn();
515 void SendFixToPlugins();
516 void ProcessAnchorWatch();
517 void ProcessLogAndBells();
518 void CalculateCOGAverage();
519 void CheckToolbarPosition();
521 void ODoSetSize(
void);
524 void UpdateAllToolbars(ColorScheme cs);
526 void FilterCogSog(
void);
528 void ApplyGlobalColorSchemetoStatusBar(
void);
530 bool ScrubGroupArray();
532 void OnToolbarAnimateTimer(wxTimerEvent& event);
533 bool CollapseGlobalToolbar();
535 int m_StatusBarFieldCount;
537 wxDateTime m_MMEAeventTime;
538 unsigned long m_ulLastNMEATicktime;
540 wxDateTime m_fix_start_time;
542 wxString m_last_reported_chart_name;
543 wxString m_last_reported_chart_pubdate;
545 wxString m_lastAISiconName;
548 int m_next_available_plugin_tool_id;
550 double COGFilterTable[kMaxCogsogFilterSeconds];
551 double SOGFilterTable[kMaxCogsogFilterSeconds];
553 int m_ChartUpdatePeriod;
554 bool m_last_bGPSValid;
555 bool m_last_bVelocityValid;
558 wxString prev_locale;
570 wxDateTime m_target_rotate_time;
572 wxTimer ToolbarAnimateTimer;
573 int m_nMasterToolCountShown;
574 wxTimer m_recaptureTimer;
576 std::unique_ptr<LoadErrorsDlgCtrl> m_load_errors_dlg_ctrl;
577 wxString m_gshhg_chart_loc;
591 wxStatusBar* m_pStatusBar;
593 bool m_need_new_options;
594 wxArrayString pathArray;
595 double restoreScale[4];
596 unsigned int last_canvasConfig;
598 wxAuiDefaultDockArt* m_pauidockart;
600 OpenFileFunc m_open_gpx_file;
602 void CenterAisTarget(
const std::shared_ptr<const AisTargetData>& ais_target);
604 DECLARE_EVENT_TABLE()