OpenCPN Partial API docs
Loading...
Searching...
No Matches
RoutePropDlg.cpp
1
2// C++ code generated with wxFormBuilder (version Oct 26 2018)
3// http://www.wxformbuilder.org/
4//
5// PLEASE DO *NOT* EDIT THIS FILE! //did that. despite warning.
7
8#include <wx/button.h>
9#include <wx/choice.h>
10#include <wx/dataview.h>
11#include <wx/datectrl.h>
12#include <wx/datetime.h>
13#include <wx/font.h>
14#include <wx/gdicmn.h>
15#include <wx/menuitem.h>
16#include <wx/notebook.h>
17#include <wx/scrolwin.h>
18#include <wx/sizer.h>
19#include <wx/stattext.h>
20#include <wx/string.h>
21#include <wx/textctrl.h>
22#include <wx/timectrl.h>
23#include <wx/window.h>
24
25#include "gui_lib.h"
26#include "model/nav_object_database.h"
27#include "model/ocpn_types.h"
28#include "routeman_gui.h"
29#include "model/routeman.h"
30#include "routemanagerdialog.h"
31#include "RoutePropDlg.h"
32#include "RoutePropDlgImpl.h"
33#include "styles.h"
34
35#if wxCHECK_VERSION(3, 1, 2)
36#define CELL_EDITABLE wxDATAVIEW_CELL_EDITABLE
37#else
38#define CELL_EDITABLE wxDATAVIEW_CELL_INERT
39#endif
40
42BEGIN_EVENT_TABLE(RoutePropDlg, DIALOG_PARENT)
43#ifdef __OCPN__ANDROID__
44EVT_CHAR(RoutePropDlg::OnKeyChar)
45#endif
46END_EVENT_TABLE()
47
48extern Routeman* g_pRouteMan;
49extern RoutePropDlgImpl* pRoutePropDialog;
50extern RouteManagerDialog* pRouteManagerDialog;
51
52RoutePropDlgCtx RoutePropDlg::GetDlgCtx() {
53 struct RoutePropDlgCtx ctx;
54 ctx.set_route_and_update = [&](Route* r) {
55 if (pRoutePropDialog && (pRoutePropDialog->IsShown())) {
56 pRoutePropDialog->SetRouteAndUpdate(r, true);
57 }
58 };
59 ctx.set_enroute_point = [&](Route* r, RoutePoint* rt) {
60 if (pRoutePropDialog && pRoutePropDialog->IsShown()) {
61 if (pRoutePropDialog->GetRoute() == r) {
62 pRoutePropDialog->SetEnroutePoint(rt);
63 }
64 }
65 };
66 ctx.hide = [&](Route* r) {
67 if (pRoutePropDialog && (pRoutePropDialog->IsShown()) &&
68 (r == pRoutePropDialog->GetRoute())) {
69 pRoutePropDialog->Hide();
70 }
71 };
72 auto RouteMgrDlgUpdateListCtrl = [&]() {
73 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
74 pRouteManagerDialog->UpdateRouteListCtrl();
75 };
76 return ctx;
77}
78
79RoutePropDlg::RoutePropDlg(wxWindow* parent, wxWindowID id,
80 const wxString& title, const wxPoint& pos,
81 const wxSize& size, long style)
82 : DIALOG_PARENT(parent, id, title, pos, size, style) {
83 wxFont* qFont = GetOCPNScaledFont(_("Dialog"));
84 SetFont(*qFont);
85
86 this->SetSizeHints(wxSize(300, 300), wxDefaultSize);
87
88 wxBoxSizer* bSizerMain;
89 bSizerMain = new wxBoxSizer(wxVERTICAL);
90
91 m_ntbRteProp =
92 new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
93 m_pnlBasic = new wxPanel(m_ntbRteProp, wxID_ANY, wxDefaultPosition,
94 wxDefaultSize, wxTAB_TRAVERSAL);
95 wxBoxSizer* bSizerData;
96 bSizerData = new wxBoxSizer(wxVERTICAL);
97
98 wxBoxSizer* bSizerName;
99 bSizerName = new wxBoxSizer(wxHORIZONTAL);
100
101 m_stName = new wxStaticText(m_pnlBasic, wxID_ANY, _("Name"),
102 wxDefaultPosition, wxDefaultSize, 0);
103 m_stName->Wrap(-1);
104 bSizerName->Add(m_stName, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
105
106 m_tcName = new wxTextCtrl(m_pnlBasic, wxID_ANY, wxEmptyString,
107 wxDefaultPosition, wxDefaultSize, 0);
108 bSizerName->Add(m_tcName, 1, wxALL, 5);
109
110 bSizerData->Add(bSizerName, 0, wxEXPAND, 5);
111
112 wxBoxSizer* bSizerFromTo;
113 bSizerFromTo = new wxBoxSizer(wxHORIZONTAL);
114
115 m_stFrom = new wxStaticText(m_pnlBasic, wxID_ANY, _("From"),
116 wxDefaultPosition, wxDefaultSize, 0);
117 m_stFrom->Wrap(-1);
118 bSizerFromTo->Add(m_stFrom, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
119
120 m_tcFrom = new wxTextCtrl(m_pnlBasic, wxID_ANY, wxEmptyString,
121 wxDefaultPosition, wxDefaultSize, 0);
122 bSizerFromTo->Add(m_tcFrom, 1, wxALL, 5);
123
124 m_stTo = new wxStaticText(m_pnlBasic, wxID_ANY, _("To"), wxDefaultPosition,
125 wxDefaultSize, 0);
126 m_stTo->Wrap(-1);
127 bSizerFromTo->Add(m_stTo, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
128
129 m_tcTo = new wxTextCtrl(m_pnlBasic, wxID_ANY, wxEmptyString,
130 wxDefaultPosition, wxDefaultSize, 0);
131 bSizerFromTo->Add(m_tcTo, 1, wxALL, 5);
132
133 bSizerData->Add(bSizerFromTo, 0, wxEXPAND, 5);
134
135 wxWrapSizer* wSizerParams;
136 wSizerParams = new wxWrapSizer(wxHORIZONTAL, wxEXTEND_LAST_ON_EACH_LINE |
137 wxREMOVE_LEADING_SPACES |
138 wxWRAPSIZER_DEFAULT_FLAGS);
139
140 int maxFieldSize = GetCharWidth() * 10;
141
142 wxBoxSizer* bSizerDistance;
143 bSizerDistance = new wxBoxSizer(wxVERTICAL);
144
145 m_stDistTotal = new wxStaticText(m_pnlBasic, wxID_ANY, _("Distance"),
146 wxDefaultPosition, wxDefaultSize, 0);
147 m_stDistTotal->Wrap(-1);
148 bSizerDistance->Add(m_stDistTotal, 0, wxALL, 5);
149
150 m_tcDistance =
151 new wxTextCtrl(m_pnlBasic, wxID_ANY, wxEmptyString, wxDefaultPosition,
152 wxDefaultSize, wxTE_READONLY);
153 m_tcDistance->SetMaxSize(wxSize(maxFieldSize, -1));
154 m_tcDistance->SetMinSize(wxSize(maxFieldSize, -1));
155
156 bSizerDistance->Add(m_tcDistance, 0, wxALL | wxEXPAND, 5);
157
158 wSizerParams->Add(bSizerDistance, 1, wxEXPAND, 0);
159
160 wxBoxSizer* bSizerSpeed;
161 bSizerSpeed = new wxBoxSizer(wxVERTICAL);
162
163 m_stPlanSpeed = new wxStaticText(m_pnlBasic, wxID_ANY, _("Plan speed"),
164 wxDefaultPosition, wxDefaultSize, 0);
165 m_stPlanSpeed->Wrap(-1);
166 bSizerSpeed->Add(m_stPlanSpeed, 0, wxALL, 5);
167
168 m_tcPlanSpeed =
169 new wxTextCtrl(m_pnlBasic, wxID_ANY, wxEmptyString, wxDefaultPosition,
170 wxDefaultSize, wxTE_PROCESS_ENTER);
171 m_tcPlanSpeed->SetMaxSize(wxSize(maxFieldSize, -1));
172 m_tcPlanSpeed->SetMinSize(wxSize(maxFieldSize, -1));
173
174 bSizerSpeed->Add(m_tcPlanSpeed, 0, wxALL, 5);
175
176 wSizerParams->Add(bSizerSpeed, 1, wxEXPAND, 0);
177
178 //
179 wxBoxSizer* bSizerEnroute;
180 bSizerEnroute = new wxBoxSizer(wxVERTICAL);
181
182 m_stEnroute = new wxStaticText(m_pnlBasic, wxID_ANY, _("Enroute"),
183 wxDefaultPosition, wxDefaultSize, 0);
184 m_stEnroute->Wrap(-1);
185 bSizerEnroute->Add(m_stEnroute, 0, wxALL, 5);
186
187 m_tcEnroute = new wxTextCtrl(m_pnlBasic, wxID_ANY, wxEmptyString,
188 wxDefaultPosition, wxDefaultSize, wxTE_READONLY);
189 m_tcEnroute->SetMaxSize(wxSize(maxFieldSize, -1));
190 m_tcEnroute->SetMinSize(wxSize(maxFieldSize, -1));
191
192 bSizerEnroute->Add(m_tcEnroute, 0, wxALL, 5);
193
194 wSizerParams->Add(bSizerEnroute, 1, wxEXPAND, 0);
195
196 //
197 wxBoxSizer* bSizerDeparture;
198 bSizerDeparture = new wxBoxSizer(wxVERTICAL);
199
200 m_stDeparture = new wxStaticText(m_pnlBasic, wxID_ANY, _("Departure"),
201 wxDefaultPosition, wxDefaultSize, 0);
202 m_stDeparture->Wrap(-1);
203 bSizerDeparture->Add(m_stDeparture, 0, wxALL, 5);
204
205 wxBoxSizer* bSizerDepartureTS;
206 bSizerDepartureTS = new wxBoxSizer(wxHORIZONTAL);
207 bSizerDeparture->Add(bSizerDepartureTS, 0, 0, 5);
208
209 m_dpDepartureDate =
210 new wxDatePickerCtrl(m_pnlBasic, wxID_ANY, wxDefaultDateTime,
211 wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT);
212 bSizerDepartureTS->Add(m_dpDepartureDate, 0, wxALIGN_CENTER_VERTICAL | wxALL,
213 5);
214#ifdef __ANDROID__
215 int ys = GetCharHeight();
216 m_dpDepartureDate->SetMinSize(wxSize(-1, ys * 15 / 10));
217#endif
218
219#ifdef __WXGTK__
220 m_tpDepartureTime = new TimeCtrl(m_pnlBasic, wxID_ANY, wxDefaultDateTime,
221 wxDefaultPosition, wxDefaultSize);
222#else
223 m_tpDepartureTime =
224 new wxTimePickerCtrl(m_pnlBasic, wxID_ANY, wxDefaultDateTime,
225 wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT);
226#endif
227 bSizerDepartureTS->Add(m_tpDepartureTime, 0, wxALIGN_CENTER_VERTICAL | wxALL,
228 5);
229
230 wSizerParams->Add(bSizerDeparture, 1, wxEXPAND, 0);
231
232 wxBoxSizer* bSizerTime;
233 bSizerTime = new wxBoxSizer(wxVERTICAL);
234
235 m_stTimeZone = new wxStaticText(m_pnlBasic, wxID_ANY, _("Time"),
236 wxDefaultPosition, wxDefaultSize, 0);
237 m_stTimeZone->Wrap(-1);
238 bSizerTime->Add(m_stTimeZone, 0, wxALL, 5);
239
240 // Timezone for departure time and ETA display.
241 wxString m_choiceTimezoneChoices[] = {_("UTC"), _("Local@PC"),
242 _("LMT@Location")};
243 int m_choiceTimezoneNChoices =
244 sizeof(m_choiceTimezoneChoices) / sizeof(wxString);
245 m_choiceTimezone =
246 new wxChoice(m_pnlBasic, wxID_ANY, wxDefaultPosition, wxDefaultSize,
247 m_choiceTimezoneNChoices, m_choiceTimezoneChoices, 0);
248 m_choiceTimezone->SetSelection(0);
249 m_choiceTimezone->SetMaxSize(wxSize(GetCharWidth() * 12, -1));
250
251 bSizerTime->Add(m_choiceTimezone, 0, wxALL, 5);
252
253 wSizerParams->Add(bSizerTime, 1, wxEXPAND, 0);
254
255 wxBoxSizer* bSizerColor;
256 bSizerColor = new wxBoxSizer(wxVERTICAL);
257
258 m_staticTextColor = new wxStaticText(m_pnlBasic, wxID_ANY, _("Color"),
259 wxDefaultPosition, wxDefaultSize, 0);
260 m_staticTextColor->Wrap(-1);
261 bSizerColor->Add(m_staticTextColor, 0, wxALL, 5);
262
263 wxString m_choiceColorChoices[] = {
264 _("Default color"), _("Black"), _("Dark Red"), _("Dark Green"),
265 _("Dark Yellow"), _("Dark Blue"), _("Dark Magenta"), _("Dark Cyan"),
266 _("Light Gray"), _("Dark Gray"), _("Red"), _("Green"),
267 _("Yellow"), _("Blue"), _("Magenta"), _("Cyan"),
268 _("White")};
269 int m_choiceColorNChoices = sizeof(m_choiceColorChoices) / sizeof(wxString);
270 m_choiceColor =
271 new wxChoice(m_pnlBasic, wxID_ANY, wxDefaultPosition, wxDefaultSize,
272 m_choiceColorNChoices, m_choiceColorChoices, 0);
273 m_choiceColor->SetSelection(0);
274 bSizerColor->Add(m_choiceColor, 0, wxALL, 5);
275
276 wSizerParams->Add(bSizerColor, 1, wxEXPAND, 5);
277
278 wxBoxSizer* bSizerStyle;
279 bSizerStyle = new wxBoxSizer(wxVERTICAL);
280
281 m_stStyle = new wxStaticText(m_pnlBasic, wxID_ANY, _("Style"),
282 wxDefaultPosition, wxDefaultSize, 0);
283 m_stStyle->Wrap(-1);
284 bSizerStyle->Add(m_stStyle, 0, wxALL, 5);
285
286 wxString m_choiceStyleChoices[] = {_("Default"), _("Solid"), _("Dot"),
287 _("Long dash"), _("Short dash")};
288 int m_choiceStyleNChoices = sizeof(m_choiceStyleChoices) / sizeof(wxString);
289 m_choiceStyle =
290 new wxChoice(m_pnlBasic, wxID_ANY, wxDefaultPosition, wxDefaultSize,
291 m_choiceStyleNChoices, m_choiceStyleChoices, 0);
292 m_choiceStyle->SetSelection(0);
293 bSizerStyle->Add(m_choiceStyle, 0, wxALL, 5);
294
295 wSizerParams->Add(bSizerStyle, 1, wxEXPAND, 5);
296
297 wxBoxSizer* bSizerWidth;
298 bSizerWidth = new wxBoxSizer(wxVERTICAL);
299
300 m_stWidth = new wxStaticText(m_pnlBasic, wxID_ANY, _("Width"),
301 wxDefaultPosition, wxDefaultSize, 0);
302 m_stWidth->Wrap(-1);
303 bSizerWidth->Add(m_stWidth, 0, wxALL, 5);
304
305 wxString m_choiceWidthChoices[] = {
306 _("Default"), _("1 px"), _("2px"), _("3 px"), _("4 px"), _("5 px"),
307 _("6 px"), _("7 px"), _("8 px"), _("9 px"), _("10 px")};
308 int m_choiceWidthNChoices = sizeof(m_choiceWidthChoices) / sizeof(wxString);
309 m_choiceWidth =
310 new wxChoice(m_pnlBasic, wxID_ANY, wxDefaultPosition, wxDefaultSize,
311 m_choiceWidthNChoices, m_choiceWidthChoices, 0);
312 m_choiceWidth->SetSelection(0);
313 bSizerWidth->Add(m_choiceWidth, 0, wxALL, 5);
314
315 wSizerParams->Add(bSizerWidth, 1, wxEXPAND, 5);
316
317 // wxDataViewListCtrl has some platform dependent variability
318 // We account for this here...
319
320 wxString toLabel = _("To waypoint");
321
322#ifdef __WXQT__ // includes Android
323 int columWidths[] = {
324 wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE,
325 wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE,
326 wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE,
327 wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE,
328 wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE, wxCOL_WIDTH_AUTOSIZE};
329 int colFlags = 0;
330 toLabel = _("To WP");
331
332#else
333 int columWidths[] = {
334 30, // Leg
335 80, // To waypoint
336 70, // Distance to waypoint
337 60, // Bearing to waypoint
338 100, // Total Distance
339 90, // Latitude
340 90, // Longitude
341 80, // Estimated Time Enroute (ETE), i.e., duration of travel.
342 120, // Estimated Time of Arrival (ETA)
343 60, // Speed
344 100, // Next tide event
345 -1, // Description
346 80, // Course
347 120, // Estimated Time of Departure (ETD)
348 -1};
349 int colFlags = wxDATAVIEW_COL_RESIZABLE;
350
351#endif
352
353 bSizerData->Add(wSizerParams, 0, wxEXPAND, 0);
354
355 m_dvlcWaypoints =
356 new wxDataViewListCtrl(m_pnlBasic, wxID_ANY, wxDefaultPosition,
357 wxDefaultSize, wxDV_VERT_RULES | wxDV_HORIZ_RULES);
358 m_dataViewListColumnLeg = m_dvlcWaypoints->AppendTextColumn(
359 _("Leg"), wxDATAVIEW_CELL_INERT, columWidths[0],
360 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
361 m_dataViewListColumnLeg->GetRenderer()->EnableEllipsize(wxELLIPSIZE_NONE);
362 m_dataViewListColumnToWpt = m_dvlcWaypoints->AppendTextColumn(
363 toLabel, wxDATAVIEW_CELL_INERT, columWidths[1],
364 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
365 m_dataViewListColumnToWpt->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
366 m_dataViewListColumnDistance = m_dvlcWaypoints->AppendTextColumn(
367 _("Distance"), wxDATAVIEW_CELL_INERT, columWidths[2],
368 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
369 m_dataViewListColumnDistance->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
370 m_dataViewListColumnBearing = m_dvlcWaypoints->AppendTextColumn(
371 _("Bearing"), wxDATAVIEW_CELL_INERT, columWidths[3],
372 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
373 m_dataViewListColumnBearing->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
374 m_dataViewListColumnTotalDistance = m_dvlcWaypoints->AppendTextColumn(
375 _("Total Distance"), wxDATAVIEW_CELL_INERT, columWidths[4],
376 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
377 m_dataViewListColumnTotalDistance->GetRenderer()->EnableEllipsize(
378 wxELLIPSIZE_END);
379 m_dataViewListColumnLat = m_dvlcWaypoints->AppendTextColumn(
380 _("Latitude"), wxDATAVIEW_CELL_INERT, columWidths[5],
381 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
382 m_dataViewListColumnLat->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
383 m_dataViewListColumnLon = m_dvlcWaypoints->AppendTextColumn(
384 _("Longitude"), wxDATAVIEW_CELL_INERT, columWidths[6],
385 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
386 m_dataViewListColumnLon->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
387 m_dataViewListColumnETE = m_dvlcWaypoints->AppendTextColumn(
388 _("ETE"), wxDATAVIEW_CELL_INERT, columWidths[7],
389 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
390 m_dataViewListColumnETE->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
391 m_dataViewListColumnETA = m_dvlcWaypoints->AppendTextColumn(
392 _("ETA"), wxDATAVIEW_CELL_INERT, columWidths[8],
393 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
394 m_dataViewListColumnETA->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
395 m_dataViewListColumnSpeed = m_dvlcWaypoints->AppendTextColumn(
396 _("Speed"), CELL_EDITABLE, columWidths[9],
397 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
398 m_dataViewListColumnSpeed->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
399 m_dataViewListColumnNTE = m_dvlcWaypoints->AppendTextColumn(
400 _("Next tide event"), wxDATAVIEW_CELL_INERT, columWidths[10],
401 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
402 m_dataViewListColumnNTE->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
403 m_dataViewListColumnDesc = m_dvlcWaypoints->AppendTextColumn(
404 _("Description"), wxDATAVIEW_CELL_INERT, columWidths[11],
405 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
406 m_dataViewListColumnDesc->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
407 m_dataViewListColumnCourse = m_dvlcWaypoints->AppendTextColumn(
408 _("Course"), wxDATAVIEW_CELL_INERT, columWidths[12],
409 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
410 m_dataViewListColumnCourse->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
411 m_dataViewListColumnETD = m_dvlcWaypoints->AppendTextColumn(
412 _("ETD"), CELL_EDITABLE, columWidths[13],
413 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
414 m_dataViewListColumnETD->GetRenderer()->EnableEllipsize(wxELLIPSIZE_END);
415 m_dataViewListColumnEmpty = m_dvlcWaypoints->AppendTextColumn(
416 wxEmptyString, wxDATAVIEW_CELL_INERT, columWidths[14],
417 static_cast<wxAlignment>(wxALIGN_LEFT), colFlags);
418 bSizerData->Add(m_dvlcWaypoints, 1, wxALL | wxEXPAND, 5);
419
420 m_pnlBasic->SetSizer(bSizerData);
421 m_pnlBasic->Layout();
422 bSizerData->Fit(m_pnlBasic);
423 m_ntbRteProp->AddPage(m_pnlBasic, _("Basic"), false);
424 m_pnlAdvanced = new wxPanel(m_ntbRteProp, wxID_ANY, wxDefaultPosition,
425 wxDefaultSize, wxTAB_TRAVERSAL);
426 wxBoxSizer* bSizerAdvanced;
427 bSizerAdvanced = new wxBoxSizer(wxVERTICAL);
428
429 m_stDescription = new wxStaticText(m_pnlAdvanced, wxID_ANY, _("Description"),
430 wxDefaultPosition, wxDefaultSize, 0);
431 m_stDescription->Wrap(-1);
432 bSizerAdvanced->Add(m_stDescription, 0, wxALL, 5);
433
434 m_tcDescription =
435 new wxTextCtrl(m_pnlAdvanced, wxID_ANY, wxEmptyString, wxDefaultPosition,
436 wxDefaultSize, wxTE_MULTILINE);
437 bSizerAdvanced->Add(m_tcDescription, 0, wxALL | wxEXPAND, 5);
438
439 wxStaticBoxSizer* sbSizerLinks;
440 sbSizerLinks = new wxStaticBoxSizer(
441 new wxStaticBox(m_pnlAdvanced, wxID_ANY, _("Links")), wxVERTICAL);
442
443 m_scrolledWindowLinks = new wxScrolledWindow(
444 sbSizerLinks->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize,
445 wxHSCROLL | wxVSCROLL);
446 m_scrolledWindowLinks->SetScrollRate(5, 5);
447 wxBoxSizer* bSizerLinksWnd;
448 bSizerLinksWnd = new wxBoxSizer(wxVERTICAL);
449
450 bSizerLinks = new wxBoxSizer(wxVERTICAL);
451
452 m_hyperlink1 =
453 new wxHyperlinkCtrl(m_scrolledWindowLinks, wxID_ANY, _("wxFB Website"),
454 wxT("http://www.wxformbuilder.org"),
455 wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
456 m_hyperlink1->Enable(false);
457 m_hyperlink1->Hide();
458
459 m_menuLink = new wxMenu();
460 wxMenuItem* m_menuItemEdit;
461 m_menuItemEdit = new wxMenuItem(m_menuLink, wxID_ANY, wxString(_("Edit")),
462 wxEmptyString, wxITEM_NORMAL);
463 m_menuLink->Append(m_menuItemEdit);
464
465 wxMenuItem* m_menuItemAdd;
466 m_menuItemAdd = new wxMenuItem(m_menuLink, wxID_ANY, wxString(_("Add new")),
467 wxEmptyString, wxITEM_NORMAL);
468 m_menuLink->Append(m_menuItemAdd);
469
470 wxMenuItem* m_menuItemDelete;
471 m_menuItemDelete = new wxMenuItem(m_menuLink, wxID_ANY, wxString(_("Delete")),
472 wxEmptyString, wxITEM_NORMAL);
473 m_menuLink->Append(m_menuItemDelete);
474
475 m_hyperlink1->Connect(
476 wxEVT_RIGHT_DOWN,
477 wxMouseEventHandler(RoutePropDlg::m_hyperlink1OnContextMenu), NULL, this);
478
479 bSizerLinks->Add(m_hyperlink1, 0, wxALL, 5);
480
481 bSizerLinksWnd->Add(bSizerLinks, 1, wxEXPAND, 5);
482
483 wxBoxSizer* bSizerLinkBtns;
484 bSizerLinkBtns = new wxBoxSizer(wxHORIZONTAL);
485
486 m_btnAddLink = new wxButton(m_scrolledWindowLinks, wxID_ANY, _("Add"),
487 wxDefaultPosition, wxDefaultSize, 0);
488 bSizerLinkBtns->Add(m_btnAddLink, 0, wxALL, 5);
489
490 m_toggleBtnEdit =
491 new wxToggleButton(m_scrolledWindowLinks, wxID_ANY, _("Edit"),
492 wxDefaultPosition, wxDefaultSize, 0);
493 bSizerLinkBtns->Add(m_toggleBtnEdit, 0, wxALL, 5);
494
495 m_stEditEnabled =
496 new wxStaticText(m_scrolledWindowLinks, wxID_ANY,
497 _("Links are opened in the default browser."),
498 wxDefaultPosition, wxDefaultSize, 0);
499 m_stEditEnabled->Wrap(-1);
500 bSizerLinkBtns->Add(m_stEditEnabled, 0, wxALL, 5);
501
502 bSizerLinksWnd->Add(bSizerLinkBtns, 0, wxEXPAND, 5);
503
504 m_scrolledWindowLinks->SetSizer(bSizerLinksWnd);
505 m_scrolledWindowLinks->Layout();
506 bSizerLinksWnd->Fit(m_scrolledWindowLinks);
507 m_menuLinks = new wxMenu();
508 wxMenuItem* m_menuItemAddLink;
509 m_menuItemAddLink =
510 new wxMenuItem(m_menuLinks, wxID_ANY, wxString(_("Add new")),
511 wxEmptyString, wxITEM_NORMAL);
512 m_menuLinks->Append(m_menuItemAddLink);
513
514 m_scrolledWindowLinks->Connect(
515 wxEVT_RIGHT_DOWN,
516 wxMouseEventHandler(RoutePropDlg::m_scrolledWindowLinksOnContextMenu),
517 NULL, this);
518
519 sbSizerLinks->Add(m_scrolledWindowLinks, 1, wxEXPAND | wxALL, 5);
520
521 bSizerAdvanced->Add(sbSizerLinks, 1, wxEXPAND, 5);
522
523 m_pnlAdvanced->SetSizer(bSizerAdvanced);
524 m_pnlAdvanced->Layout();
525 bSizerAdvanced->Fit(m_pnlAdvanced);
526 m_ntbRteProp->AddPage(m_pnlAdvanced, _("Advanced"), false);
527
528 bSizerMain->Add(m_ntbRteProp, 1, wxEXPAND | wxALL, 5);
529
530 wxWrapSizer* wSizerCustomBtns;
531 wSizerCustomBtns = new wxWrapSizer(wxHORIZONTAL, wxWRAPSIZER_DEFAULT_FLAGS);
532
533 m_btnPrint = new wxButton(this, wxID_ANY, _("Print"), wxDefaultPosition,
534 wxDefaultSize, 0);
535 wSizerCustomBtns->Add(m_btnPrint, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
536
537#ifdef __OCPN__ANDROID__
538 m_btnPrint->Hide();
539#endif
540
541 m_btnExtend = new wxButton(this, wxID_ANY, _("Extend"), wxDefaultPosition,
542 wxDefaultSize, 0);
543 wSizerCustomBtns->Add(m_btnExtend, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
544
545 m_btnSplit = new wxButton(this, wxID_ANY, _("Split"), wxDefaultPosition,
546 wxDefaultSize, 0);
547 wSizerCustomBtns->Add(m_btnSplit, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
548
549 wSizerCustomBtns->Add(0, 0, 1, wxEXPAND, 5);
550
551 m_sdbSizerBtns = new wxStdDialogButtonSizer();
552 m_sdbSizerBtnsOK = new wxButton(this, wxID_OK);
553 m_sdbSizerBtns->AddButton(m_sdbSizerBtnsOK);
554 m_sdbSizerBtnsCancel = new wxButton(this, wxID_CANCEL, _("Cancel"));
555 m_sdbSizerBtns->AddButton(m_sdbSizerBtnsCancel);
556 m_sdbSizerBtns->Realize();
557
558 wSizerCustomBtns->Add(m_sdbSizerBtns, 1, wxEXPAND, 5);
559
560 bSizerMain->Add(wSizerCustomBtns, 0, wxEXPAND, 0);
561
562 this->SetSizer(bSizerMain);
563 this->Layout();
564
565 this->Centre(wxBOTH);
566
567 // Connect Events
568 this->Connect(wxEVT_CLOSE_WINDOW,
569 wxCloseEventHandler(RoutePropDlg::RoutePropDlgOnClose));
570 this->Connect(wxEVT_SIZE,
571 wxSizeEventHandler(RoutePropDlg::RoutePropDlgOnSize));
572 m_ntbRteProp->Connect(
573 wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
574 wxNotebookEventHandler(RoutePropDlg::RoutePropDlgOnNotebookPageChanged),
575 NULL, this);
576 m_tcPlanSpeed->Connect(
577 wxEVT_KILL_FOCUS, wxFocusEventHandler(RoutePropDlg::PlanSpeedOnKillFocus),
578 NULL, this);
579 m_tcPlanSpeed->Connect(
580 wxEVT_COMMAND_TEXT_ENTER,
581 wxCommandEventHandler(RoutePropDlg::PlanSpeedOnTextEnter), NULL, this);
582 m_tcPlanSpeed->Connect(
583 wxEVT_COMMAND_TEXT_UPDATED,
584 wxCommandEventHandler(RoutePropDlg::PlanSpeedOnTextEnter), NULL, this);
585 m_dpDepartureDate->Connect(
586 wxEVT_DATE_CHANGED,
587 wxDateEventHandler(RoutePropDlg::DepartureDateOnDateChanged), NULL, this);
588 m_tpDepartureTime->Connect(
589 wxEVT_TIME_CHANGED,
590 wxDateEventHandler(RoutePropDlg::DepartureTimeOnTimeChanged), NULL, this);
591 m_choiceTimezone->Connect(
592 wxEVT_COMMAND_CHOICE_SELECTED,
593 wxCommandEventHandler(RoutePropDlg::TimezoneOnChoice), NULL, this);
594 m_dvlcWaypoints->Connect(
595 wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU,
596 wxDataViewEventHandler(
597 RoutePropDlg::WaypointsOnDataViewListCtrlItemContextMenu),
598 NULL, this);
599 m_dvlcWaypoints->Connect(
600 wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE,
601 wxDataViewEventHandler(
602 RoutePropDlg::WaypointsOnDataViewListCtrlItemEditingDone),
603 NULL, this);
604 m_dvlcWaypoints->Connect(
605 wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED,
606 wxDataViewEventHandler(
607 RoutePropDlg::WaypointsOnDataViewListCtrlItemValueChanged),
608 NULL, this);
609 m_dvlcWaypoints->Connect(
610 wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED,
611 wxDataViewEventHandler(
612 RoutePropDlg::WaypointsOnDataViewListCtrlSelectionChanged),
613 NULL, this);
614 m_menuLink->Bind(wxEVT_COMMAND_MENU_SELECTED,
615 wxCommandEventHandler(RoutePropDlg::ItemEditOnMenuSelection),
616 this, m_menuItemEdit->GetId());
617 m_menuLink->Bind(wxEVT_COMMAND_MENU_SELECTED,
618 wxCommandEventHandler(RoutePropDlg::ItemAddOnMenuSelection),
619 this, m_menuItemAdd->GetId());
620 m_menuLink->Bind(
621 wxEVT_COMMAND_MENU_SELECTED,
622 wxCommandEventHandler(RoutePropDlg::ItemDeleteOnMenuSelection), this,
623 m_menuItemDelete->GetId());
624 m_btnAddLink->Connect(
625 wxEVT_COMMAND_BUTTON_CLICKED,
626 wxCommandEventHandler(RoutePropDlg::AddLinkOnButtonClick), NULL, this);
627 m_toggleBtnEdit->Connect(
628 wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,
629 wxCommandEventHandler(RoutePropDlg::BtnEditOnToggleButton), NULL, this);
630 m_menuLinks->Bind(wxEVT_COMMAND_MENU_SELECTED,
631 wxCommandEventHandler(RoutePropDlg::ItemAddOnMenuSelection),
632 this, m_menuItemAddLink->GetId());
633 m_btnPrint->Connect(wxEVT_COMMAND_BUTTON_CLICKED,
634 wxCommandEventHandler(RoutePropDlg::PrintOnButtonClick),
635 NULL, this);
636 m_btnExtend->Connect(wxEVT_COMMAND_BUTTON_CLICKED,
637 wxCommandEventHandler(RoutePropDlg::ExtendOnButtonClick),
638 NULL, this);
639 m_btnSplit->Connect(wxEVT_COMMAND_BUTTON_CLICKED,
640 wxCommandEventHandler(RoutePropDlg::SplitOnButtonClick),
641 NULL, this);
642 m_sdbSizerBtnsCancel->Connect(
643 wxEVT_COMMAND_BUTTON_CLICKED,
644 wxCommandEventHandler(RoutePropDlg::BtnsOnCancelButtonClick), NULL, this);
645 m_sdbSizerBtnsOK->Connect(
646 wxEVT_COMMAND_BUTTON_CLICKED,
647 wxCommandEventHandler(RoutePropDlg::BtnsOnOKButtonClick), NULL, this);
648
649 auto navobj = NavObjectChanges::getInstance();
650 wxDEFINE_EVENT(EVT_ROUTEMAN_DEL_TRK, ObservedEvt);
651 navobj_del_track_listener.Listen(navobj->evt_delete_track, this,
652 EVT_ROUTEMAN_DEL_TRK);
653 Bind(EVT_ROUTEMAN_DEL_TRK, [&](ObservedEvt& ev) {
654 auto t = std::const_pointer_cast<Track>(UnpackEvtPointer<Track>(ev));
655 RoutemanGui(*g_pRouteMan).DeleteTrack(t.get());
656 });
657
658 wxDEFINE_EVENT(EVT_ROUTEMAN_DEL_ROUTE, ObservedEvt);
659 navobj_del_route_listener.Listen(navobj->evt_delete_route, this,
660 EVT_ROUTEMAN_DEL_ROUTE);
661 Bind(EVT_ROUTEMAN_DEL_ROUTE, [&](ObservedEvt& ev) {
662 auto r = std::const_pointer_cast<Route>(UnpackEvtPointer<Route>(ev));
663 g_pRouteMan->DeleteRoute(r.get(), navobj);
664 });
665}
666
667RoutePropDlg::~RoutePropDlg() {
668 // Disconnect Events
669 this->Disconnect(wxEVT_CLOSE_WINDOW,
670 wxCloseEventHandler(RoutePropDlg::RoutePropDlgOnClose));
671 this->Disconnect(wxEVT_SIZE,
672 wxSizeEventHandler(RoutePropDlg::RoutePropDlgOnSize));
673 m_ntbRteProp->Disconnect(
674 wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
675 wxNotebookEventHandler(RoutePropDlg::RoutePropDlgOnNotebookPageChanged),
676 NULL, this);
677 m_tcPlanSpeed->Disconnect(
678 wxEVT_KILL_FOCUS, wxFocusEventHandler(RoutePropDlg::PlanSpeedOnKillFocus),
679 NULL, this);
680 m_tcPlanSpeed->Disconnect(
681 wxEVT_COMMAND_TEXT_ENTER,
682 wxCommandEventHandler(RoutePropDlg::PlanSpeedOnTextEnter), NULL, this);
683 m_tcPlanSpeed->Disconnect(
684 wxEVT_COMMAND_TEXT_UPDATED,
685 wxCommandEventHandler(RoutePropDlg::PlanSpeedOnTextEnter), NULL, this);
686 m_dpDepartureDate->Disconnect(
687 wxEVT_DATE_CHANGED,
688 wxDateEventHandler(RoutePropDlg::DepartureDateOnDateChanged), NULL, this);
689 m_tpDepartureTime->Disconnect(
690 wxEVT_TIME_CHANGED,
691 wxDateEventHandler(RoutePropDlg::DepartureTimeOnTimeChanged), NULL, this);
692 m_choiceTimezone->Disconnect(
693 wxEVT_COMMAND_CHOICE_SELECTED,
694 wxCommandEventHandler(RoutePropDlg::TimezoneOnChoice), NULL, this);
695 m_dvlcWaypoints->Disconnect(
696 wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU,
697 wxDataViewEventHandler(
698 RoutePropDlg::WaypointsOnDataViewListCtrlItemContextMenu),
699 NULL, this);
700 m_dvlcWaypoints->Disconnect(
701 wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE,
702 wxDataViewEventHandler(
703 RoutePropDlg::WaypointsOnDataViewListCtrlItemEditingDone),
704 NULL, this);
705 m_dvlcWaypoints->Disconnect(
706 wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED,
707 wxDataViewEventHandler(
708 RoutePropDlg::WaypointsOnDataViewListCtrlItemValueChanged),
709 NULL, this);
710 m_dvlcWaypoints->Disconnect(
711 wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED,
712 wxDataViewEventHandler(
713 RoutePropDlg::WaypointsOnDataViewListCtrlSelectionChanged),
714 NULL, this);
715 m_btnAddLink->Disconnect(
716 wxEVT_COMMAND_BUTTON_CLICKED,
717 wxCommandEventHandler(RoutePropDlg::AddLinkOnButtonClick), NULL, this);
718 m_toggleBtnEdit->Disconnect(
719 wxEVT_COMMAND_TOGGLEBUTTON_CLICKED,
720 wxCommandEventHandler(RoutePropDlg::BtnEditOnToggleButton), NULL, this);
721 m_btnPrint->Disconnect(
722 wxEVT_COMMAND_BUTTON_CLICKED,
723 wxCommandEventHandler(RoutePropDlg::PrintOnButtonClick), NULL, this);
724 m_btnExtend->Disconnect(
725 wxEVT_COMMAND_BUTTON_CLICKED,
726 wxCommandEventHandler(RoutePropDlg::ExtendOnButtonClick), NULL, this);
727 m_btnSplit->Disconnect(
728 wxEVT_COMMAND_BUTTON_CLICKED,
729 wxCommandEventHandler(RoutePropDlg::SplitOnButtonClick), NULL, this);
730 m_sdbSizerBtnsCancel->Disconnect(
731 wxEVT_COMMAND_BUTTON_CLICKED,
732 wxCommandEventHandler(RoutePropDlg::BtnsOnCancelButtonClick), NULL, this);
733 m_sdbSizerBtnsOK->Disconnect(
734 wxEVT_COMMAND_BUTTON_CLICKED,
735 wxCommandEventHandler(RoutePropDlg::BtnsOnOKButtonClick), NULL, this);
736
737 delete m_menuLink;
738 delete m_menuLinks;
739}
740
741void RoutePropDlg::OnKeyChar(wxKeyEvent& event) {
742 int key_char = event.GetKeyCode();
743 int yyp = 4;
744}
Adds a std::shared<void> element to wxCommandEvent.
Class RoutePropDlg.
Definition route.h:75
bool DeleteRoute(Route *pRoute, NavObjectChanges *nav_obj_changes)
Definition routeman.cpp:747
wxFont * GetOCPNScaledFont(wxString item, int default_size)
Retrieves a font from FontMgr, optionally scaled for physical readability.
Definition gui_lib.cpp:54
General purpose GUI support.
Callbacks for RoutePropDlg.
Definition routeman.h:83