CustomImporterSettingsGrid.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using InABox.Core;
  2. using InABox.DynamicGrid;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace PRSDesktop
  9. {
  10. public class CustomImporterSettingsGrid : DynamicItemsListGrid<CustomImporterSettings>
  11. {
  12. public CustomImporterSettingsGrid()
  13. {
  14. OnCustomiseEditor += CustomImporterSettingsGrid_OnCustomiseEditor;
  15. }
  16. private void CustomImporterSettingsGrid_OnCustomiseEditor(IDynamicEditorForm sender, CustomImporterSettings[]? items, DynamicGridColumn column, BaseEditor editor)
  17. {
  18. if (items?.FirstOrDefault() is not CustomImporterSettings settings) return;
  19. if (column.ColumnName == nameof(CustomImporterSettings.Script) && editor is ScriptEditor scriptEditor)
  20. {
  21. scriptEditor.Type = ScriptEditorType.TemplateEditor;
  22. scriptEditor.OnEditorClicked += () =>
  23. {
  24. var script = settings.Script.NotWhiteSpaceOr()
  25. ?? settings.DefaultScript();
  26. var editor = new ScriptEditorWindow(script, SyntaxLanguage.CSharp);
  27. if (editor.ShowDialog() == true)
  28. {
  29. sender.SetEditorValue(column.ColumnName, editor.Script);
  30. settings.Script = editor.Script;
  31. }
  32. };
  33. }
  34. }
  35. }
  36. }