Changeset 11937 for stable/HeuristicLab.Scripting.Views/3.3/ScriptView.cs
- Timestamp:
- 02/06/15 12:44:09 (9 years ago)
- Location:
- stable
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Scripting.Views/3.3/ScriptView.cs
r11908 r11937 22 22 using System; 23 23 using System.CodeDom.Compiler; 24 using System.Collections.Generic; 24 25 using System.Drawing; 25 26 using System.Globalization; 26 27 using System.Linq; 28 using System.Reflection; 27 29 using System.Windows.Forms; 30 using HeuristicLab.Common; 28 31 using HeuristicLab.Common.Resources; 29 32 using HeuristicLab.Core.Views; … … 35 38 [Content(typeof(Script), true)] 36 39 public partial class ScriptView : NamedItemView { 40 private const string NotCompiledMessage = "Not compiled"; 41 private const string CompilationSucceededMessage = "Compilation succeeded"; 42 private const string CompilationFailedMessage = "Compilation failed"; 43 private const string AssembliesLoadingMessage = "Loading Assemblies"; 44 private const string AssembliesUnloadingMessage = "Unloading Assemblies"; 45 private const int SilentAssemblyLoadingOperationLimit = 10; 46 37 47 #region Properties 38 48 public new Script Content { … … 73 83 codeEditor.UserCode = string.Empty; 74 84 } else { 75 if (codeEditor.UserCode != Content.Code) 76 codeEditor.UserCode = Content.Code; 77 foreach (var asm in Content.GetAssemblies()) 78 codeEditor.AddAssembly(asm); 85 codeEditor.UserCode = Content.Code; 86 codeEditor.AddAssembliesAsync(Content.GetAssemblies()); 79 87 if (Content.CompileErrors == null) { 80 compilationLabel.ForeColor = SystemColors.ControlDarkDark; 81 compilationLabel.Text = "Not compiled"; 82 } else if (Content.CompileErrors.HasErrors) { 83 compilationLabel.ForeColor = Color.DarkRed; 84 compilationLabel.Text = "Compilation failed"; 85 } else { 86 compilationLabel.ForeColor = Color.DarkGreen; 87 compilationLabel.Text = "Compilation successful"; 88 UpdateInfoTextLabel(NotCompiledMessage, SystemColors.ControlText); 88 89 } 89 90 } … … 114 115 try { 115 116 Content.Compile(); 116 outputTextBox.AppendText("Compilation succeeded."); 117 outputTextBox.AppendText(CompilationSucceededMessage); 118 UpdateInfoTextLabel(CompilationSucceededMessage, Color.DarkGreen); 117 119 return true; 118 120 } catch (CompilationException) { 119 121 if (Content.CompileErrors.HasErrors) { 120 outputTextBox.AppendText("Compilation failed."); 122 outputTextBox.AppendText(CompilationFailedMessage); 123 UpdateInfoTextLabel(CompilationFailedMessage, Color.DarkRed); 121 124 return false; 122 125 } else { 123 outputTextBox.AppendText("Compilation succeeded."); 126 outputTextBox.AppendText(CompilationSucceededMessage); 127 UpdateInfoTextLabel(CompilationSucceededMessage, Color.DarkGreen); 124 128 return true; 125 129 } … … 131 135 Locked = false; 132 136 codeEditor.Focus(); 133 OnContentChanged();134 137 } 135 138 } … … 137 140 #region Helpers 138 141 protected virtual void ShowCompilationResults() { 139 if (Content.CompileErrors.Count == 0) return;140 141 142 var messages = Content.CompileErrors.OfType<CompilerError>() 142 143 .OrderBy(x => x.IsWarning) … … 157 158 } 158 159 159 codeEditor.ShowCompileErrors(Content.CompileErrors , ".cs");160 codeEditor.ShowCompileErrors(Content.CompileErrors); 160 161 161 162 AdjustErrorListViewColumnSizes(); 163 } 164 165 protected virtual void UpdateInfoTextLabel(string message, Color color) { 166 infoTextLabel.Text = message; 167 infoTextLabel.ForeColor = color; 162 168 } 163 169 … … 167 173 ch.Width = -2; 168 174 } 175 176 #region ProgressView 177 private bool progressViewCreated; 178 179 private void AddProgressView(string progressMessage) { 180 var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>(); 181 mainForm.AddOperationProgressToView(this, progressMessage); 182 progressViewCreated = true; 183 } 184 185 private void RemoveProgressView() { 186 if (!progressViewCreated) return; 187 var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>(); 188 mainForm.RemoveOperationProgressFromView(this); 189 progressViewCreated = false; 190 } 191 #endregion 169 192 #endregion 170 193 171 194 #region Event Handlers 172 195 private void Content_CodeChanged(object sender, EventArgs e) { 173 if (InvokeRequired) 174 Invoke(new EventHandler(Content_CodeChanged), sender, e); 196 if (InvokeRequired) Invoke((Action<object, EventArgs>)Content_CodeChanged, sender, e); 175 197 else { 176 198 codeEditor.UserCode = Content.Code; … … 196 218 } 197 219 #endregion 220 221 private void codeEditor_AssembliesLoading(object sender, EventArgs<IEnumerable<Assembly>> e) { 222 if (InvokeRequired) Invoke((Action<object, EventArgs<IEnumerable<Assembly>>>)codeEditor_AssembliesLoading, sender, e); 223 else { 224 int nrOfAssemblies = e.Value.Count(); 225 if (nrOfAssemblies > SilentAssemblyLoadingOperationLimit) 226 AddProgressView(AssembliesLoadingMessage); 227 } 228 } 229 230 private void codeEditor_AssembliesLoaded(object sender, EventArgs<IEnumerable<Assembly>> e) { 231 if (InvokeRequired) Invoke((Action<object, EventArgs<IEnumerable<Assembly>>>)codeEditor_AssembliesLoaded, sender, e); 232 else { 233 RemoveProgressView(); 234 } 235 } 236 237 private void codeEditor_AssembliesUnloading(object sender, EventArgs<IEnumerable<Assembly>> e) { 238 if (InvokeRequired) Invoke((Action<object, EventArgs<IEnumerable<Assembly>>>)codeEditor_AssembliesUnloading, sender, e); 239 else { 240 int nrOfAssemblies = e.Value.Count(); 241 if (nrOfAssemblies > SilentAssemblyLoadingOperationLimit) 242 AddProgressView(AssembliesUnloadingMessage); 243 } 244 } 245 246 private void codeEditor_AssembliesUnloaded(object sender, EventArgs<IEnumerable<Assembly>> e) { 247 if (InvokeRequired) Invoke((Action<object, EventArgs<IEnumerable<Assembly>>>)codeEditor_AssembliesUnloaded, sender, e); 248 else { 249 RemoveProgressView(); 250 } 251 } 198 252 } 199 253 }
Note: See TracChangeset
for help on using the changeset viewer.