diff options
| author | a1xd <[email protected]> | 2020-07-31 17:56:46 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-07-31 17:56:46 -0400 |
| commit | 1fcbb0fa51dbc35958d211026e4d40384a049049 (patch) | |
| tree | efb65bf3f305f376ea75f4f687b08bf8998c020f /grapher/AccelOptions.cs | |
| parent | Merge pull request #6 from a1xd/st-refactor (diff) | |
| parent | Show no settings for off, remove unused class for PR (diff) | |
| download | rawaccel-1fcbb0fa51dbc35958d211026e4d40384a049049.tar.xz rawaccel-1fcbb0fa51dbc35958d211026e4d40384a049049.zip | |
Merge pull request #7 from JacobPalecki/GUI
Add GUI
Diffstat (limited to 'grapher/AccelOptions.cs')
| -rw-r--r-- | grapher/AccelOptions.cs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/grapher/AccelOptions.cs b/grapher/AccelOptions.cs new file mode 100644 index 0000000..b233552 --- /dev/null +++ b/grapher/AccelOptions.cs @@ -0,0 +1,79 @@ +using grapher.Layouts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace grapher +{ + public class AccelOptions + { + public const int PossibleOptionsCount = 4; + public const int PossibleOptionsXYCount = 2; + + public static readonly Dictionary<string, LayoutBase> AccelerationTypes = new List<LayoutBase> + { + new DefaultLayout(), + new LinearLayout(), + new ClassicLayout(), + new NaturalLayout(), + new LogLayout(), + new SigmoidLayout(), + new PowerLayout(), + new OffLayout() + }.ToDictionary(k => k.Name); + + public AccelOptions( + ComboBox accelDropdown, + Option[] options, + OptionXY[] optionsXY, + Button writeButton) + { + AccelDropdown = accelDropdown; + AccelDropdown.Items.Clear(); + AccelDropdown.Items.AddRange(AccelerationTypes.Keys.Skip(1).ToArray()); + AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged); + + if (options.Length > PossibleOptionsCount) + { + throw new Exception("Layout given too many options."); + } + + if (optionsXY.Length > PossibleOptionsXYCount) + { + throw new Exception("Layout given too many options."); + } + + Options = options; + OptionsXY = optionsXY; + WriteButton = writeButton; + + Layout("Default"); + } + + public Button WriteButton { get; } + + public ComboBox AccelDropdown { get; } + + public int AccelerationIndex { get; private set; } + + public Option[] Options { get; } + + public OptionXY[] OptionsXY { get; } + + private void OnIndexChanged(object sender, EventArgs e) + { + var accelerationTypeString = AccelDropdown.SelectedItem.ToString(); + Layout(accelerationTypeString); + } + + private void Layout(string type) + { + var accelerationType = AccelerationTypes[type]; + AccelerationIndex = accelerationType.Index; + accelerationType.Layout(Options, OptionsXY, WriteButton); + } + } +} |