/// <summary> /// Zeigt Datei-Speichern Dialog an /// </summary> /// <param name="selectedFile">Zurzeit gewählte Datei (kann null sein)</param> /// <param name="fileExtensions">Dateiendungen</param> /// <param name="guid">GUID für FileDialog (Vista+ relevant; OS merkt sich pro GUID wo der Dialog das letzte Mal geöffnet war)</param> /// <returns>Gewählte Datei oder null</returns> public static L3dFilePath SaveLoksimFile(L3dFilePath selectedFile, IEnumerable <CommonFileDialogFilter> fileExtensions, Guid guid = default(Guid)) { if (CommonSaveFileDialog.IsPlatformSupported) { using (CommonSaveFileDialog dlg = new CommonSaveFileDialog("Loksim3D")) { if (selectedFile != null) { dlg.InitialDirectory = selectedFile.Directory; dlg.DefaultFileName = selectedFile.Filename; } if (Directory.Exists(L3dFilePath.LoksimDirectory.AbsolutePath)) { dlg.AddPlace(L3dFilePath.LoksimDirectory.AbsolutePath, Microsoft.WindowsAPICodePack.Shell.FileDialogAddPlaceLocation.Bottom); dlg.ShowPlacesList = true; } dlg.CookieIdentifier = guid; if (fileExtensions != null) { foreach (CommonFileDialogFilter f in fileExtensions) { dlg.Filters.Add(f); } dlg.DefaultExtension = "." + dlg.Filters[0].Extensions[0]; } if (dlg.ShowDialog() == CommonFileDialogResult.Ok) { return(new L3dFilePath(dlg.FileName)); } } } else { SaveFileDialog dlg = new SaveFileDialog(); if (selectedFile != null) { dlg.FileName = selectedFile.Filename; } dlg.Title = "Loksim3D"; if (selectedFile != null) { dlg.InitialDirectory = selectedFile.Directory; } if (fileExtensions != null) { dlg.Filter = FileExtensions.CommonDlgFilterToClassicFilter(fileExtensions); dlg.DefaultExt = "." + fileExtensions.First().Extensions[0]; } if (dlg.ShowDialog().GetValueOrDefault(false)) { return(new L3dFilePath(dlg.FileName)); } } return(null); }