private RCalcIrt FindIrtDatabase(string documentPath, RCalcIrt irtCalc) { RetentionScoreCalculatorSpec result; if (Settings.Default.RTScoreCalculatorList.TryGetValue(irtCalc.Name, out result)) { var irtCalcSettings = result as RCalcIrt; if (irtCalcSettings != null && (irtCalcSettings.IsUsable || File.Exists(irtCalcSettings.DatabasePath))) { return irtCalcSettings; } } // First look for the file name in the document directory string fileName = Path.GetFileName(irtCalc.DatabasePath); string filePath = Path.Combine(Path.GetDirectoryName(documentPath) ?? string.Empty, fileName ?? string.Empty); if (File.Exists(filePath)) { try { return irtCalc.ChangeDatabasePath(filePath); } catch (CalculatorException) { //Todo: should this fail silenty or report an error } } _out.WriteLine(Resources.CommandLine_FindIrtDatabase_Error__Could_not_find_the_iRT_database__0__, Path.GetFileName(irtCalc.DatabasePath)); return null; }
private RCalcIrt FindIrtDatabase(IWin32Window parent, string documentPath, RCalcIrt irtCalc) { RetentionScoreCalculatorSpec result; if (Settings.Default.RTScoreCalculatorList.TryGetValue(irtCalc.Name, out result)) { var calc = result as RCalcIrt; if (calc != null && File.Exists(calc.DatabasePath)) return calc; } if (documentPath == null) return null; // First look for the file name in the document directory string fileName = Path.GetFileName(irtCalc.DatabasePath); string filePath = Path.Combine(Path.GetDirectoryName(documentPath) ?? string.Empty, fileName ?? string.Empty); if (File.Exists(filePath)) { try { return irtCalc.ChangeDatabasePath(filePath); } catch (CalculatorException) { //Todo: should this fail silenty or raise another dialog box? } } do { using (var dlg = new MissingFileDlg { ItemName = irtCalc.Name, ItemType = Resources.SkylineWindow_FindIrtDatabase_iRT_Calculator, Filter = TextUtil.FileDialogFilterAll(Resources.SkylineWindow_FindIrtDatabase_iRT_Database_Files, IrtDb.EXT), FileHint = Path.GetFileName(irtCalc.DatabasePath), FileDlgInitialPath = Path.GetDirectoryName(documentPath), Title = Resources.SkylineWindow_FindIrtDatabase_Find_iRT_Calculator }) { if (dlg.ShowDialog(parent) == DialogResult.OK) { if (dlg.FilePath == null) return RCalcIrt.NONE; try { return irtCalc.ChangeDatabasePath(dlg.FilePath); } catch (DatabaseOpeningException e) { var message = TextUtil.SpaceSeparate( Resources.SkylineWindow_FindIrtDatabase_The_database_file_specified_could_not_be_opened, e.Message); // Not L10N MessageBox.Show(message); } } else { return null; } } } while (true); }