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 SwitchKBFocusCanvas(
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 EnableSettingsTool(
bool _enable)
override {
319 void OnToolLeftClick(wxCommandEvent& event)
override;
321 bool DisableTbarTooltips();
322 void EnableTbarTooltips();
323 void HideTbarTooltip();
325 void SetENCDisplayCategory(
ChartCanvas* cc,
enum _DisCat nset);
328 wxFont* GetFont(wxFont* font,
double scale)
override;
329 wxFont* GetDefaultFont(wxString label,
int Ptsize)
override;
330 wxFont* GetScaledFont(
int pointSize, wxFontFamily family, wxFontStyle style,
331 wxFontWeight weight,
const wxString faceName,
332 double scale)
override;
334 int GetApplicationMemoryUse(
void);
336 void OnEraseBackground(wxEraseEvent& event);
337 void OnMaximize(wxMaximizeEvent& event);
338 void OnCloseWindow(wxCloseEvent& event);
339 void OnExit(wxCommandEvent& event);
340 void OnSize(wxSizeEvent& event);
341 void OnMove(wxMoveEvent& event);
342 void OnInitTimer(wxTimerEvent& event);
355 void OnMemFootTimer(wxTimerEvent& event);
356 void OnRecaptureTimer(wxTimerEvent& event);
358 void OnIconize(wxIconizeEvent& event);
359 void OnBellsFinished(wxCommandEvent& event);
374#ifdef wxHAS_POWER_EVENTS
375 void OnSuspending(wxPowerEvent& event);
376 void OnSuspended(wxPowerEvent& event);
377 void OnSuspendCancel(wxPowerEvent& event);
378 void OnResume(wxPowerEvent& event);
382 void selectChartDisplay(
int type,
int family);
383 void applySettingsString(wxString settings);
384 void setStringVP(wxString VPS);
385 void InvalidateAllQuilts();
393 void NotifyChildrenResize();
396 void DoSettingsNew(
void);
399 void TriggerRecaptureTimer();
401 void MouseEvent(wxMouseEvent& event);
402 void CenterView(
ChartCanvas* cc,
const LLBBox& bbox);
406 void BuildMenuBar(
void);
407 void RegisterGlobalMenuItems();
409 void DoOptionsDialog();
410 void ProcessOptionsDialog(
int resultFlags, ArrayOfCDI* pNewDirArray);
411 void PrepareOptionsClose(
options* settings,
int settings_return_value);
423 void ToggleRocks(
void);
432 void TrackDailyRestart(
void);
433 bool ShouldRestartTrack();
434 void InitializeTrackRestart();
438 void SubmergeAllCanvasToolbars(
void);
439 void SurfaceAllCanvasToolbars(
void);
440 void SetAllToolbarScale(
void);
442 void RefreshGroupIndices(
void);
444 double GetBestVPScale(
ChartBase* pchart);
446 DataMonitor* GetDataMonitor()
const {
return m_data_monitor; }
448 void SetAndApplyColorScheme(ColorScheme cs);
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 void 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();
524 void CheckToolbarPosition();
526 void ODoSetSize(
void);
529 void UpdateAllToolbars(ColorScheme cs);
531 void FilterCogSog(
void);
533 void ApplyGlobalColorSchemetoStatusBar(
void);
535 bool ScrubGroupArray();
537 void OnToolbarAnimateTimer(wxTimerEvent& event);
538 bool CollapseGlobalToolbar();
540 int m_StatusBarFieldCount;
542 wxDateTime m_MMEAeventTime;
543 unsigned long m_ulLastNMEATicktime;
545 wxDateTime m_fix_start_time;
547 wxString m_last_reported_chart_name;
548 wxString m_last_reported_chart_pubdate;
550 wxString m_lastAISiconName;
553 int m_next_available_plugin_tool_id;
555 double COGFilterTable[kMaxCogsogFilterSeconds];
556 double SOGFilterTable[kMaxCogsogFilterSeconds];
558 int m_ChartUpdatePeriod;
559 bool m_last_bGPSValid;
560 bool m_last_bVelocityValid;
563 wxString prev_locale;
575 wxDateTime m_target_rotate_time;
577 wxTimer ToolbarAnimateTimer;
578 int m_nMasterToolCountShown;
579 wxTimer m_recaptureTimer;
581 std::unique_ptr<LoadErrorsDlgCtrl> m_load_errors_dlg_ctrl;
582 wxString m_gshhg_chart_loc;
585 ObservableListener listener_basic_navdata;
586 ObservableListener listener_gps_watchdog;
587 obs::Listener m_on_raise_listener;
588 obs::Listener m_on_quit_listener;
589 obs::Listener m_routes_update_listener;
590 obs::Listener m_evt_drv_msg_listener;
591 obs::Listener m_update_statusbar_listener;
592 obs::Listener m_center_aistarget_listener;
593 obs::Listener m_reload_charts_listener;
596 wxStatusBar* m_pStatusBar;
598 bool m_need_new_options;
599 wxArrayString pathArray;
600 double restoreScale[4];
601 unsigned int last_canvasConfig;
603 wxAuiDefaultDockArt* m_pauidockart;
605 OpenFileFunc m_open_gpx_file;
607 void CenterAisTarget(
const std::shared_ptr<const AisTargetData>& ais_target);
609 DECLARE_EVENT_TABLE()