109 MyFrame(
const wxString& title,
const wxPoint& pos,
const wxSize& size,
110 RestServer& rest_server, wxAuiDefaultDockArt* pauidockart,
111 OpenFileFunc open_gpx_file);
115 void SetGPSCompassScale()
override;
116 void FastClose()
override;
117 void RefreshAllCanvas(
bool bErase =
true)
override;
118 void UpdateStatusBar()
override;
119 void ToggleFullScreen()
override;
120 Track* TrackOff(
bool do_add_point =
false)
override;
121 void TrackOn(
void)
override;
122 void ProcessOptionsDialog(
int resultFlags)
override {
123 ProcessOptionsDialog(resultFlags,
nullptr);
126 void SetAlertString(wxString msg)
override {
127 GetPrimaryCanvas()->SetAlertString(msg);
130 void JumpToPosition(
double lat,
double lon)
override {
131 if (!GetFocusCanvas())
return;
132 JumpToPosition(GetFocusCanvas(), lat, lon, GetFocusCanvas()->GetVPScale());
135 void JumpToPosition(
double lat,
double lon,
double scale)
override {
136 if (!GetFocusCanvas())
return;
137 JumpToPosition(GetFocusCanvas(), lat, lon,
scale);
141 double scale)
override {
145 JumpToPosition(cc, lat, lon,
scale);
148 double lon)
override {
152 JumpToPosition(cc, lat, lon, GetFocusCanvas()->GetVPScale());
156 return GetPrimaryCanvas();
160 return GetFocusCanvas();
164 return SwitchKBFocusCanvas(
dynamic_cast<ChartCanvas*
>(acc));
167 double GetCanvasTrueScale()
override {
168 return GetPrimaryCanvas()->GetCanvasTrueScale();
171 double GetPixPerMM()
override {
return GetPrimaryCanvas()->
GetPixPerMM(); }
173 double GetContentScaleFactor()
override {
174 if (GetPrimaryCanvas())
175 return GetPrimaryCanvas()->GetContentScaleFactor();
180 void RequestNewToolbars(
bool bforcenew =
false)
override;
182 bool GetCanvasPointPix(
double rlat,
double rlon, wxPoint* r)
override {
186 virtual wxSize GetFocusCanvasSize()
override {
187 return GetFocusCanvas() ? GetFocusCanvas()->GetSize() : wxSize(0, 0);
190 void CancelAllMouseRoute()
override;
191 void InvalidateAllCanvasUndo()
override;
192 void PositionConsole()
override;
193 void InvalidateAllGL()
override;
195 auto chart =
dynamic_cast<ChartBase*
>(arg);
197 return GetPrimaryCanvas()->GetBestVPScale(chart);
202 void LoadHarmonics()
override;
204 bool DropMarker(
bool atOwnShip =
true)
override;
205 double GetMag(
double a,
double lat,
double lon)
override;
206 void SetMasterToolbarItemState(
int tool_id,
bool state)
override;
207 bool DoChartUpdate()
override;
208 void ProcessCanvasResize()
override;
209 bool SetGlobalToolbarViz(
bool viz)
override;
215 UpdateGlobalMenuItems(
dynamic_cast<ChartCanvas*
>(acc));
217 void UpdateGlobalMenuItems()
override;
219 RefreshCanvasOther(
dynamic_cast<ChartCanvas*
>(ccThis));
221 virtual double* GetCOGTable()
override {
return COGTable; }
222 virtual void StartCogTimer()
override {
223 FrameCOGTimer.Start(100, wxTIMER_CONTINUOUS);
226 wxWindow* GetPrimaryCanvasWindow()
override {
return GetPrimaryCanvas(); }
227 void ApplyGlobalSettings(
bool bnewtoolbar)
override;
228 void SetMenubarItemState(
int item_id,
bool state)
override;
229 void ToggleColorScheme()
override;
230 void ActivateMOB()
override;
231 void ToggleTestPause()
override;
236 void DoSettings()
override;
238 void UpdateRotationState(
double rotation)
override;
239 void SetChartUpdatePeriod()
override;
240 wxStatusBar* GetStatusBar()
override {
return wxFrame::GetStatusBar(); }
241 wxStatusBar* GetFrameStatusBar()
const override {
return m_pStatusBar; }
243 enum _DisCat nset)
override {
244 SetENCDisplayCategory(
dynamic_cast<ChartCanvas*
>(acc), nset);
246 int GetCanvasIndexUnderMouse()
override;
248 double GetCanvasRefScale()
override {
249 return GetPrimaryCanvas()->GetVP().
ref_scale;
254 void SendGlJsonConfigMsg()
override {
255 if (GetPrimaryCanvas() && GetPrimaryCanvas()->GetglCanvas())
256 GetPrimaryCanvas()->GetglCanvas()->SendJSONConfigMessage();
258 bool CanAccelerateGlPanning()
override {
259 return GetPrimaryCanvas()->GetglCanvas()->CanAcceleratePanning();
261 void SetupGlCompression()
override {
262 GetPrimaryCanvas()->GetglCanvas()->SetupCompression();
264 wxString GetGlVersionString()
override {
265 return GetPrimaryCanvas()->GetglCanvas()->GetVersionString();
267 wxGLCanvas* GetWxGlCanvas()
override {
268 return GetPrimaryCanvas()->GetglCanvas();
272 void SendGlJsonConfigMsg()
override {}
273 bool CanAccelerateGlPanning()
override {
return false; }
274 void SetupGlCompression()
override {}
275 wxString GetGlVersionString()
override {
return ""; }
276 wxGLCanvas* GetWxGlCanvas()
override {
return nullptr; }
279 int GetNextToolbarToolId()
override {
280 return m_next_available_plugin_tool_id;
282 void SetToolbarItemBitmaps(
int tool_id, wxBitmap* bitmap,
283 wxBitmap* bmpDisabled)
override;
284 void SetToolbarItemSVG(
int tool_id, wxString normalSVGfile,
285 wxString rolloverSVGfile,
286 wxString toggledSVGfile)
override;
287 void UpdateAllFonts()
override;
288 void ScheduleReconfigAndSettingsReload(
bool reload,
bool new_dialog)
override;
289 void ScheduleReloadCharts()
override;
290 void ChartsRefresh()
override;
291 void FreezeCharts()
override;
292 void ThawCharts()
override;
294 void ScheduleDeleteSettingsDialog()
override;
296 void BeforeUndoableAction(UndoType undo_type,
RoutePoint* point,
297 UndoBeforePointerType pointer_type,
298 UndoItemPointer pointer)
override {
299 if (!GetPrimaryCanvas())
return;
300 GetPrimaryCanvas()->undo->BeforeUndoableAction(undo_type, point,
301 pointer_type, pointer);
304 virtual void AfterUndoableAction(UndoItemPointer pointer)
override {
305 GetPrimaryCanvas()->undo->AfterUndoableAction(pointer);
307 virtual void TouchAISActive()
override;
308 virtual void UpdateAISMOBRoute(
const AisTargetData* ptarget)
override;
309 virtual void ActivateAISMOBRoute(
const AisTargetData* ptarget)
override;
310 void EnableSettingsTool(
bool _enable)
override {
311 if (m_pMenuBar) m_pMenuBar->Enable(wxID_PREFERENCES, _enable);
318 void OnToolLeftClick(wxCommandEvent& event)
override;
320 bool DisableTbarTooltips();
321 void EnableTbarTooltips();
322 void HideTbarTooltip();
324 void SetENCDisplayCategory(
ChartCanvas* cc,
enum _DisCat nset);
327 wxFont* GetFont(wxFont* font,
double scale)
override;
328 wxFont* GetDefaultFont(wxString label,
int Ptsize)
override;
329 wxFont* GetScaledFont(
int pointSize, wxFontFamily family, wxFontStyle style,
330 wxFontWeight weight,
const wxString faceName,
331 double scale)
override;
333 int GetApplicationMemoryUse(
void);
335 void OnEraseBackground(wxEraseEvent& event);
336 void OnMaximize(wxMaximizeEvent& event);
337 void OnCloseWindow(wxCloseEvent& event);
338 void OnExit(wxCommandEvent& event);
339 void OnSize(wxSizeEvent& event);
340 void OnMove(wxMoveEvent& event);
341 void OnInitTimer(wxTimerEvent& event);
354 void OnMemFootTimer(wxTimerEvent& event);
355 void OnRecaptureTimer(wxTimerEvent& event);
357 void OnIconize(wxIconizeEvent& event);
358 void OnBellsFinished(wxCommandEvent& event);
373#ifdef wxHAS_POWER_EVENTS
374 void OnSuspending(wxPowerEvent& event);
375 void OnSuspended(wxPowerEvent& event);
376 void OnSuspendCancel(wxPowerEvent& event);
377 void OnResume(wxPowerEvent& event);
381 void selectChartDisplay(
int type,
int family);
382 void applySettingsString(wxString settings);
383 void setStringVP(wxString VPS);
384 void InvalidateAllQuilts();
392 void NotifyChildrenResize();
395 void DoSettingsNew(
void);
398 void TriggerRecaptureTimer();
400 void MouseEvent(wxMouseEvent& event);
401 void CenterView(
ChartCanvas* cc,
const LLBBox& bbox);
405 void BuildMenuBar(
void);
406 void RegisterGlobalMenuItems();
408 void DoOptionsDialog();
409 void ProcessOptionsDialog(
int resultFlags, ArrayOfCDI* pNewDirArray);
410 void PrepareOptionsClose(
options* settings,
int settings_return_value);
422 void ToggleRocks(
void);
431 void TrackDailyRestart(
void);
432 bool ShouldRestartTrack();
433 void InitializeTrackRestart();
437 void SubmergeAllCanvasToolbars(
void);
438 void SurfaceAllCanvasToolbars(
void);
439 void SetAllToolbarScale(
void);
441 void RefreshGroupIndices(
void);
443 double GetBestVPScale(
ChartBase* pchart);
445 DataMonitor* GetDataMonitor()
const {
return m_data_monitor; }
447 void SetAndApplyColorScheme(ColorScheme cs);
448 void ValidateColorScheme();
450 void OnFrameTCTimer(wxTimerEvent& event);
451 void OnFrameCOGTimer(wxTimerEvent& event);
453 void HandleBasicNavMsg(std::shared_ptr<const BasicNavDataMsg> msg);
454 void HandleGPSWatchdogMsg(std::shared_ptr<const GPSWatchdogMsg> msg);
456 bool CheckGroup(
int igroup);
457 bool SendJSON_WMM_Var_Request(
double lat,
double lon, wxDateTime date);
459 void DestroyPersistentDialogs();
460 void UpdateAISTool(
void);
461 wxMenuBar* m_pMenuBar;
468 wxTimer FrameTCTimer;
470 wxTimer FrameCOGTimer;
471 wxTimer MemFootTimer;
472 wxTimer m_resizeTimer;
473 wxTimer FrameTenHzTimer;
478 wxGenericProgressDialog* Updateprog =
nullptr;
481 void RequestNewToolbarArgEvent(wxCommandEvent& WXUNUSED(event)) {
482 return RequestNewMasterToolbar();
485 void UpdateGPSCompassStatusBoxes(
bool b_force_new =
false);
487 bool UpdateChartDatabaseInplace(ArrayOfCDI& DirArray,
bool b_force,
489 const wxString& ChartListFileName);
490 void FinalizeChartDBUpdate();
492 bool m_bdefer_resize;
494 double COGTable[kMaxCogAverageSeconds];
496 void CreateCanvasLayout(
bool b_useStoredSize =
false);
498 void SetCanvasSizes(wxSize frameSize);
501 void RequestNewMasterToolbar(
bool bforcenew =
true);
502 bool CheckAndAddPlugInTool();
503 bool AddDefaultPositionPlugInTools();
505 void UpdateCanvasConfigDescriptors();
506 void ScheduleSettingsDialog();
507 void ScheduleSettingsDialogNew();
508 static bool StartRebuildChartDatabase();
509 void PositionIENCToolbar();
511 void InitAppMsgBusListener();
513 void ReleaseApiListeners();
514 void ConfigureStatusBar();
517 void ProcessUnitTest();
518 bool ProcessQuitFlag();
519 void ProcessDeferredTrackOn();
520 void SendFixToPlugins();
521 void ProcessAnchorWatch();
522 void ProcessLogAndBells();
523 void CalculateCOGAverage();
525 void ODoSetSize(
void);
528 void UpdateAllToolbars(ColorScheme cs);
530 void FilterCogSog(
void);
532 void ApplyGlobalColorSchemetoStatusBar(
void);
534 bool ScrubGroupArray();
536 void OnToolbarAnimateTimer(wxTimerEvent& event);
537 bool CollapseGlobalToolbar();
539 int m_StatusBarFieldCount;
541 wxDateTime m_MMEAeventTime;
542 unsigned long m_ulLastNMEATicktime;
544 wxDateTime m_fix_start_time;
546 wxString m_last_reported_chart_name;
547 wxString m_last_reported_chart_pubdate;
549 wxString m_lastAISiconName;
552 int m_next_available_plugin_tool_id;
554 double COGFilterTable[kMaxCogsogFilterSeconds];
555 double SOGFilterTable[kMaxCogsogFilterSeconds];
557 int m_ChartUpdatePeriod;
558 bool m_last_bGPSValid;
559 bool m_last_bVelocityValid;
562 wxString prev_locale;
574 wxDateTime m_target_rotate_time;
576 wxTimer ToolbarAnimateTimer;
577 int m_nMasterToolCountShown;
578 wxTimer m_recaptureTimer;
580 std::unique_ptr<LoadErrorsDlgCtrl> m_load_errors_dlg_ctrl;
581 wxString m_gshhg_chart_loc;
586 obs::Listener m_on_raise_listener;
587 obs::Listener m_on_quit_listener;
588 obs::Listener m_routes_update_listener;
589 obs::Listener m_evt_drv_msg_listener;
590 obs::Listener m_update_statusbar_listener;
591 obs::Listener m_center_aistarget_listener;
592 obs::Listener m_reload_charts_listener;
595 wxStatusBar* m_pStatusBar;
597 bool m_need_new_options;
598 wxArrayString pathArray;
599 double restoreScale[4];
600 unsigned int last_canvasConfig;
602 wxAuiDefaultDockArt* m_pauidockart;
604 OpenFileFunc m_open_gpx_file;
606 void CenterAisTarget(
const std::shared_ptr<const AisTargetData>& ais_target);
608 DECLARE_EVENT_TABLE()