public static RTCManifest SelectFromFile() { try { OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = false; ofd.Title = "Выберите файл Манифеста"; ofd.CheckFileExists = true; ofd.Filter = "XML | *.xml"; if (!string.IsNullOrEmpty(Properties.Settings.Default.LoadManifestPath)) { ofd.InitialDirectory = Properties.Settings.Default.LoadManifestPath; } if (ofd.ShowDialog() != true) { return(null); } var pathName = ofd.FileName; RTCManifest manifest = null; switch (Path.GetFileName(pathName).ToLower()) { case "rtcmanifest.xml": manifest = RTCManifest.Load(pathName); break; case "ecrmanifest.xml": manifest = ECRManifest.Load(pathName); break; default: manifest = RTCManifest.Load(pathName); //MessageBox.Show("Не удалось определить тип манифеста"); break; } return(manifest); } catch (Exception ex) { MessageBox.Show("Возникло исключение при загрузке файла манифеста: " + ex.Message); return(null); } }
/// <summary> /// Окно выбора файла манфиеста /// </summary> /// <param name="defaultPath">Путь по умочланию</param> /// <param name="pathKey">Ключ для поиска/сохранения пути по умолчанию в Файле настроек</param> /// <returns>Возвращает выбранный файл манифеста или null</returns> public static RTCManifest SelectManifest(string defaultPath = null, string pathKey = null) { try { OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = false; ofd.Title = "Выберите файл Манифеста"; ofd.CheckFileExists = true; ofd.Filter = "XML | *.xml"; MG_Settings settings = null; if (!string.IsNullOrEmpty(pathKey)) { settings = MG_Settings.Load(); if (string.IsNullOrWhiteSpace(defaultPath)) { if (settings.Directories.Contains(pathKey)) //загрузка из файла настроек по ключу каталога по умолчанию { defaultPath = settings.Directories[pathKey]; } } } if (!string.IsNullOrWhiteSpace(defaultPath)) { if (Directory.Exists(defaultPath)) { ofd.InitialDirectory = defaultPath; } } if (ofd.ShowDialog() != true) { return(null); } var pathName = ofd.FileName; RTCManifest manifest = null; switch (Path.GetFileName(pathName).ToLower()) { case "rtcmanifest.xml": manifest = RTCManifest.Load(pathName); break; case "ecrmanifest.xml": manifest = ECRManifest.Load(pathName); break; default: manifest = RTCManifest.Load(pathName); //MessageBox.Show("Не удалось определить тип манифеста"); break; } if (!string.IsNullOrEmpty(pathKey)) { //сохраняем каталог выбранного манифеста в файле настроек settings.Directories.Save(new NamedSettingsValue() { Key = pathKey, Value = manifest.FileInfo.DirectoryName }); } return(manifest); } catch (Exception ex) { LogAndShow("Возникло исключение при загрузке файла манифеста", ex); return(null); } }