CustomImporterSettingsGrid.cs 1.4 KB

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