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); }
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); }
AllocatedPath FilePicker(const TCHAR *caption, const TCHAR *patterns) { assert(patterns != nullptr); FileDataField df; df.ScanMultiplePatterns(patterns); return FilePicker(caption, df) ? df.GetPathFile() : nullptr; }
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; }
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; } }