178 bool RenderAllCanvasOverlayPlugIns(
ocpnDC& dc,
const ViewPort& vp,
179 int canvasIndex,
int priority);
180 bool RenderAllGLCanvasOverlayPlugIns(wxGLContext* pcontext,
181 const ViewPort& vp,
int canvasIndex,
184 void SendViewPortToRequestingPlugIns(
ViewPort& vp);
185 void PrepareAllPluginContextMenus();
187 void NotifySetupOptions();
189 void CloseAllPlugInPanels(
int);
191 ArrayOfPlugInToolbarTools& GetPluginToolbarToolArray() {
192 return m_PlugInToolbarTools;
194 int AddToolbarTool(wxString label, wxBitmap* bitmap, wxBitmap* bmpRollover,
195 wxItemKind kind, wxString shortHelp, wxString longHelp,
196 wxObject* clientData,
int position,
int tool_sel,
199 void RemoveToolbarTool(
int tool_id);
200 void SetToolbarToolViz(
int tool_id,
bool viz);
201 void SetToolbarItemState(
int tool_id,
bool toggle);
202 void SetToolbarItemBitmaps(
int item, wxBitmap* bitmap, wxBitmap* bmpDisabled);
204 int AddToolbarTool(wxString label, wxString SVGfile, wxString SVGRolloverfile,
205 wxString SVGToggledfile, wxItemKind kind,
206 wxString shortHelp, wxString longHelp,
207 wxObject* clientData,
int position,
int tool_sel,
210 void SetToolbarItemBitmaps(
int item, wxString SVGfile,
211 wxString SVGfileRollover, wxString SVGfileToggled);
214 wxString GetToolOwnerCommonName(
const int id);
215 void ShowDeferredBlacklistMessages();
217 ArrayOfPlugInMenuItems& GetPluginContextMenuItemArray() {
218 return m_PlugInMenuItems;
220 int AddCanvasContextMenuItemPIM(wxMenuItem* pitem,
opencpn_plugin* pplugin,
221 const char* name =
"",
222 bool is_extended =
false);
223 void RemoveCanvasContextMenuItem(
int item,
const char* name =
"");
224 void SetCanvasContextMenuItemViz(
int item,
bool viz,
const char* name =
"");
225 void SetCanvasContextMenuItemGrey(
int item,
bool grey,
const char* name =
"");
227 bool UpDateChartDataTypes();
228 void FinalizePluginLoadall();
231 void SendResizeEventToAllPlugIns(
int x,
int y);
232 void SetColorSchemeForAllPlugIns(ColorScheme cs);
233 void NotifyAuiPlugIns(
void);
234 bool CallLateInit(
void);
236 bool IsAnyPlugInChartEnabled();
238 void SendBaseConfigToAllPlugIns();
239 void SendS52ConfigToAllPlugIns(
bool bReconfig =
false);
240 void SendSKConfigToAllPlugIns();
242 void UpdateManagedPlugins();
245 void InitCommListeners(
void);
253 void HandleN0183(std::shared_ptr<const Nmea0183Msg> n0183_msg);
261 void HandleSignalK(std::shared_ptr<const SignalkMsg> sK_msg);
263 wxArrayString GetPlugInChartClassNameArray(
void);
264 opencpn_plugin* GetProvidingPlugin(
const wxString& ChartClassName);
267 float zlat,
float zlon,
271 ListOfPI_S57Obj* rule_list);
273 wxString GetLastError();
276 void DimeWindow(wxWindow* win);
280 ListOfPI_S57Obj* GetLightsObjRuleListVisibleAtLatLon(
284 bool CheckBlacklistedPlugin(wxString name,
int major,
int minor);
286 void OnNewMessageType();
307 std::unordered_map<std::string, ObsListener> m_0183_listeners;
309 wxBitmap* BuildDimmedToolBitmap(wxBitmap* pbmp_normal,
310 unsigned char dim_ratio);
315 void HandlePluginLoaderEvents();
316 void HandlePluginHandlerEvents();
319 std::unique_ptr<BlacklistUI> m_blacklist_ui;
321 wxString m_last_error_string;
323 ArrayOfPlugInMenuItems m_PlugInMenuItems;
324 ArrayOfPlugInToolbarTools m_PlugInToolbarTools;
326 wxString m_plugin_location;
328 int m_plugin_tool_id_next;
329 int m_plugin_menu_item_id_next;
330 wxBitmap m_cached_overlay_bm;
332 wxArrayString m_plugin_order;
333 void SetPluginOrder(wxString serialized_names);
334 wxString GetPluginOrder();
338 std::unique_ptr<AbstractBlacklist> m_blacklist;
344 wxCurlDownloadThread* m_pCurlThread;
346 std::shared_ptr<wxCurlBase> m_pCurl;
349 bool HandleCurlThreadError(wxCurlThreadError err, wxCurlBaseThread* p,
350 const wxString& url = wxEmptyString);
351 void OnEndPerformCurlDownload(wxCurlEndPerformEvent& ev);
352 void OnCurlDownload(wxCurlDownloadEvent& ev);
354 wxEvtHandler* m_download_evHandler;
355 long* m_downloadHandle;
357 long m_last_online_chk;
361 DECLARE_EVENT_TABLE()
453 DECLARE_EVENT_TABLE()
458 PluginPanel(wxPanel* parent, wxWindowID
id,
const wxPoint& pos,
462 PluginPanel(wxPanel* parent, wxWindowID
id,
const wxPoint& pos,
466 PluginPanel(wxPanel* parent,
const std::string& name);
470 void OnPluginSelected(wxMouseEvent& event);
471 void OnPluginSelectedUp(wxMouseEvent& event);
472 void DoPluginSelect();
474 void SetSelected(
bool selected);
475 void OnPluginPreferences(wxCommandEvent& event);
476 void OnPluginEnableToggle(wxCommandEvent& event);
477 void OnPluginAction(wxCommandEvent& event);
478 void OnPluginUninstall(wxCommandEvent& event);
479 void OnPluginUp(wxCommandEvent& event);
480 void OnPluginDown(wxCommandEvent& event);
481 void SetEnabled(
bool enabled);
482 bool GetSelected() {
return m_bSelected; }
483 const PlugInData* GetPluginPtr() {
return &m_plugin; };
484 void SetActionLabel(wxString& label);
485 ActionVerb GetAction() {
return m_action; }
486 const PlugInData* GetPlugin() {
return &m_plugin; }
487 void OnPaint(wxPaintEvent& event);
493 wxStaticText* m_pName;
494 wxStaticText* m_pVersion;
495 wxStaticText* m_pDescription;
496 wxBoxSizer* m_pButtons;
497 wxStaticBitmap* m_itemStaticBitmap;
498 wxStaticBitmap* m_itemStatusIconBitmap;
499 wxButton* m_pButtonPreferences;
500 wxButton *m_pButtonAction, *m_pButtonUninstall;
502 wxCheckBox* m_cbEnable;
505 int m_penWidthUnselected, m_penWidthSelected;
506 bool m_is_safe_panel;