From 79c03f43bb3404116eb00dc7465d768c77910141 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Thu, 15 Aug 2019 23:57:52 -0400 Subject: [PATCH] Try all data formats instead of just the first one --- .../MainWindow.cs | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/CSharp/Libraries/UniversalEditor.UserInterface/MainWindow.cs b/CSharp/Libraries/UniversalEditor.UserInterface/MainWindow.cs index 8ea5ff7e..ec733cbc 100644 --- a/CSharp/Libraries/UniversalEditor.UserInterface/MainWindow.cs +++ b/CSharp/Libraries/UniversalEditor.UserInterface/MainWindow.cs @@ -325,19 +325,34 @@ namespace UniversalEditor.UserInterface if (dfrs.Length > 0) { - ObjectModelReference [] omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels (dfrs [0]); - if (omrs.Length < 1) - { - Console.WriteLine("Object model not found for data format " + dfrs[0].Title + " ; using default editor"); - OpenDefaultEditor(doc.Accessor.GetFileName()); + bool found = false; + foreach (DataFormatReference dfr in dfrs) { + ObjectModelReference [] omrs = UniversalEditor.Common.Reflection.GetAvailableObjectModels (dfr); + if (omrs.Length < 1) { + Console.WriteLine ("Object model not found for data format " + dfr.Title + " ; using default editor"); + } + + ObjectModelReference omr = omrs [0]; + ObjectModel om = omr.Create (); + + doc.DataFormat = dfr.Create (); + doc.ObjectModel = om; + + try { + doc.Accessor.Open (); + doc.Load (); + } catch (InvalidDataFormatException ex) { + doc.Accessor.Close (); + continue; + } + + found = true; + break; + } + if (!found) { + OpenDefaultEditor (doc.Accessor.GetFileName ()); return; } - - ObjectModelReference omr = omrs[0]; - ObjectModel om = omr.Create(); - - doc.DataFormat = dfrs[0].Create(); - doc.ObjectModel = om; } } @@ -380,8 +395,7 @@ namespace UniversalEditor.UserInterface } ed.ObjectModel = om1; - InitDocTab(System.IO.Path.GetFileName(filename) - , ed); + InitDocTab(System.IO.Path.GetFileName(filename), ed); } [ContainerLayout("~/Panels/StartPage.glade")]