- Timestamp:
- 10/29/15 12:50:06 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Scripting.Views/3.3/CSharpScriptView.cs
r13024 r13080 21 21 22 22 using System; 23 using System.Drawing;24 using System.Threading;25 23 using System.Windows.Forms; 26 24 using HeuristicLab.Common; 27 using HeuristicLab.Common.Resources;28 25 using HeuristicLab.MainForm; 29 26 … … 32 29 [View("C# Script View")] 33 30 [Content(typeof(CSharpScript), true)] 34 public partial class CSharpScriptView : ScriptView { 35 private const string ScriptExecutionStartedMessage = "Script execution started"; 36 private const string ScriptExecutionCanceledMessage = "Script execution canceled"; 37 private const string ScriptExecutionSuccessfulMessage = "Script execution successful"; 38 private const string ScriptExecutionFailedMessage = "Script execution failed"; 39 40 protected bool Running { get; set; } 31 public partial class CSharpScriptView : ExecutableScriptView { 41 32 42 33 public new CSharpScript Content { … … 51 42 protected override void RegisterContentEvents() { 52 43 base.RegisterContentEvents(); 53 Content.ScriptExecutionStarted += ContentOnScriptExecutionStarted;54 Content.ScriptExecutionFinished += ContentOnScriptExecutionFinished;55 44 Content.ConsoleOutputChanged += ContentOnConsoleOutputChanged; 56 Content.ExecutionTimeChanged += ContentOnExecutionTimeChanged;57 45 } 58 46 59 47 protected override void DeregisterContentEvents() { 60 Content.ScriptExecutionStarted -= ContentOnScriptExecutionStarted;61 Content.ScriptExecutionFinished -= ContentOnScriptExecutionFinished;62 48 Content.ConsoleOutputChanged -= ContentOnConsoleOutputChanged; 63 Content.ExecutionTimeChanged -= ContentOnExecutionTimeChanged;64 49 base.DeregisterContentEvents(); 65 50 } 66 51 67 52 #region Content event handlers 68 protected virtual void ContentOnScriptExecutionStarted(object sender, EventArgs e) {69 if (InvokeRequired)70 Invoke((Action<object, EventArgs>)ContentOnScriptExecutionStarted, sender, e);71 else {72 Locked = true;73 ReadOnly = true;74 startStopButton.Image = VSImageLibrary.Stop;75 toolTip.SetToolTip(startStopButton, "Stop (Shift+F5)");76 UpdateInfoTextLabel(ScriptExecutionStartedMessage, SystemColors.ControlText);77 infoTabControl.SelectedTab = outputTabPage;78 }79 }80 protected virtual void ContentOnScriptExecutionFinished(object sender, EventArgs<Exception> e) {81 if (InvokeRequired)82 Invoke((Action<object, EventArgs<Exception>>)ContentOnScriptExecutionFinished, sender, e);83 else {84 Locked = false;85 ReadOnly = false;86 startStopButton.Image = VSImageLibrary.Play;87 toolTip.SetToolTip(startStopButton, "Run (F5)");88 89 var ex = e.Value;90 if (ex == null) {91 UpdateInfoTextLabel(ScriptExecutionSuccessfulMessage, Color.DarkGreen);92 } else if (ex is ThreadAbortException) {93 // the execution was canceled by the user94 UpdateInfoTextLabel(ScriptExecutionCanceledMessage, Color.DarkOrange);95 } else {96 UpdateInfoTextLabel(ScriptExecutionFailedMessage, Color.DarkRed);97 PluginInfrastructure.ErrorHandling.ShowErrorDialog(this, ex);98 }99 100 Running = false;101 }102 }103 53 protected virtual void ContentOnConsoleOutputChanged(object sender, EventArgs<string> e) { 104 54 if (InvokeRequired) … … 106 56 else { 107 57 outputTextBox.AppendText(e.Value); 108 }109 }110 protected virtual void ContentOnExecutionTimeChanged(object sender, EventArgs eventArgs) {111 if (InvokeRequired)112 Invoke((Action<object, EventArgs>)ContentOnExecutionTimeChanged, sender, eventArgs);113 else {114 executionTimeTextBox.Text = Content == null ? "-" : Content.ExecutionTime.ToString();115 58 } 116 59 } … … 121 64 if (Content == null) { 122 65 variableStoreView.Content = null; 123 executionTimeTextBox.Text = "-";124 66 } else { 125 67 variableStoreView.Content = Content.VariableStore; 126 executionTimeTextBox.Text = Content.ExecutionTime.ToString();127 68 } 128 69 } 129 130 protected override void SetEnabledStateOfControls() {131 base.SetEnabledStateOfControls();132 startStopButton.Enabled = Content != null && (!Locked || Running);133 }134 135 protected virtual void StartStopButtonOnClick(object sender, EventArgs e) {136 if (Running) {137 Content.Kill();138 } else139 if (Compile()) {140 outputTextBox.Clear();141 Running = true;142 Content.ExecuteAsync();143 }144 }145 146 #region global HotKeys147 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {148 switch (keyData) {149 case Keys.F5:150 if (Content != null && !Locked && !Running) {151 if (Compile()) {152 outputTextBox.Clear();153 Content.ExecuteAsync();154 Running = true;155 }156 }157 return true;158 case Keys.F5 | Keys.Shift:159 if (Running) Content.Kill();160 return true;161 case Keys.F6:162 if (!Running) base.ProcessCmdKey(ref msg, keyData);163 return true;164 }165 return base.ProcessCmdKey(ref msg, keyData);166 }167 #endregion168 70 } 169 71 }
Note: See TracChangeset
for help on using the changeset viewer.