| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | using InABox.Core;using InABox.DynamicGrid;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace InABox.Wpf.Grids{    public class PosterSettingsGrid<TPosterSettings> : DynamicItemsListGrid<TPosterSettings>        where TPosterSettings : PosterSettings, new()    {        public PosterSettingsGrid()        {            OnCustomiseEditor += PosterSettingsGrid_OnCustomiseEditor;        }        private void PosterSettingsGrid_OnCustomiseEditor(IDynamicEditorForm sender, TPosterSettings[]? items, DynamicGridColumn column, BaseEditor editor)        {            if (items?.FirstOrDefault() is not TPosterSettings settings) return;            if(column.ColumnName == nameof(PosterSettings.Script) && editor is ScriptEditor scriptEditor)            {                var tPostable = CoreUtils.GetEntity(settings.PostableType);                scriptEditor.Type = ScriptEditorType.TemplateEditor;                scriptEditor.OnEditorClicked += () =>                {                    var script = settings.Script.NotWhiteSpaceOr()                        ?? settings.DefaultScript(tPostable);                    var editor = new ScriptEditorWindow(script, SyntaxLanguage.CSharp);                    if (editor.ShowDialog() == true)                    {                        sender.SetEditorValue(column.ColumnName, editor.Script);                        settings.Script = editor.Script;                        settings.ScriptEnabled = !settings.Script.IsNullOrWhiteSpace();                        sender.SetEditorValue(nameof(PosterSettings.ScriptEnabled), settings.ScriptEnabled);                    }                };            }        }    }}
 |