diff -r 5400e3e383f7 -r 1a7c13ac7348 GUI/ParameterForm.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GUI/ParameterForm.cs Sat Feb 27 15:55:17 2010 +0000 @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; +using System.Windows.Forms; +using OpenHardwareMonitor.Hardware; +using OpenHardwareMonitor.Utilities; + +namespace OpenHardwareMonitor.GUI { + public partial class ParameterForm : Form { + + private IReadOnlyArray parameters; + private BindingList parameterRows; + + public ParameterForm() { + InitializeComponent(); + } + + public IReadOnlyArray Parameters { + get { + return parameters; + } + set { + parameters = value; + parameterRows = new BindingList(); + foreach (IParameter parameter in parameters) + parameterRows.Add(new ParameterRow(parameter)); + bindingSource.DataSource = parameterRows; + } + } + + private class ParameterRow : INotifyPropertyChanged { + public IParameter parameter; + private float value; + public bool isDefault; + + public event PropertyChangedEventHandler PropertyChanged; + + private void NotifyPropertyChanged(String propertyName) { + if (PropertyChanged != null) { + PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); + } + } + + public ParameterRow(IParameter parameter){ + this.parameter = parameter; + this.value = parameter.Value; + this.isDefault = parameter.IsDefault; + } + + public string Name { + get { return parameter.Name; } + } + + public float Value { + get { return value; } + set { + this.isDefault = false; + this.value = value; + NotifyPropertyChanged("Default"); + NotifyPropertyChanged("Value"); + } + } + + public bool Default { + get { return isDefault; } + set { + isDefault = value; + if (value) + this.value = parameter.DefaultValue; + NotifyPropertyChanged("Default"); + NotifyPropertyChanged("Value"); + } + } + } + + private void dataGridView_RowEnter(object sender, + DataGridViewCellEventArgs e) + { + if (e.RowIndex >= 0 && e.RowIndex < parameters.Length) + descriptionLabel.Text = parameters[e.RowIndex].Description; + else + descriptionLabel.Text = ""; + } + + private void dataGridView_CellValidating(object sender, + DataGridViewCellValidatingEventArgs e) + { + float value; + if (e.ColumnIndex == 2 && + !float.TryParse(e.FormattedValue.ToString(), out value)) { + dataGridView.Rows[e.RowIndex].Cells[0].ErrorText = + "Invalid value"; + e.Cancel = true; + } + } + + private void dataGridView_CellEndEdit(object sender, + DataGridViewCellEventArgs e) { + dataGridView.Rows[e.RowIndex].Cells[0].ErrorText = ""; + } + + private void okButton_Click(object sender, EventArgs e) { + foreach (ParameterRow row in parameterRows) { + if (row.Default) { + row.parameter.IsDefault = true; + } else { + row.parameter.Value = row.Value; + } + } + } + + private void dataGridView_CurrentCellDirtyStateChanged(object sender, + EventArgs e) { + if (dataGridView.CurrentCell is DataGridViewCheckBoxCell || + dataGridView.CurrentCell is DataGridViewComboBoxCell) + { + dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit); + } + } + } +}