123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- using System;
- using System.Windows;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using ScriptEditor = InABox.DynamicGrid.ScriptEditorWindow;
- namespace PRSDesktop.Configuration
- {
- internal class CustomModuleGrid : DynamicDataGrid<CustomModule>, ISpecificGrid
- {
- public string Section { get; set; }
- public DataModel? DataModel { get; set; } = null;
- public CustomModuleGrid()
- {
- Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns);
- ActionColumns.Add(new DynamicScheduleEditorColumn<CustomModule> { Position = DynamicActionColumnPosition.Start });
- HiddenColumns.Add(x => x.ActiveSchedules);
- HiddenColumns.Add(x => x.Section);
- HiddenColumns.Add(x => x.Script);
- ActionColumns.Add(new DynamicImageColumn(PRSDesktop.Resources.script.AsBitmapImage(), EditScript));
- }
- private bool EditScript(CoreRow arg)
- {
- if (arg == null)
- {
- MessageBox.Show("Please select a module first");
- return false;
- }
- var module = arg.ToObject<CustomModule>();
- var code = module.Script;
- var editor = new ScriptEditor(code);
- if (editor.ShowDialog() == true)
- {
- module.Script = editor.Script;
- new Client<CustomModule>().Save(module, "Updated by User");
- return true;
- }
- return false;
- }
- protected override void Reload(Filters<CustomModule> criteria, Columns<CustomModule> columns, ref SortOrder<CustomModule> sort,
- Action<CoreTable, Exception> action)
- {
- sort = new SortOrder<CustomModule>(x => x.Name);
- criteria.Add(new Filter<CustomModule>(x => x.Section).IsEqualTo(Section).And(x => x.DataModel).IsEqualTo(DataModel?.Name ?? ""));
- base.Reload(criteria, columns, ref sort, action);
- }
- protected override CustomModule CreateItem()
- {
- var module = base.CreateItem();
- module.Section = Section;
- module.DataModel = DataModel?.Name ?? "";
- module.Script =
- @"using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime;
- using System.Windows;
- using System.Windows.Controls;
- using InABox.Core;
- using InABox.Clients;
- using InABox.DynamicGrid;
- using InABox.Logging;
- using InABox.WPF;
- using Comal.Classes;
- using PRSDesktop;
- public class Module
- {
-
- public DataModel Model { get; set; }
-
- public void BeforeLoad(){
- // Code to customise Model here
- }
- public void CheckTables(List<string> tables){
- // Customise tables of Model.
- }
-
- public bool Execute()
- {
- Progress.Show("""");
- try
- {
-
- // Enter your code here
-
- Progress.Close();
- }
- catch (Exception e)
- {
- Progress.Close();
- MessageBox.Show(e.Message);
- }
- MessageBox.Show(""All Done!"");
- return true;
- }
-
- }";
- return module;
- }
- }
- }
|