Example #1
0
inline void
PlanePolarWidget::ImportClicked()
{
  // let the user select
  const auto path = FilePicker(_("Load Polar From File"), _T("*.plr\0"));
  if (path == nullptr)
    return;

  PolarInfo polar;
  try {
    PolarGlue::LoadFromFile(polar, path);
  } catch (const std::runtime_error &) {
  }

  plane.reference_mass = polar.reference_mass;
  plane.dry_mass = polar.reference_mass;
  plane.max_ballast = polar.max_ballast;

  if (polar.wing_area > 0)
    plane.wing_area = polar.wing_area;

  if (polar.v_no > 0)
    plane.max_speed = polar.v_no;

  plane.polar_shape = polar.shape;

  plane.polar_name = path.GetBase().c_str();

  Update();
}
static void
UploadWaypoints(const DialogLook &look, CAI302Device &device)
{
  TCHAR path[MAX_PATH];
  if (!FilePicker(_("Waypoints"), _T("*.cup"), path))
    return;

  CAI302WaypointUploader job(path, device);
  JobDialog(UIGlobals::GetMainWindow(), look, _("Waypoints"), job, true);
}
Example #3
0
static void
UploadWaypoints(const DialogLook &look, CAI302Device &device)
{
  const auto path = FilePicker(_("Waypoints"), WAYPOINT_FILE_PATTERNS);
  if (path == nullptr)
    return;

  CAI302WaypointUploader job(path, device);
  JobDialog(UIGlobals::GetMainWindow(), look, _("Waypoints"), job, true);
}
Example #4
0
AllocatedPath
FilePicker(const TCHAR *caption, const TCHAR *patterns)
{
    assert(patterns != nullptr);

    FileDataField df;
    df.ScanMultiplePatterns(patterns);
    return FilePicker(caption, df)
           ? df.GetPathFile()
           : nullptr;
}
Example #5
0
bool
FilePicker(const TCHAR *caption, const TCHAR *patterns, TCHAR *buffer)
{
  assert(patterns != nullptr);

  FileDataField df;
  df.ScanMultiplePatterns(patterns);
  if (!FilePicker(caption, df))
    return false;

  _tcscpy(buffer, df.GetAsString());
  return true;
}
Example #6
0
bool
EditDataFieldDialog(const TCHAR *caption, DataField &df,
                    const TCHAR *help_text)
{
  if (df.GetType() == DataField::Type::FILE) {
    return FilePicker(caption, (FileDataField &)df, help_text);
  } else if (df.SupportsCombolist()) {
    return ComboPicker(caption, df, help_text);
  } else if (df.GetType() == DataField::Type::ROUGH_TIME) {
    RoughTimeDataField &tdf = (RoughTimeDataField &)df;
    RoughTime value = tdf.GetValue();
    if (!TimeEntryDialog(caption, value, tdf.GetTimeZone(), true))
      return false;

    tdf.ModifyValue(value);
    return true;
  } else if (df.GetType() == DataField::Type::GEOPOINT) {
    GeoPointDataField &gdf = (GeoPointDataField &)df;
    GeoPoint value = gdf.GetValue();
    if (!GeoPointEntryDialog(caption, value,
                             gdf.GetFormat(),
                             false))
      return false;

    gdf.ModifyValue(value);
    return true;
  } else {
    const TCHAR *value = df.GetAsString();
    if (value == NULL)
      return false;

    StaticString<EDITSTRINGSIZE> buffer(value);

    PrefixDataField::AllowedCharactersFunction acf;
    if (df.GetType() == DataField::Type::PREFIX)
      acf = ((PrefixDataField &)df).GetAllowedCharactersFunction();

    if (!TextEntryDialog(buffer, caption, acf))
      return false;

    df.SetAsString(buffer);
    return true;
  }
}