void ExecuteExport() { InteractiveContext.Current.SaveLocalSettings("ExportViewportHlr", Settings); var exchangers = ExchangeRegistry.EnumerateExchanger <IDrawingExporter>()?.ToArray(); if (exchangers == null || exchangers.Length == 0) { return; } // Create Filter var filter = string.Join("|", exchangers.Select(exchanger => { var extensions = string.Join(";", exchanger.Extensions.Select(s => "*." + s)); return(string.Format("{0} ({1})|{1}", exchanger.Description, extensions)); })); // Execute Dialog var dlg = new SaveFileDialog() { CheckPathExists = true, OverwritePrompt = true, Filter = filter, FilterIndex = _LastFilterIndex }; var result = dlg.ShowDialog(Application.Current.MainWindow) ?? false; DialogResult = true; if (result) { var exporter = exchangers[dlg.FilterIndex - 1]; _LastFilterIndex = dlg.FilterIndex; if (!ExchangerSettings.Execute <IDrawingExporter>(exporter)) { return; } using (new ProcessingScope(null, "Exporting Line Drawing")) { if (!DoExport(dlg.FileName, exporter)) { MessageBox.Show(Application.Current.MainWindow, "The export was not successfull. Please see message log for further information about the error.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } } }
public static bool Execute <T>(IExchanger exchanger) where T : IExchanger { ExchangeRegistry.LoadSettings(); var panel = ExchangeRegistry.FindExchangerSettingsPanel(exchanger)?.CreatePanel <T>(exchanger); if (panel == null) { return(true); // No settings available } var exchangerSettings = new ExchangerSettings(exchanger, panel); if (!exchangerSettings.ShowDialog()) { return(false); } ExchangeRegistry.SaveSettings(); return(true); }