void InputEvents::eventAddWaypoint(const TCHAR *misc) { const NMEAInfo &basic = CommonInterface::Basic(); const DerivedInfo &calculated = CommonInterface::Calculated(); if (StringIsEqual(misc, _T("takeoff"))) { if (basic.location_available && calculated.terrain_valid) { ScopeSuspendAllThreads suspend; way_points.AddTakeoffPoint(basic.location, calculated.terrain_altitude); way_points.Optimise(); } } else { Waypoint edit_waypoint = way_points.Create(basic.location); edit_waypoint.elevation = calculated.terrain_altitude; if (!dlgWaypointEditShowModal(edit_waypoint) || edit_waypoint.name.empty()) { trigger_redraw(); return; } SuspendAppendSaveWaypoint(std::move(edit_waypoint)); } trigger_redraw(); }
inline void WaypointManagerWidget::OnWaypointEditClicked(unsigned i) { const Waypoint &wp = *items[i].waypoint; Waypoint wp_copy = wp; if (dlgWaypointEditShowModal(wp_copy)) { modified = true; ScopeSuspendAllThreads suspend; way_points.Replace(wp, wp_copy); way_points.Optimise(); } }
static void OnWaypointEditClicked(gcc_unused WndButton &Sender) { const Waypoint *way_point = dlgWaypointSelect(XCSoarInterface::main_window, XCSoarInterface::Basic().Location); if (way_point) { Waypoint wp_copy = *way_point; if (dlgWaypointEditShowModal(wp_copy)) { WaypointsNeedSave = true; ScopeSuspendAllThreads suspend; way_points.replace(*way_point, wp_copy); } } }
static void OnWaypointNewClicked(WndButton &Sender) { (void)Sender; Waypoint edit_waypoint = way_points.create(XCSoarInterface::Basic().Location); edit_waypoint.Altitude = XCSoarInterface::Calculated().TerrainValid ? XCSoarInterface::Calculated().TerrainAlt : XCSoarInterface::Basic().NavAltitude; if (dlgWaypointEditShowModal(edit_waypoint) && edit_waypoint.Name.size()) { way_points.append(edit_waypoint); WaypointsNeedSave = true; } }
static void OnWaypointNewClicked(gcc_unused WndButton &Sender) { Waypoint edit_waypoint = way_points.create(XCSoarInterface::Basic().Location); edit_waypoint.Altitude = XCSoarInterface::Calculated().TerrainValid ? XCSoarInterface::Calculated().TerrainAlt : XCSoarInterface::Basic().NavAltitude; if (dlgWaypointEditShowModal(edit_waypoint) && edit_waypoint.Name.size()) { WaypointsNeedSave = true; ScopeSuspendAllThreads suspend; way_points.append(edit_waypoint); } }
static void OnWaypointEditClicked(WndButton &Sender) { (void)Sender; const Waypoint *way_point = dlgWayPointSelect(XCSoarInterface::main_window, XCSoarInterface::Basic().Location); if (way_point) { if (way_points.get_writable(*way_point)) { Waypoint wp_copy = *way_point; if (dlgWaypointEditShowModal(wp_copy)) { WaypointsNeedSave = true; way_points.replace(*way_point, wp_copy); } } else { MessageBoxX(_("Waypoint not editable"), _("Error"), MB_OK); } } }
static void OnWaypointEditClicked() { if (!WaypointGlue::IsWritable()) { ShowMessageBox(_("Waypoints not editable"), _("Error"), MB_OK); return; } const Waypoint *way_point = ShowWaypointListDialog(CommonInterface::Basic().location); if (way_point) { Waypoint wp_copy = *way_point; if (dlgWaypointEditShowModal(wp_copy)) { WaypointsNeedSave = true; ScopeSuspendAllThreads suspend; way_points.Replace(*way_point, wp_copy); way_points.Optimise(); } } }
inline void WaypointManagerWidget::OnWaypointNewClicked() { Waypoint edit_waypoint = way_points.Create(CommonInterface::Basic().location); edit_waypoint.elevation = CommonInterface::Calculated().terrain_valid ? CommonInterface::Calculated().terrain_altitude : CommonInterface::Basic().nav_altitude; if (dlgWaypointEditShowModal(edit_waypoint) && edit_waypoint.name.size()) { modified = true; { ScopeSuspendAllThreads suspend; way_points.Append(std::move(edit_waypoint)); way_points.Optimise(); } UpdateList(); } }
static void OnWaypointNewClicked() { if (!WaypointGlue::IsWritable()) { ShowMessageBox(_("Waypoints not editable"), _("Error"), MB_OK); return; } Waypoint edit_waypoint = way_points.Create(CommonInterface::Basic().location); edit_waypoint.elevation = CommonInterface::Calculated().terrain_valid ? CommonInterface::Calculated().terrain_altitude : CommonInterface::Basic().nav_altitude; if (dlgWaypointEditShowModal(edit_waypoint) && edit_waypoint.name.size()) { WaypointsNeedSave = true; ScopeSuspendAllThreads suspend; way_points.Append(std::move(edit_waypoint)); way_points.Optimise(); } }
inline void WaypointManagerWidget::OnWaypointImportClicked() { const Waypoint *way_point = ShowWaypointListDialog(CommonInterface::Basic().location); if (way_point) { Waypoint wp_copy = *way_point; /* move to user.cup */ wp_copy.origin = WaypointOrigin::USER; if (dlgWaypointEditShowModal(wp_copy)) { modified = true; { ScopeSuspendAllThreads suspend; way_points.Replace(*way_point, wp_copy); way_points.Optimise(); } UpdateList(); } } }