Beispiel #1
0
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();
}
Beispiel #2
0
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);
    }
  }
}
Beispiel #4
0
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);
  }
}
Beispiel #6
0
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);
    }
  }
}
Beispiel #7
0
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();
    }
  }
}
Beispiel #8
0
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();
  }
}
Beispiel #9
0
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();
  }
}
Beispiel #10
0
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();
    }
  }
}