25 #ifndef _NAVOBJECTCOLLECTION_H__
26 #define _NAVOBJECTCOLLECTION_H__
31 #include <wx/checkbox.h>
32 #include <wx/string.h>
34 #include "pugixml.hpp"
36 #include "observable_evtvar.h"
46 #define OUT_TYPE 1 << 1
47 #define OUT_TIME 1 << 2
48 #define OUT_NAME 1 << 3
49 #define OUT_NAME_FORCE 1 << 4
50 #define OUT_DESC 1 << 5
51 #define OUT_DESC_FORCE 1 << 6
52 #define OUT_SYM_FORCE 1 << 7
53 #define OUT_GUID 1 << 8
54 #define OUT_VIZ 1 << 9
55 #define OUT_VIZ_NAME 1 << 10
56 #define OUT_SHARED 1 << 11
57 #define OUT_AUTO_NAME \
59 #define OUT_HYPERLINKS 1 << 13
60 #define OUT_ACTION_ADD 1 << 14
61 #define OUT_ACTION_DEL 1 << 15
62 #define OUT_ACTION_UPD 1 << 16
63 #define OUT_EXTENSION 1 << 17
64 #define OUT_ARRIVAL_RADIUS 1 << 18
65 #define OUT_WAYPOINT_RANGE_RINGS 1 << 19
66 #define OUT_WAYPOINT_SCALE 1 << 20
67 #define OUT_TIDE_STATION 1 << 21
68 #define OUT_RTE_PROPERTIES 1 << 22
70 #define OPT_TRACKPT OUT_TIME
72 (OUT_TYPE) + (OUT_TIME) + (OUT_NAME) + (OUT_DESC) + (OUT_SYM_FORCE) + \
73 (OUT_GUID) + (OUT_VIZ) + (OUT_VIZ_NAME) + (OUT_SHARED) + \
74 (OUT_AUTO_NAME) + (OUT_HYPERLINKS) + (OUT_ARRIVAL_RADIUS) + \
75 (OUT_WAYPOINT_RANGE_RINGS) + (OUT_WAYPOINT_SCALE) + (OUT_TIDE_STATION)
76 #define OPT_ROUTEPT OPT_WPT + (OUT_RTE_PROPERTIES)
80 #define RT_OUT_ACTION_ADD 1 << 1
81 #define RT_OUT_ACTION_DEL 1 << 2
82 #define RT_OUT_ACTION_UPD 1 << 3
83 #define RT_OUT_NO_RTPTS 1 << 4
88 RoutePoint *WaypointExists(
const wxString &name,
double lat,
double lon);
89 RoutePoint *WaypointExists(
const wxString &guid);
90 Route *RouteExists(
const wxString &guid);
92 Track *TrackExists(
const wxString &guid);
96 Route *GPXLoadRoute1(pugi::xml_node &wpt_node,
bool b_fullviz,
bool b_layer,
97 bool b_layerviz,
int layer_id,
bool b_change,
bool load_points =
true);
99 RoutePoint *GPXLoadWaypoint1(pugi::xml_node &wpt_node, wxString symbol_name,
100 wxString GUID,
bool b_fullviz,
bool b_layer,
101 bool b_layerviz,
int layer_id);
105 bool InsertTrack(
Track* pTentTrack,
bool bApplyChanges =
false);
106 bool InsertWpt(
RoutePoint* pWp,
bool overwrite);
109 Track *GPXLoadTrack1(pugi::xml_node &trk_node,
bool b_fullviz,
110 bool b_layer,
bool b_layerviz,
int layer_id);
117 bool CreateNavObjGPXPoints(
void);
118 bool CreateNavObjGPXRoutes(
void);
119 bool CreateNavObjGPXTracks(
void);
121 void AddGPXRoutesList(RouteList *pRoutes);
122 void AddGPXTracksList(std::vector<Track*> *pTracks);
123 bool AddGPXPointsList(RoutePointList *pRoutePoints);
124 bool AddGPXRoute(
Route *pRoute);
125 bool AddGPXTrack(
Track *pTrk);
128 bool CreateAllGPXObjects();
129 bool LoadAllGPXObjects(
bool b_full_viz,
int &wpt_duplicates,
130 bool b_compute_bbox =
false);
131 int LoadAllGPXObjectsAsLayer(
int layer_id,
bool b_layerviz,
132 wxCheckBoxState b_namesviz);
134 bool SaveFile(
const wxString filename);
136 void SetRootGPXNode(
void);
138 LLBBox &GetBBox() {
return BBox; };
141 bool m_bSkipChangeSetUpdate;
148 static std::unique_ptr<NavObjectChanges> getTempInstance() {
158 void Init(
const wxString& path) {
160 m_changes_file = fopen(m_filename.mb_str(),
"a");
167 void AddRoute(
Route *pr,
const char *action);
168 void AddTrack(
Track *pr,
const char *action);
169 void AddWP(
RoutePoint *pr,
const char *action);
170 void AddTrackPoint(
TrackPoint *pWP,
const char *action,
171 const wxString &parent_GUID);
173 virtual void AddNewRoute(
Route *pr);
174 virtual void UpdateRoute(
Route *pr);
175 virtual void DeleteConfigRoute(
Route *pr);
177 virtual void AddNewTrack(
Track *pt);
178 virtual void UpdateTrack(
Track *pt);
179 virtual void DeleteConfigTrack(
Track *pt);
181 virtual void AddNewWayPoint(
RoutePoint *pWP,
int ConfigRouteNum = -1);
184 virtual void AddNewTrackPoint(
TrackPoint *pWP,
const wxString &parent_GUID);
186 bool ApplyChanges(
void);
187 bool IsDirty() {
return m_bdirty; }
209 FILE *m_changes_file;
Generic event handling between MVC Model and Controller based on a shared EventVar variable.
EventVar evt_delete_track
Notified when Routeman (?) should delete a track.
EventVar evt_delete_route
Notified when Routeman (?) should delete a Route*.