Ignore:
Timestamp:
10/29/15 12:50:06 (6 years ago)
Author:
jkarder
Message:

#2298: added ExecutableScript and ExecutableScriptView

Location:
trunk/sources/HeuristicLab.Scripting.Views/3.3
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Scripting.Views/3.3/CSharpScriptView.Designer.cs

    r13024 r13080  
    2020#endregion
    2121
    22 using System.Windows.Forms;
    2322
    2423namespace HeuristicLab.Scripting.Views {
     
    4746    /// </summary>
    4847    private void InitializeComponent() {
    49       this.components = new System.ComponentModel.Container();
    50       this.startStopButton = new System.Windows.Forms.Button();
    5148      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
    5249      this.variableStoreView = new HeuristicLab.Scripting.Views.VariableStoreView();
    5350      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
    54       this.executionTimeTextBox = new System.Windows.Forms.TextBox();
    55       this.executionTimeLabel = new System.Windows.Forms.Label();
     51      this.infoTabControl.SuspendLayout();
     52      this.outputTabPage.SuspendLayout();
     53      this.errorListTabPage.SuspendLayout();
    5654      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
    5755      this.splitContainer1.Panel1.SuspendLayout();
     56      this.splitContainer1.Panel2.SuspendLayout();
    5857      this.splitContainer1.SuspendLayout();
    5958      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
     
    6463      this.SuspendLayout();
    6564      //
    66       // splitContainer1.Panel1
     65      // executionTimeLabel
    6766      //
    68       this.splitContainer1.Panel1.Controls.Add(this.executionTimeTextBox);
    69       this.splitContainer1.Panel1.Controls.Add(this.executionTimeLabel);
    70       this.splitContainer1.Panel1.Controls.SetChildIndex(this.executionTimeTextBox, 0);
    71       this.splitContainer1.Panel1.Controls.SetChildIndex(this.executionTimeLabel, 0);
     67      this.executionTimeLabel.Location = new System.Drawing.Point(394, 393);
     68      //
     69      // executionTimeTextBox
     70      //
     71      this.executionTimeTextBox.Location = new System.Drawing.Point(483, 390);
     72      //
     73      // splitContainer1
     74      //
     75      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
     76      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
     77      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
    7278      this.splitContainer1.Size = new System.Drawing.Size(637, 543);
    73       //
    74       // nameTextBox
    75       //
    76       this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
    77       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
    78       this.nameTextBox.Location = new System.Drawing.Point(60, 0);
    79       this.nameTextBox.Size = new System.Drawing.Size(750, 20);
    80       //
    81       // infoLabel
    82       //
    83       this.infoLabel.Location = new System.Drawing.Point(816, 4);
    84       //
    85       // startStopButton
    86       //
    87       this.startStopButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Play;
    88       this.startStopButton.Location = new System.Drawing.Point(36, 26);
    89       this.startStopButton.Name = "startStopButton";
    90       this.startStopButton.Size = new System.Drawing.Size(24, 24);
    91       this.startStopButton.TabIndex = 1;
    92       this.startStopButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
    93       this.toolTip.SetToolTip(this.startStopButton, "Run (F5)");
    94       this.startStopButton.UseVisualStyleBackColor = true;
    95       this.startStopButton.Click += new System.EventHandler(this.StartStopButtonOnClick);
     79      this.splitContainer1.SplitterDistance = 427;
    9680      //
    9781      // splitContainer2
     
    11498      this.splitContainer2.SplitterDistance = 637;
    11599      this.splitContainer2.TabIndex = 7;
    116       //
    117       // splitContainer1
    118       //
    119       this.splitContainer1.Location = new System.Drawing.Point(0, 0);
    120       this.splitContainer1.Dock = DockStyle.Fill;
    121100      //
    122101      // variableStoreView
     
    145124      this.viewHost.ViewType = null;
    146125      //
    147       // executionTimeTextBox
    148       //
    149       this.executionTimeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    150       this.executionTimeTextBox.Location = new System.Drawing.Point(483, 390);
    151       this.executionTimeTextBox.Name = "executionTimeTextBox";
    152       this.executionTimeTextBox.ReadOnly = true;
    153       this.executionTimeTextBox.Size = new System.Drawing.Size(137, 20);
    154       this.executionTimeTextBox.TabIndex = 17;
    155       //
    156       // executionTimeLabel
    157       //
    158       this.executionTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
    159       this.executionTimeLabel.AutoSize = true;
    160       this.executionTimeLabel.Location = new System.Drawing.Point(394, 393);
    161       this.executionTimeLabel.Name = "executionTimeLabel";
    162       this.executionTimeLabel.Size = new System.Drawing.Size(83, 13);
    163       this.executionTimeLabel.TabIndex = 16;
    164       this.executionTimeLabel.Text = "&Execution Time:";
    165       //
    166       // ScriptView
     126      // CSharpScriptView
    167127      //
    168128      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
    169129      this.Controls.Add(this.splitContainer2);
    170       this.Controls.Add(this.startStopButton);
    171       this.Name = "ScriptView";
    172       this.Size = new System.Drawing.Size(835, 602);
     130      this.Name = "CSharpScriptView";
     131      this.Controls.SetChildIndex(this.infoTextLabel, 0);
     132      this.Controls.SetChildIndex(this.compileButton, 0);
    173133      this.Controls.SetChildIndex(this.startStopButton, 0);
    174134      this.Controls.SetChildIndex(this.splitContainer2, 0);
     
    176136      this.Controls.SetChildIndex(this.nameTextBox, 0);
    177137      this.Controls.SetChildIndex(this.infoLabel, 0);
     138      this.infoTabControl.ResumeLayout(false);
     139      this.outputTabPage.ResumeLayout(false);
     140      this.outputTabPage.PerformLayout();
     141      this.errorListTabPage.ResumeLayout(false);
    178142      this.splitContainer1.Panel1.ResumeLayout(false);
    179143      this.splitContainer1.Panel1.PerformLayout();
     144      this.splitContainer1.Panel2.ResumeLayout(false);
    180145      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
    181146      this.splitContainer1.ResumeLayout(false);
     147      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
    182148      this.splitContainer2.Panel1.ResumeLayout(false);
    183149      this.splitContainer2.Panel2.ResumeLayout(false);
     
    191157    #endregion
    192158
    193     protected System.Windows.Forms.Button startStopButton;
    194159    protected System.Windows.Forms.SplitContainer splitContainer2;
    195160    protected MainForm.WindowsForms.ViewHost viewHost;
    196161    protected VariableStoreView variableStoreView;
    197     protected TextBox executionTimeTextBox;
    198     protected Label executionTimeLabel;
    199162  }
    200163}
  • trunk/sources/HeuristicLab.Scripting.Views/3.3/CSharpScriptView.cs

    r13024 r13080  
    2121
    2222using System;
    23 using System.Drawing;
    24 using System.Threading;
    2523using System.Windows.Forms;
    2624using HeuristicLab.Common;
    27 using HeuristicLab.Common.Resources;
    2825using HeuristicLab.MainForm;
    2926
     
    3229  [View("C# Script View")]
    3330  [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 {
    4132
    4233    public new CSharpScript Content {
     
    5142    protected override void RegisterContentEvents() {
    5243      base.RegisterContentEvents();
    53       Content.ScriptExecutionStarted += ContentOnScriptExecutionStarted;
    54       Content.ScriptExecutionFinished += ContentOnScriptExecutionFinished;
    5544      Content.ConsoleOutputChanged += ContentOnConsoleOutputChanged;
    56       Content.ExecutionTimeChanged += ContentOnExecutionTimeChanged;
    5745    }
    5846
    5947    protected override void DeregisterContentEvents() {
    60       Content.ScriptExecutionStarted -= ContentOnScriptExecutionStarted;
    61       Content.ScriptExecutionFinished -= ContentOnScriptExecutionFinished;
    6248      Content.ConsoleOutputChanged -= ContentOnConsoleOutputChanged;
    63       Content.ExecutionTimeChanged -= ContentOnExecutionTimeChanged;
    6449      base.DeregisterContentEvents();
    6550    }
    6651
    6752    #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 user
    94           UpdateInfoTextLabel(ScriptExecutionCanceledMessage, Color.DarkOrange);
    95         } else {
    96           UpdateInfoTextLabel(ScriptExecutionFailedMessage, Color.DarkRed);
    97           PluginInfrastructure.ErrorHandling.ShowErrorDialog(this, ex);
    98         }
    99 
    100         Running = false;
    101       }
    102     }
    10353    protected virtual void ContentOnConsoleOutputChanged(object sender, EventArgs<string> e) {
    10454      if (InvokeRequired)
     
    10656      else {
    10757        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();
    11558      }
    11659    }
     
    12164      if (Content == null) {
    12265        variableStoreView.Content = null;
    123         executionTimeTextBox.Text = "-";
    12466      } else {
    12567        variableStoreView.Content = Content.VariableStore;
    126         executionTimeTextBox.Text = Content.ExecutionTime.ToString();
    12768      }
    12869    }
    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       } else
    139         if (Compile()) {
    140         outputTextBox.Clear();
    141         Running = true;
    142         Content.ExecuteAsync();
    143       }
    144     }
    145 
    146     #region global HotKeys
    147     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     #endregion
    16870  }
    16971}
  • trunk/sources/HeuristicLab.Scripting.Views/3.3/HeuristicLab.Scripting.Views-3.3.csproj

    r11807 r13080  
    9797    <Compile Include="CSharpScriptView.Designer.cs">
    9898      <DependentUpon>CSharpScriptView.cs</DependentUpon>
     99    </Compile>
     100    <Compile Include="ExecutableScriptView.cs">
     101      <SubType>UserControl</SubType>
     102    </Compile>
     103    <Compile Include="ExecutableScriptView.Designer.cs">
     104      <DependentUpon>ExecutableScriptView.cs</DependentUpon>
    99105    </Compile>
    100106    <Compile Include="ScriptView.cs">
Note: See TracChangeset for help on using the changeset viewer.