94 bool SaveConfig(
void);
95 bool ProcessFile(
const wxString& aFile,
const wxString& aTargetDir,
96 bool aStripPath =
true,
97 wxDateTime aMTime = wxDateTime::Now());
98 bool ExtractZipFiles(
const wxString& aZipFile,
const wxString& aTargetDir,
99 bool aStripPath =
true,
100 wxDateTime aMTime = wxDateTime::Now(),
101 bool aRemoveZip =
false);
102#ifdef DLDR_USE_LIBARCHIVE
103 bool ExtractLibArchiveFiles(
const wxString& aArchiveFile,
104 const wxString& aTargetDir,
105 bool aStripPath =
true,
106 wxDateTime aMTime = wxDateTime::Now(),
107 bool aRemoveArchive =
false);
109#if defined(CHARTDLDR_RAR_UNARR) || !defined(DLDR_USE_LIBARCHIVE)
110 bool ExtractUnarrFiles(
const wxString& aRarFile,
const wxString& aTargetDir,
111 bool aStripPath =
true,
112 wxDateTime aMTime = wxDateTime::Now(),
113 bool aRemoveRar =
false);
119 std::vector<std::unique_ptr<ChartSource>> m_ChartSources;
120 wxWindow* m_parent_window;
123 void SetSourceId(
int id) { m_selected_source = id; }
124 int GetSourceId() {
return m_selected_source; }
125 wxString GetBaseChartDir() {
return m_base_chart_dir; }
126 bool m_preselect_new;
127 bool m_preselect_updated;
128 bool m_allow_bulk_update;
131 wxFileConfig* m_pconfig;
132 wxScrolledWindow* m_pOptionsPage;
133 bool LoadConfig(
void);
135 wxString m_schartdldr_sources;
136 int m_selected_source;
139 wxString m_base_chart_dir;
144 ChartSource(wxString name, wxString url, wxString localdir);
147 wxString GetName() {
return m_name; }
148 wxString GetUrl() {
return m_url; }
149 wxString GetDir() {
return m_dir; }
150 void SetDir(wxString dir) { m_dir = dir; }
151 void SetName(wxString name) { m_name = name; }
152 void SetUrl(wxString url) { m_url = url; }
153 bool ExistsLocaly(wxString chart_number, wxString filename);
154 bool IsNewerThanLocal(wxString chart_number, wxString filename,
155 wxDateTime validDate);
156 void UpdateLocalFiles() { GetLocalFiles(); }
158 bool UpdateDataExists();
159 void LoadUpdateData();
160 void SaveUpdateData();
161 void ChartUpdated(wxString chart_number, time_t timestamp);
164 wxArrayString m_localfiles;
165 std::vector<wxDateTime> m_localdt;
166 void GetLocalFiles();
170 std::map<std::string, time_t> m_update_data;
178 bool DownloadChart(wxString url, wxString file, wxString title);
183 bool DownloadIsCancel;
187 void OnPopupClick(wxCommandEvent& evt);
188 int GetSelectedCatalog();
189 void AppendCatalog(std::unique_ptr<ChartSource>& cs);
192 bool m_bTransferComplete;
193 bool m_bTransferSuccess;
195 long m_transferredsize;
196 int m_failed_downloads;
199 void DisableForDownload(
bool enabled);
203 size_t m_updatedCharts;
207 void SetSource(
int id);
208 void SelectSource(wxListEvent& event)
override;
209 void AddSource(wxCommandEvent& event)
override;
210 void DeleteSource(wxCommandEvent& event)
override;
211 void EditSource(wxCommandEvent& event)
override;
212 void UpdateChartList(wxCommandEvent& event)
override;
213 void OnDownloadCharts(wxCommandEvent& event)
override;
215 void OnSelectChartItem(wxCommandEvent& event);
216 void OnSelectNewCharts(wxCommandEvent& event);
217 void OnSelectUpdatedCharts(wxCommandEvent& event);
218 void OnSelectAllCharts(wxCommandEvent& event);
221 void DoHelp(wxCommandEvent& event)
override {
224 _T(
"plugins/chartdldr_pi/data/doc/index.html"));
227 _T(
"plugins/chartdldr_pi/data/doc/index.html"));
230 void UpdateAllCharts(wxCommandEvent& event)
override;
231 void OnShowLocalDir(wxCommandEvent& event)
override;
232 void OnPaint(wxPaintEvent& event)
override;
233 void OnLeftDClick(wxMouseEvent& event)
override;
236 void FillFromFile(wxString url, wxString dir,
bool selnew =
false,
237 bool selupd =
false);
239 void OnContextMenu(wxMouseEvent& event)
override;
240 void SetBulkUpdate(
bool bulk_update);
243 int GetCheckedChartCount();
244 bool isChartChecked(
int i);
245 void CheckAllCharts(
bool value);
246 void InvertCheckAllCharts();
248 void CheckNewCharts(
bool value);
249 void CheckUpdatedCharts(
bool value);
255 wxWindowID
id = wxID_ANY,
256 const wxPoint& pos = wxDefaultPosition,
257 const wxSize& size = wxDefaultSize,
258 long style = wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);
259 void SelectCatalog(
int item);
261 void CancelDownload() {
263 wxEVT_DOWNLOAD_EVENT,
264 (wxObjectEventFunction)(wxEventFunction)&ChartDldrPanelImpl::onDLEvent);
266 m_bconnected =
false;
270 DECLARE_EVENT_TABLE()
275 void OnChangeType(wxCommandEvent& event);
276 void OnSourceSelected(wxTreeEvent& event);
277 void OnOkClick(wxCommandEvent& event);
278 void OnCancelClick(wxCommandEvent& event);
281 bool LoadSections(
const wxTreeItemId& root,
pugi::xml_node& node);
283 bool LoadCatalogs(
const wxTreeItemId& root,
pugi::xml_node& node);
289 void SetBasePath(
const wxString path) { m_base_path = path; }
290 void SetSourceEdit(std::unique_ptr<ChartSource>& cs);
293 bool ValidateUrl(
const wxString Url,
bool catalog_xml =
true);
294 wxString FixPath(wxString path);
295 wxString m_base_path;
296 wxString m_last_path;
297 wxImageList* p_iconList;
298#ifdef __OCPN__ANDROID__
299 wxImageList* p_buttonIconList;