From 230741a2afcef3fd870c7616b71288bd464f5d66 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Sat, 28 Mar 2020 22:53:45 -0400 Subject: [PATCH] support first-class variable definitions in editor configuration --- .../Common/Reflection.cs | 22 +++++++++++++++++++ .../EditorReference.cs | 2 ++ 2 files changed, 24 insertions(+) diff --git a/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs b/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs index be7a159a..f4eef34f 100644 --- a/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs +++ b/Libraries/UniversalEditor.UserInterface/Common/Reflection.cs @@ -6,6 +6,7 @@ using UniversalEditor.ObjectModels.Markup; using UniversalEditor.DataFormats.Markup.XML; using UniversalEditor.Accessors; using MBS.Framework.UserInterface; +using MBS.Framework.Logic; namespace UniversalEditor.UserInterface.Common { @@ -179,6 +180,27 @@ namespace UniversalEditor.UserInterface.Common } } } + MarkupTagElement tagVariables = (tagEditor.Elements["Variables"] as MarkupTagElement); + if (tagVariables != null) + { + for (int i = 0; i < tagVariables.Elements.Count; i++) + { + MarkupTagElement tagVariable = tagVariables.Elements[i] as MarkupTagElement; + if (tagVariable == null) continue; + if (tagVariable.FullName != "Variable") continue; + + MarkupAttribute attName = tagVariable.Attributes["Name"]; + if (attName == null) continue; + + MarkupAttribute attValue = tagVariable.Attributes["Value"]; + + Variable varr = new MBS.Framework.Logic.Variable(attName.Value); + if (attValue != null) + varr.Expression = Expression.Parse(attValue.Value); + + er.Variables.Add(varr); + } + } } } } diff --git a/Libraries/UniversalEditor.UserInterface/EditorReference.cs b/Libraries/UniversalEditor.UserInterface/EditorReference.cs index f42eebd9..6f530916 100644 --- a/Libraries/UniversalEditor.UserInterface/EditorReference.cs +++ b/Libraries/UniversalEditor.UserInterface/EditorReference.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using MBS.Framework.Logic; using MBS.Framework.UserInterface; using UniversalEditor.ObjectModels.Markup; @@ -28,6 +29,7 @@ namespace UniversalEditor.UserInterface public KeyBinding.KeyBindingCollection KeyBindings { get; } = new KeyBinding.KeyBindingCollection(); public EditorView.EditorViewCollection Views { get; } = new EditorView.EditorViewCollection(); + public Variable.VariableCollection Variables { get; } = new Variable.VariableCollection(); public EditorReference(Type type) {