From 86acbb4902a25100a183da7ce9e7a5662de8b4cb Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Fri, 12 Aug 2016 17:17:05 +0200 Subject: [PATCH] default template searched in embedded resources with .template extension --- Crow.csproj | 68 ++++++++++++++----- Templates/{Button.crow => Button.template} | 0 .../{CheckBox.goml => CheckBox.template} | 0 .../{ComboBox.goml => ComboBox.template} | 0 ...ectoryView.crow => DirectoryView.template} | 0 .../{Expandable.goml => Expandable.template} | 0 .../{FileDialog.goml => FileDialog.template} | 0 .../{GroupBox.goml => GroupBox.template} | 0 Templates/{ListBox.goml => ListBox.template} | 0 .../{MessageBox.goml => MessageBox.template} | 0 Templates/{Popper.goml => Popper.template} | 0 ...{RadioButton.goml => RadioButton.template} | 0 .../{ScrollBar.goml => ScrollBar.template} | 0 Templates/{Slider.goml => Slider.template} | 0 Templates/{Spinner.goml => Spinner.template} | 0 Templates/{TabItem.crow => TabItem.template} | 2 +- .../{TreeView.crow => TreeView.template} | 1 + Templates/{Window.goml => Window.template} | 0 Tests/OpenTKGameWindow.cs | 2 - src/GraphicObjects/AnalogMeter.cs | 1 - src/GraphicObjects/Button.cs | 7 +- src/GraphicObjects/CheckBox.cs | 1 - src/GraphicObjects/ComboBox.cs | 1 - src/GraphicObjects/DirectoryView.cs | 1 - src/GraphicObjects/DummyTemplate.cs | 1 - src/GraphicObjects/Expandable.cs | 1 - src/GraphicObjects/GroupBox.cs | 1 - src/GraphicObjects/ListBox.cs | 1 - src/GraphicObjects/MessageBox.cs | 1 - src/GraphicObjects/Popper.cs | 1 - src/GraphicObjects/RadioButton.cs | 1 - src/GraphicObjects/ScrollBar.cs | 1 - src/GraphicObjects/Spinner.cs | 1 - src/GraphicObjects/TabItem.cs | 1 - src/GraphicObjects/TemplatedControl.cs | 26 +------ src/GraphicObjects/TreeView.cs | 1 - src/GraphicObjects/Window.cs | 1 - src/IMLReader.cs | 17 ++--- src/Interface.cs | 36 ++++++---- 39 files changed, 87 insertions(+), 88 deletions(-) rename Templates/{Button.crow => Button.template} (100%) rename Templates/{CheckBox.goml => CheckBox.template} (100%) rename Templates/{ComboBox.goml => ComboBox.template} (100%) rename Templates/{DirectoryView.crow => DirectoryView.template} (100%) rename Templates/{Expandable.goml => Expandable.template} (100%) rename Templates/{FileDialog.goml => FileDialog.template} (100%) rename Templates/{GroupBox.goml => GroupBox.template} (100%) rename Templates/{ListBox.goml => ListBox.template} (100%) rename Templates/{MessageBox.goml => MessageBox.template} (100%) rename Templates/{Popper.goml => Popper.template} (100%) rename Templates/{RadioButton.goml => RadioButton.template} (100%) rename Templates/{ScrollBar.goml => ScrollBar.template} (100%) rename Templates/{Slider.goml => Slider.template} (100%) rename Templates/{Spinner.goml => Spinner.template} (100%) rename Templates/{TabItem.crow => TabItem.template} (95%) rename Templates/{TreeView.crow => TreeView.template} (96%) rename Templates/{Window.goml => Window.template} (100%) diff --git a/Crow.csproj b/Crow.csproj index 45f60ec9..0de00b5c 100644 --- a/Crow.csproj +++ b/Crow.csproj @@ -177,16 +177,10 @@ - - - - - - @@ -194,9 +188,7 @@ - - @@ -211,23 +203,65 @@ - - - - - - - - - + + Crow.Button.template + + + Crow.CheckBox.template + + + Crow.ComboBox.template + + + Crow.Expandable.template + + + Crow.DirectoryView.template + + + Crow.FileDialog.template + + + Crow.GroupBox.template + + + Crow.ListBox.template + + + Crow.MessageBox.template + + + Crow.Popper.template + + + Crow.RadioButton.template + + + Crow.ScrollBar.template + + + Crow.Slider.template + + + Crow.Spinner.template + + + Crow.TabItem.template + + + Crow.TreeView.template + + + Crow.Window.template + diff --git a/Templates/Button.crow b/Templates/Button.template similarity index 100% rename from Templates/Button.crow rename to Templates/Button.template diff --git a/Templates/CheckBox.goml b/Templates/CheckBox.template similarity index 100% rename from Templates/CheckBox.goml rename to Templates/CheckBox.template diff --git a/Templates/ComboBox.goml b/Templates/ComboBox.template similarity index 100% rename from Templates/ComboBox.goml rename to Templates/ComboBox.template diff --git a/Templates/DirectoryView.crow b/Templates/DirectoryView.template similarity index 100% rename from Templates/DirectoryView.crow rename to Templates/DirectoryView.template diff --git a/Templates/Expandable.goml b/Templates/Expandable.template similarity index 100% rename from Templates/Expandable.goml rename to Templates/Expandable.template diff --git a/Templates/FileDialog.goml b/Templates/FileDialog.template similarity index 100% rename from Templates/FileDialog.goml rename to Templates/FileDialog.template diff --git a/Templates/GroupBox.goml b/Templates/GroupBox.template similarity index 100% rename from Templates/GroupBox.goml rename to Templates/GroupBox.template diff --git a/Templates/ListBox.goml b/Templates/ListBox.template similarity index 100% rename from Templates/ListBox.goml rename to Templates/ListBox.template diff --git a/Templates/MessageBox.goml b/Templates/MessageBox.template similarity index 100% rename from Templates/MessageBox.goml rename to Templates/MessageBox.template diff --git a/Templates/Popper.goml b/Templates/Popper.template similarity index 100% rename from Templates/Popper.goml rename to Templates/Popper.template diff --git a/Templates/RadioButton.goml b/Templates/RadioButton.template similarity index 100% rename from Templates/RadioButton.goml rename to Templates/RadioButton.template diff --git a/Templates/ScrollBar.goml b/Templates/ScrollBar.template similarity index 100% rename from Templates/ScrollBar.goml rename to Templates/ScrollBar.template diff --git a/Templates/Slider.goml b/Templates/Slider.template similarity index 100% rename from Templates/Slider.goml rename to Templates/Slider.template diff --git a/Templates/Spinner.goml b/Templates/Spinner.template similarity index 100% rename from Templates/Spinner.goml rename to Templates/Spinner.template diff --git a/Templates/TabItem.crow b/Templates/TabItem.template similarity index 95% rename from Templates/TabItem.crow rename to Templates/TabItem.template index c5852142..ce2a270e 100644 --- a/Templates/TabItem.crow +++ b/Templates/TabItem.template @@ -1,4 +1,4 @@ - + DefaultValuesLoader = new Dictionary(); public static Dictionary Styling; /// parse all styling data's and build global Styling Dictionary - static void LoadStyling() { - System.Globalization.CultureInfo savedCulture = Thread.CurrentThread.CurrentCulture; - Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; - + static void loadStyling() { Styling = new Dictionary (); //fetch styling info in this order, if member styling is alreadey referenced in previous //assembly, it's ignored. loadStylingFromAssembly (Assembly.GetEntryAssembly ()); loadStylingFromAssembly (Assembly.GetExecutingAssembly ()); - - Thread.CurrentThread.CurrentCulture = savedCulture; } /// Search for .style resources in assembly static void loadStylingFromAssembly (Assembly assembly) { @@ -143,7 +139,7 @@ namespace Crow .Dispose (); } } - static void LoadCursors(){ + static void loadCursors(){ //Load cursors XCursor.Cross = XCursorFile.Load("#Crow.Images.Icons.Cursors.cross").Cursors[0]; XCursor.Default = XCursorFile.Load("#Crow.Images.Icons.Cursors.arrow").Cursors[0]; @@ -156,6 +152,23 @@ namespace Crow } #endregion + #region Templates + public static Dictionary DefaultTemplates = new Dictionary(); + static void findAvailableTemplates(){ + searchTemplatesIn (Assembly.GetEntryAssembly ()); + searchTemplatesIn (Assembly.GetExecutingAssembly ()); + } + static void searchTemplatesIn(Assembly assembly){ + foreach (string resId in assembly + .GetManifestResourceNames () + .Where (r => r.EndsWith (".template", StringComparison.OrdinalIgnoreCase))) { + string clsName = resId.Substring (0, resId.Length - 9); + if (DefaultTemplates.ContainsKey (clsName)) + continue; + DefaultTemplates[clsName] = "#" + resId; + } + } + #endregion #region Load/Save public static Stream GetStreamFromPath (string path) @@ -194,16 +207,11 @@ namespace Crow } public static GraphicObject Load (string path) { - System.Globalization.CultureInfo savedCulture = Thread.CurrentThread.CurrentCulture; - Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; - try { return GetInstantiator (path).CreateInstance (); } catch (Exception ex) { throw new Exception ("Error loading <" + path + ">:", ex); } - - Thread.CurrentThread.CurrentCulture = savedCulture; } /// /// fetch it from cache or create it -- 2.47.3