Changeset 5042 for trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs
- Timestamp:
- 12/06/10 18:17:09 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs
r4838 r5042 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Drawing; 24 25 using System.Linq; 25 26 using System.Reflection; … … 33 34 34 35 namespace HeuristicLab.Operators.Programmable { 36 35 37 [View("ProgrammableOperator View")] 36 38 [Content(typeof(ProgrammableOperator), true)] … … 55 57 ProgrammableOperator.CodeChanged += ProgrammableOperator_CodeChanged; 56 58 ProgrammableOperator.SignatureChanged += ProgrammableOperator_SignatureChanged; 59 ProgrammableOperator.BreakpointChanged += ProgrammableOperator_BreakpointChanged; 57 60 } 58 61 … … 60 63 ProgrammableOperator.CodeChanged -= ProgrammableOperator_CodeChanged; 61 64 ProgrammableOperator.SignatureChanged -= ProgrammableOperator_SignatureChanged; 65 ProgrammableOperator.BreakpointChanged -= ProgrammableOperator_BreakpointChanged; 62 66 base.DeregisterContentEvents(); 63 67 } 68 69 #region Content event handlers 70 void ProgrammableOperator_BreakpointChanged(object sender, EventArgs e) { 71 breakpointCheckBox.Checked = ProgrammableOperator.Breakpoint; 72 } 73 private void ProgrammableOperator_CodeChanged(object sender, EventArgs e) { 74 codeEditor.Text = ProgrammableOperator.Code; 75 } 76 private void ProgrammableOperator_SignatureChanged(object sender, EventArgs args) { 77 codeEditor.Prefix = GetGeneratedPrefix(); 78 } 79 #endregion 64 80 65 81 protected override void OnContentChanged() { … … 86 102 ProgrammableOperator.CompilationUnitCode.Length > 0; 87 103 parameterCollectionView.Content = ProgrammableOperator.Parameters; 104 if (ProgrammableOperator.CompileErrors == null) { 105 compilationLabel.ForeColor = SystemColors.ControlDarkDark; 106 compilationLabel.Text = "not compiled"; 107 } else if (ProgrammableOperator.CompileErrors.HasErrors) { 108 compilationLabel.ForeColor = Color.DarkRed; 109 compilationLabel.Text = "compilation failed"; 110 } else { 111 compilationLabel.ForeColor = Color.DarkGreen; 112 compilationLabel.Text = "compilation successful"; 113 } 114 88 115 } 89 116 } … … 96 123 compileButton.Enabled = Content != null && !ReadOnly; 97 124 codeEditor.Enabled = Content != null && !ReadOnly; 98 } 99 100 101 private string GetGeneratedPrefix() { 102 StringBuilder prefix = new StringBuilder(); 103 foreach (var ns in ProgrammableOperator.GetSelectedAndValidNamespaces()) { 104 prefix.Append("using ").Append(ns).AppendLine(";"); 105 } 106 prefix.AppendLine(); 107 prefix.Append("public class ").Append(ProgrammableOperator.CompiledTypeName).AppendLine(" {"); 108 prefix.Append(" ").Append(ProgrammableOperator.Signature).AppendLine(" {"); 109 return prefix.ToString(); 110 } 111 125 showCodeButton.Enabled = Content != null && !string.IsNullOrEmpty(ProgrammableOperator.CompilationUnitCode) && !ReadOnly; 126 } 127 128 #region Child Control event handlers 129 private void compileButton_Click(object sender, EventArgs e) { 130 Recompile(); 131 } 132 private void breakpointCheckBox_CheckedChanged(object sender, EventArgs e) { 133 if (ProgrammableOperator != null) ProgrammableOperator.Breakpoint = breakpointCheckBox.Checked; 134 } 135 private void showCodeButton_Click(object sender, EventArgs e) { 136 new CodeViewer(ProgrammableOperator.CompilationUnitCode).ShowDialog(this); 137 } 112 138 private void codeEditor_Validated(object sender, EventArgs e) { 113 139 ProgrammableOperator.Code = codeEditor.UserCode; 114 140 } 115 116 private void Recompile() {117 this.Enabled = false;118 try {119 ProgrammableOperator.Compile();120 MessageBox.Show("Compilation successful", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);121 } catch (Exception ex) {122 ErrorHandling.ShowErrorDialog(this, ex);123 }124 OnContentChanged();125 this.Enabled = true;126 }127 128 private void compileButton_Click(object sender, EventArgs e) {129 Recompile();130 }131 132 #region ProgrammableOperator Events133 private void ProgrammableOperator_CodeChanged(object sender, EventArgs e) {134 codeEditor.Text = ProgrammableOperator.Code;135 }136 private void ProgrammableOperator_SignatureChanged(object sender, EventArgs args) {137 codeEditor.Prefix = GetGeneratedPrefix();138 }139 #endregion140 141 141 private void assembliesTreeView_AfterCheck(object sender, TreeViewEventArgs e) { 142 142 if (initializing) … … 158 158 InitializeNamespacesList(); 159 159 codeEditor.Prefix = GetGeneratedPrefix(); 160 } 161 private void namespacesTreeView_AfterCheck(object sender, TreeViewEventArgs e) { 162 if (initializing) 163 return; 164 if (e.Node.Checked) { 165 ProgrammableOperator.SelectNamespace(e.Node.FullPath); 166 } else { 167 ProgrammableOperator.UnselectNamespace(e.Node.FullPath); 168 } 169 codeEditor.Prefix = GetGeneratedPrefix(); 170 } 171 #endregion 172 173 #region global HotKeys 174 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { 175 if (keyData == Keys.F6) { 176 Control activeControl = ActiveControl; 177 compileButton.Focus(); 178 Recompile(); 179 if (activeControl != null) 180 activeControl.Focus(); 181 return true; 182 } 183 return base.ProcessCmdKey(ref msg, keyData); 184 } 185 #endregion 186 187 #region Auxiliary functions 188 189 private string GetGeneratedPrefix() { 190 StringBuilder prefix = new StringBuilder(); 191 foreach (var ns in ProgrammableOperator.GetSelectedAndValidNamespaces()) { 192 prefix.Append("using ").Append(ns).AppendLine(";"); 193 } 194 prefix.AppendLine(); 195 prefix.Append("public class ").Append(ProgrammableOperator.CompiledTypeName).AppendLine(" {"); 196 prefix.Append(" ").Append(ProgrammableOperator.Signature).AppendLine(" {"); 197 return prefix.ToString(); 198 } 199 200 private void Recompile() { 201 this.Enabled = false; 202 try { 203 ProgrammableOperator.Compile(); 204 } catch (Exception ex) { 205 ErrorHandling.ShowErrorDialog(this, ex); 206 } 207 OnContentChanged(); 208 this.Enabled = true; 160 209 } 161 210 … … 265 314 } 266 315 267 private void namespacesTreeView_AfterCheck(object sender, TreeViewEventArgs e) { 268 if (initializing) 269 return; 270 if (e.Node.Checked) { 271 ProgrammableOperator.SelectNamespace(e.Node.FullPath); 272 } else { 273 ProgrammableOperator.UnselectNamespace(e.Node.FullPath); 274 } 275 codeEditor.Prefix = GetGeneratedPrefix(); 276 } 277 278 private void showCodeButton_Click(object sender, EventArgs e) { 279 new CodeViewer(ProgrammableOperator.CompilationUnitCode).ShowDialog(this); 280 } 316 #endregion 281 317 } 282 318 }
Note: See TracChangeset
for help on using the changeset viewer.