private void btnExpressionSave_Click(object sender, EventArgs e)
        {
            if (this.CurrentProfile.DisplayOptions.Expressions.Any(p => p != SelectedExpression && p.Name == txtExpressionName.Text))
            {
                MessageBox.Show("Duplicate Expression Name");
                return;
            }

            if (this.CurrentProfile.ECUFile.Measurements.Values.Any(m => m.Name == txtExpressionName.Text))
            {
                MessageBox.Show("Invalid Expression Name");
                return;
            }

            if (this.ExpressionEditMode == EditModes.Add)
            {
                this.SelectedExpression = new Session.ExpressionVariable(txtExpressionName.Text, txtExpressionUnit.Text, txtExpressionExpression.Text);
                this.CurrentProfile.DisplayOptions.Expressions.Add(SelectedExpression);
            }
            this.SelectedExpression.Name       = txtExpressionName.Text;
            this.SelectedExpression.Unit       = txtExpressionUnit.Text;
            this.SelectedExpression.Expression = txtExpressionExpression.Text;

            lstExpressions.DataSource   = null;
            lstExpressions.DataSource   = this.CurrentProfile.DisplayOptions.Expressions;
            lstExpressions.SelectedItem = this.SelectedExpression;

            this.ExpressionEditMode = EditModes.View;
            SwitchUI();
        }
 private void lstExpressions_SelectedIndexChanged(object sender, EventArgs e)
 {
     this.SelectedExpression           = lstExpressions.SelectedItem as Session.ExpressionVariable;
     this.txtExpressionName.Text       = this.SelectedExpression != null ? this.SelectedExpression.Name : string.Empty;
     this.txtExpressionUnit.Text       = this.SelectedExpression != null ? this.SelectedExpression.Unit : string.Empty;
     this.txtExpressionExpression.Text = this.SelectedExpression != null ? this.SelectedExpression.Expression : string.Empty;
     this.SwitchUI();
 }
 private void ReadExpressions(XElement ele)
 {
     foreach (XElement e in ele.Elements())
     {
         Session.ExpressionVariable v = new Session.ExpressionVariable();
         v.Read(e);
         Expressions.Add(v);
     }
 }
 private void btnExpressionClone_Click(object sender, EventArgs e)
 {
     Session.ExpressionVariable clone = ((Session.ExpressionVariable)lstExpressions.SelectedItem).Clone();
     clone.Name += " Clone";
     while (true)
     {
         if (this.CurrentProfile.DisplayOptions.Expressions.Any(p => p.Name == clone.Name))
         {
             clone.Name += " Clone";
         }
         else
         {
             break;
         }
     }
     this.CurrentProfile.DisplayOptions.Expressions.Add(clone);
     lstExpressions.DataSource   = null;
     lstExpressions.DataSource   = this.CurrentProfile.DisplayOptions.Expressions;
     lstExpressions.SelectedItem = clone;
 }