예제 #1
0
 /// <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);
 }