void Init() { chkLink = new CheckBox { Text = "Link Script", Height = 22 }; chkLink.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); var lbl1 = new Label { Text = "Object", VerticalAlignment = VerticalAlignment.Center }; var lbl2 = new Label { Text = "Event", VerticalAlignment = VerticalAlignment.Center }; var lbl3 = new Label { Text = "Python Interpreter", VerticalAlignment = VerticalAlignment.Center }; lbl1.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); lbl2.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); lbl3.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); var lbl4 = new Label { Text = "Script Name", VerticalAlignment = VerticalAlignment.Center }; txtName = new TextBox { Text = "Script Name", Height = 22 }; lbl4.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); txtName.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); cbLinkedObject = new DropDown(); cbLinkedEvent = new DropDown(); cbPythonInt = new DropDown(); cbLinkedObject.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); cbLinkedEvent.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); cbPythonInt.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); cbLinkedEvent.Items.AddRange(new String[] { "Simulation Opened", "Simulation Saved", "Simulation Closed", "1 min. Timer", "5 min. Timer", "15 min. Timer", "30 min. Timer", "60 min. Timer" }.Select((x) => new ListItem { Key = x, Text = x })); cbPythonInt.Items.AddRange(new String[] { "IronPython", "Python.NET" }.Select((x) => new ListItem { Key = x, Text = x })); var tr1 = new TableRow(chkLink, lbl1, cbLinkedObject, lbl2, cbLinkedEvent, null, lbl3, cbPythonInt); var tb1 = new TableLayout { Spacing = new Size(5, 5), Padding = new Padding(0, 0, 0, 10) }; tb1.Rows.Add(tr1); tb1.Height = 34; btnRun = new Button { Text = "Store and Run" }; btnRunAsync = new Button { Text = "Store and Run Async" }; btnUpdate = new Button { Text = "Store Updated Script" }; btnRun.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); btnRunAsync.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); btnUpdate.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); var tr2 = new TableRow(btnUpdate, btnRun, btnRunAsync, lbl4, txtName); var tb2 = new TableLayout { Spacing = new Size(5, 5), Padding = new Padding(0, 0, 0, 10) }; tb2.Rows.Add(tr2); tb2.Height = 34; cbLinkedObject.SelectedIndexChanged += (sender, e) => { if (cbLinkedObject.SelectedIndex < 0) { return; } switch (cbLinkedObject.SelectedIndex) { case 0: cbLinkedEvent.Items.Clear(); cbLinkedEvent.Items.AddRange(new string[] { "Simulation Opened", "Simulation Saved", "Simulation Closed", "1 min. Timer", "5 min. Timer", "15 min. Timer", "30 min. Timer", "60 min. Timer" }.Select((x) => new ListItem { Key = x, Text = x })); break; case 1: cbLinkedEvent.Items.Clear(); cbLinkedEvent.Items.AddRange(new string[] { "Solver Started", "Solver Finished", "Recycle Loop" }.Select((x) => new ListItem { Key = x, Text = x })); break; default: cbLinkedEvent.Items.Clear(); cbLinkedEvent.Items.AddRange(new string[] { "Object Calculation Started", "Object Calculation Finished", "Object Calculation Error" }.Select((x) => new ListItem { Key = x, Text = x })); break; } cbLinkedEvent.SelectedIndex = 0; }; txtScript = new Controls.CodeEditorControl(); var tr3 = new TableRow(txtScript); var tb3 = new TableLayout { Spacing = new Size(5, 5) }; tb3.Rows.Add(tr3); Rows.Add(new TableRow(tb1)); Rows.Add(new TableRow(tb2)); Rows.Add(new TableRow(tb3)); }
void Init() { var script = flowsheet.Scripts[scriptID]; txtScript = new Controls.CodeEditorControl(); chkLink = new CheckBox { Text = "Link Script" }; chkLink.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); var lbl1 = new Label { Text = "Object", VerticalAlignment = VerticalAlignment.Center }; var lbl2 = new Label { Text = "Event", VerticalAlignment = VerticalAlignment.Center }; var lbl3 = new Label { Text = "Python Interpreter", VerticalAlignment = VerticalAlignment.Center }; lbl1.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); lbl2.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); lbl3.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); var btn1 = new Button { Text = "Update Script" }; var btn2 = new Button { Text = "Update and Run" }; var btn3 = new Button { Text = "Update and Run (Async)" }; btn1.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); btn2.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); btn3.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); btn1.Click += (sender, e) => { flowsheet.Scripts[scriptID].ScriptText = txtScript.Text; }; btn2.Click += (sender, e) => { flowsheet.Scripts[scriptID].ScriptText = txtScript.Text; flowsheet.ShowMessage("Running script '" + script.Title + "'...", IFlowsheet.MessageType.Information); flowsheet.RunScript(scriptID); }; btn3.Click += (sender, e) => { flowsheet.Scripts[scriptID].ScriptText = txtScript.Text; flowsheet.ShowMessage("Running script '" + script.Title + "' asynchronously...", IFlowsheet.MessageType.Information); flowsheet.RunScriptAsync(scriptID); }; var lbl4 = new Label { Text = "Script Name", VerticalAlignment = VerticalAlignment.Center }; lbl4.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); txtName = new TextBox { Text = "Script Name" }; txtName.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); cbLinkedObject = new DropDown(); cbLinkedEvent = new DropDown(); cbPythonInt = new DropDown(); cbLinkedObject.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); cbLinkedEvent.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); cbPythonInt.Font = new Font(SystemFont.Default, DWSIM.UI.Shared.Common.GetEditorFontSize()); cbLinkedEvent.Items.AddRange(new String[] { "Simulation Opened", "Simulation Saved", "Simulation Closed", "1 min. Timer", "5 min. Timer", "15 min. Timer", "30 min. Timer", "60 min. Timer" }.Select((x) => new ListItem { Key = x, Text = x })); cbPythonInt.Items.AddRange(new String[] { "IronPython", "Python.NET" }.Select((x) => new ListItem { Key = x, Text = x })); var tr1 = new TableRow(btn1, btn2, btn3, lbl4, txtName, chkLink, lbl1, cbLinkedObject, lbl2, cbLinkedEvent, lbl3, cbPythonInt); tr1.Cells[4].ScaleWidth = true; var tb1 = new TableLayout { Spacing = new Size(5, 5), Padding = new Padding(0, 0, 0, 10) }; tb1.Rows.Add(tr1); cbLinkedObject.SelectedIndexChanged += (sender, e) => { if (cbLinkedObject.SelectedIndex < 0) { return; } switch (cbLinkedObject.SelectedIndex) { case 0: cbLinkedEvent.Items.Clear(); cbLinkedEvent.Items.AddRange(new string[] { "Simulation Opened", "Simulation Saved", "Simulation Closed", "1 min. Timer", "5 min. Timer", "15 min. Timer", "30 min. Timer", "60 min. Timer" }.Select((x) => new ListItem { Key = x, Text = x })); break; case 1: cbLinkedEvent.Items.Clear(); cbLinkedEvent.Items.AddRange(new string[] { "Solver Started", "Solver Finished", "Recycle Loop" }.Select((x) => new ListItem { Key = x, Text = x })); break; default: cbLinkedEvent.Items.Clear(); cbLinkedEvent.Items.AddRange(new string[] { "Object Calculation Started", "Object Calculation Finished", "Object Calculation Error" }.Select((x) => new ListItem { Key = x, Text = x })); break; } cbLinkedEvent.SelectedIndex = 0; }; var tr3 = new TableRow(txtScript); var tb3 = new TableLayout { Spacing = new Size(5, 5) }; tb3.Rows.Add(tr3); Rows.Add(new TableRow(tb1)); Rows.Add(new TableRow(tb3)); cbLinkedObject.Items.Clear(); cbLinkedObject.Items.Add(new ListItem { Text = "Simulation", Key = "Simulation" }); cbLinkedObject.Items.Add(new ListItem { Text = "Solver", Key = "Solver" }); foreach (var obj in flowsheet.SimulationObjects.Values) { cbLinkedObject.Items.Add(new ListItem { Text = obj.GraphicObject.Tag, Key = obj.Name }); } txtName.Text = script.Title; txtScript.Text = script.ScriptText; chkLink.Checked = script.Linked; if (!string.IsNullOrEmpty(script.LinkedObjectName)) { if (flowsheet.SimulationObjects.ContainsKey(script.LinkedObjectName)) { cbLinkedObject.SelectedKey = script.LinkedObjectName; } } else { switch (script.LinkedObjectType) { case Scripts.ObjectType.Simulation: cbLinkedObject.SelectedIndex = 0; break; case Scripts.ObjectType.Solver: cbLinkedObject.SelectedIndex = 1; break; } } switch (script.LinkedEventType) { case Scripts.EventType.ObjectCalculationStarted: cbLinkedEvent.SelectedIndex = 0; break; case Scripts.EventType.ObjectCalculationFinished: cbLinkedEvent.SelectedIndex = 1; break; case Scripts.EventType.ObjectCalculationError: cbLinkedEvent.SelectedIndex = 2; break; case Scripts.EventType.SimulationOpened: cbLinkedEvent.SelectedIndex = 0; break; case Scripts.EventType.SimulationSaved: cbLinkedEvent.SelectedIndex = 1; break; case Scripts.EventType.SimulationClosed: cbLinkedEvent.SelectedIndex = 2; break; case Scripts.EventType.SolverStarted: cbLinkedEvent.SelectedIndex = 0; break; case Scripts.EventType.SolverFinished: cbLinkedEvent.SelectedIndex = 1; break; case Scripts.EventType.SolverRecycleLoop: cbLinkedEvent.SelectedIndex = 2; break; case Scripts.EventType.SimulationTimer1: cbLinkedEvent.SelectedIndex = 3; break; case Scripts.EventType.SimulationTimer5: cbLinkedEvent.SelectedIndex = 4; break; case Scripts.EventType.SimulationTimer15: cbLinkedEvent.SelectedIndex = 5; break; case Scripts.EventType.SimulationTimer30: cbLinkedEvent.SelectedIndex = 6; break; case Scripts.EventType.SimulationTimer60: cbLinkedEvent.SelectedIndex = 7; break; } cbPythonInt.SelectedIndex = (int)script.PythonInterpreter; cbPythonInt.SelectedIndexChanged += (sender, e) => { script.PythonInterpreter = (DWSIM.Interfaces.Enums.Scripts.Interpreter)cbPythonInt.SelectedIndex; }; chkLink.CheckedChanged += (sender, e) => { flowsheet.Scripts[scriptID].Linked = chkLink.Checked.GetValueOrDefault(); }; txtName.TextChanged += (sender, e) => { script.Title = txtName.Text; if (ChangeNameCallback != null) { ChangeNameCallback.Invoke(txtName.Text); } }; cbLinkedObject.SelectedIndexChanged += cbLinkedObject_SelectedIndexChanged; cbLinkedEvent.SelectedIndexChanged += cbLinkedObject_SelectedIndexChanged; }
public void Init() { loaded = false; Pages.Clear(); // connections if (obj.GraphicObject.ObjectType != Interfaces.Enums.GraphicObjects.ObjectType.MaterialStream && obj.GraphicObject.ObjectType != Interfaces.Enums.GraphicObjects.ObjectType.EnergyStream && obj.GraphicObject.ObjectType != Interfaces.Enums.GraphicObjects.ObjectType.OT_Adjust && obj.GraphicObject.ObjectType != Interfaces.Enums.GraphicObjects.ObjectType.OT_Spec) { var tab1 = new TabPage(); tab1.Text = "Connections"; var cont0 = UI.Shared.Common.GetDefaultContainer(); UI.Shared.Common.CreateAndAddDescriptionRow(cont0, "ConnectorsEditorDescription".Localize()); new DWSIM.UI.Desktop.Editors.ConnectionsEditor(obj, cont0); cont0.Width = this.Width - 30; var scr1 = new Scrollable() { Content = cont0 }; tab1.Content = scr1; Pages.Add(tab1); } // properties var tab2 = new TabPage(); tab2.Text = "Properties"; Pages.Add(tab2); var cont = UI.Shared.Common.GetDefaultContainer(); cont.Width = this.Width - 30; if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.MaterialStream) { new DWSIM.UI.Desktop.Editors.MaterialStreamEditor(obj, cont); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.DistillationColumn) { new DWSIM.UI.Desktop.Editors.DistillationColumnEditor(obj, cont); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.AbsorptionColumn) { new DWSIM.UI.Desktop.Editors.AbsorptionColumnEditor(obj, cont); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.OT_Adjust) { DWSIM.UI.Desktop.Editors.LogicalBlocks.AdjustEditor.Populate(obj, cont); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.OT_Spec) { DWSIM.UI.Desktop.Editors.LogicalBlocks.SpecEditor.Populate(obj, cont); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.OT_Recycle) { DWSIM.UI.Desktop.Editors.LogicalBlocks.RecycleEditor.Populate(obj, cont); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.OT_EnergyRecycle) { DWSIM.UI.Desktop.Editors.LogicalBlocks.EnergyRecycleEditor.Populate(obj, cont); } else { new DWSIM.UI.Desktop.Editors.GeneralEditors(obj, cont); } tab2.Content = new Scrollable() { Content = cont, Width = this.Width - 30 }; if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.Pipe) { tab2.Text = "General"; var cont2 = UI.Shared.Common.GetDefaultContainer(); cont2.Tag = "Hydraulic Profile"; cont2.Width = this.Width - 30; new PipeHydraulicProfile(obj, cont2); Pages.Add(new TabPage(new Scrollable() { Content = cont2, Width = this.Width - 30 }) { Text = "Hydraulic Profile" }); var cont3 = UI.Shared.Common.GetDefaultContainer(); cont3.Tag = "Thermal Profile"; cont3.Width = this.Width - 30; new PipeThermalProfile(obj, cont3); Pages.Add(new TabPage(new Scrollable() { Content = cont3, Width = this.Width - 30 }) { Text = "Thermal Profile" }); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.CustomUO) { tab2.Text = "General"; var cont2 = new TableLayout { Padding = new Padding(10), Spacing = new Size(5, 5) }; cont2.Tag = "Python Script"; cont2.Width = this.Width - 30; var scripteditor = new DWSIM.UI.Controls.CodeEditorControl() { Text = ((CustomUO)obj).ScriptText }; var dyn1 = new DynamicLayout(); dyn1.CreateAndAddLabelAndButtonRow("Click to commit script changes", "Update", null, (sender, e) => { ((CustomUO)obj).ScriptText = scripteditor.Text; }); dyn1.Width = this.Width - 30; cont2.Rows.Add(new TableRow(dyn1)); cont2.Rows.Add(new TableRow(scripteditor)); Pages.Add(new TabPage(new Scrollable() { Content = cont2, Width = this.Width - 30 }) { Text = "Python Script" }); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.HeatExchanger) { tab2.Text = "General"; var dyn1 = new UI.Desktop.Editors.ShellAndTubePropertiesView(obj); dyn1.Width = this.Width - 30; Pages.Add(new TabPage(new Scrollable() { Content = dyn1, Width = this.Width - 30 }) { Text = "Shell and Tube Properties" }); } else if (obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.AbsorptionColumn || obj.GraphicObject.ObjectType == Interfaces.Enums.GraphicObjects.ObjectType.DistillationColumn) { tab2.Text = "General"; var dyn2 = UI.Desktop.Editors.RigorousColumnShared.GetInitialEstimatesEditor((Column)obj); dyn2.Width = this.Width - 30; Pages.Add(new TabPage(new Scrollable() { Content = dyn2, Width = this.Width - 30 }) { Text = "Initial Estimates" }); } PageEditor = tab2; var tabr = new TabPage(); tabr.Text = "Results"; var container = new TableLayout(); new DWSIM.UI.Desktop.Editors.Results(obj, container); tabr.Content = new Scrollable() { Content = container, Width = this.Width - 30 }; PageResults = tabr; Pages.Add(tabr); if (obj.GraphicObject is ShapeGraphic) { var tabx = new TabPage(); tabx.Text = "Appearance"; var editor = new ObjectAppearanceEditorView(obj.GetFlowsheet(), (ShapeGraphic)obj.GraphicObject); editor.Width = this.Width - 30; tabx.Content = new Scrollable() { Content = editor, Width = this.Width - 30 }; Pages.Add(tabx); } if (SelectedPanel >= 0) { SelectedIndex = SelectedPanel; } loaded = true; }