summaryrefslogtreecommitdiff
path: root/grapher/Models/Options
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-09-07 15:19:39 -0700
committerJacob Palecki <[email protected]>2020-09-07 15:19:39 -0700
commitaff3a066575f4bfa429f67a5104a1fcffc5f326e (patch)
tree975c8cf984e97d818ebf530b68a246f4a4b1aefb /grapher/Models/Options
parentPass args by ref for setting (diff)
downloadrawaccel-aff3a066575f4bfa429f67a5104a1fcffc5f326e.tar.xz
rawaccel-aff3a066575f4bfa429f67a5104a1fcffc5f326e.zip
Refactor type options
Diffstat (limited to 'grapher/Models/Options')
-rw-r--r--grapher/Models/Options/AccelOptionSet.cs83
-rw-r--r--grapher/Models/Options/AccelTypeOptions.cs116
-rw-r--r--grapher/Models/Options/ApplyOptions.cs4
-rw-r--r--grapher/Models/Options/CapOptions.cs40
-rw-r--r--grapher/Models/Options/IOption.cs27
-rw-r--r--grapher/Models/Options/OffsetOptions.cs65
-rw-r--r--grapher/Models/Options/Option.cs34
-rw-r--r--grapher/Models/Options/OptionBase.cs30
8 files changed, 286 insertions, 113 deletions
diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs
index 3b9b534..8c7b303 100644
--- a/grapher/Models/Options/AccelOptionSet.cs
+++ b/grapher/Models/Options/AccelOptionSet.cs
@@ -13,25 +13,13 @@ namespace grapher.Models.Options
public AccelOptionSet(
Label titleLabel,
int topAnchor,
- AccelTypeOptions accelTypeOptions,
- Option acceleration,
- CapOptions cap,
- Option weight,
- OffsetOptions offset,
- Option limitOrExp,
- Option midpoint)
+ AccelTypeOptions accelTypeOptions)
{
TitleLabel = titleLabel;
TopAnchor = topAnchor;
- AccelTypeOptions = accelTypeOptions;
- Acceleration = acceleration;
- Cap = cap;
- Weight = weight;
- Offset = offset;
- LimitOrExponent = limitOrExp;
- Midpoint = midpoint;
+ Options = accelTypeOptions;
- AccelTypeOptions.ShowFullText();
+ Options.ShowFull();
TitleLabel.Top = TopAnchor;
IsTitleMode = true;
@@ -42,19 +30,8 @@ namespace grapher.Models.Options
public Label TitleLabel { get; }
- public AccelTypeOptions AccelTypeOptions { get; }
+ public AccelTypeOptions Options { get; }
- public Option Acceleration { get; }
-
- public CapOptions Cap { get; }
-
- public Option Weight { get; }
-
- public OffsetOptions Offset { get; }
-
- public Option LimitOrExponent { get; }
-
- public Option Midpoint { get; }
public bool IsTitleMode { get; private set; }
@@ -65,9 +42,7 @@ namespace grapher.Models.Options
IsTitleMode = false;
HideTitle();
- AccelTypeOptions.Left = Acceleration.Left;
- AccelTypeOptions.Width = Acceleration.Width;
- AccelTypeOptions.ShowFullText();
+ Options.ShowFull();
}
}
@@ -79,9 +54,7 @@ namespace grapher.Models.Options
{
IsTitleMode = true;
- AccelTypeOptions.Left = Acceleration.Field.Left;
- AccelTypeOptions.Width = Acceleration.Field.Width;
- AccelTypeOptions.ShowShortenedText();
+ Options.ShowShortened();
DisplayTitle();
}
}
@@ -89,7 +62,7 @@ namespace grapher.Models.Options
public void Hide()
{
TitleLabel.Hide();
- AccelTypeOptions.Hide();
+ Options.Hide();
}
public void Show()
@@ -99,66 +72,36 @@ namespace grapher.Models.Options
TitleLabel.Show();
}
- AccelTypeOptions.Show();
+ Options.Show();
}
public void DisplayTitle()
{
TitleLabel.Show();
- SetOptionsTop(TitleLabel.Top + TitleLabel.Height + Constants.OptionVerticalSeperation);
+ Options.Top = TitleLabel.Top + TitleLabel.Height + Constants.OptionVerticalSeperation;
}
public void HideTitle()
{
TitleLabel.Hide();
- SetOptionsTop(TopAnchor);
+ Options.Top = TopAnchor;
}
public void SetArgs(ref AccelArgs args)
{
- args.accel = Acceleration.Field.Data;
- args.rate = Acceleration.Field.Data;
- args.powerScale = Acceleration.Field.Data;
- args.gainCap = Cap.VelocityGainCap;
- args.scaleCap = Cap.SensitivityCap;
- args.limit = LimitOrExponent.Field.Data;
- args.exponent = LimitOrExponent.Field.Data;
- args.powerExponent = LimitOrExponent.Field.Data;
- args.offset = Offset.Offset;
- args.legacy_offset = Offset.LegacyOffset;
- args.midpoint = Midpoint.Field.Data;
- args.weight = Weight.Field.Data;
+ Options.SetArgs(ref args);
}
public AccelArgs GenerateArgs()
{
- AccelArgs args = new AccelArgs();
- SetArgs(ref args);
- return args;
+ return Options.GenerateArgs();
}
public void SetActiveValues(int mode, AccelArgs args)
{
- AccelTypeOptions.SetActiveValue(mode);
- Weight.SetActiveValue(args.weight);
- Cap.SetActiveValues(args.gainCap, args.scaleCap, args.gainCap > 0);
- Offset.SetActiveValue(args.offset, args.legacy_offset);
- Acceleration.SetActiveValue(args.accel);
- LimitOrExponent.SetActiveValue(args.exponent);
- Midpoint.SetActiveValue(args.midpoint);
- }
-
- private void SetOptionsTop(int top)
- {
- AccelTypeOptions.Top = top;
- Acceleration.Top = AccelTypeOptions.Top + AccelTypeOptions.Height + Constants.OptionVerticalSeperation;
- Cap.SnapTo(Acceleration);
- Weight.SnapTo(Cap);
- Offset.OffsetOption.SnapTo(Weight);
- LimitOrExponent.SnapTo(Offset.OffsetOption);
- Midpoint.SnapTo(LimitOrExponent);
+ Options.SetActiveValues(mode, args);
}
}
}
diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs
index f05d617..878c955 100644
--- a/grapher/Models/Options/AccelTypeOptions.cs
+++ b/grapher/Models/Options/AccelTypeOptions.cs
@@ -1,5 +1,6 @@
using grapher.Layouts;
using grapher.Models.Options;
+using grapher.Models.Serialized;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -30,7 +31,12 @@ namespace grapher
public AccelTypeOptions(
ComboBox accelDropdown,
- Option[] options,
+ Option acceleration,
+ CapOptions cap,
+ Option weight,
+ OffsetOptions offset,
+ Option limitOrExponent,
+ Option midpoint,
Button writeButton,
ActiveValueLabel activeValueLabel)
{
@@ -39,15 +45,25 @@ namespace grapher
AccelDropdown.Items.AddRange(AccelerationTypes.Keys.ToArray());
AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged);
- if (options.Length > Constants.PossibleOptionsCount)
- {
- throw new Exception("Layout given too many options.");
- }
-
- Options = options;
+ Acceleration = acceleration;
+ Cap = cap;
+ Weight = weight;
+ Offset = offset;
+ LimitOrExponent = limitOrExponent;
+ Midpoint = midpoint;
WriteButton = writeButton;
ActiveValueLabel = activeValueLabel;
+ Options = new List<OptionBase>
+ {
+ Acceleration,
+ Cap,
+ Offset,
+ Weight,
+ LimitOrExponent,
+ Midpoint,
+ };
+
Layout("Off");
ShowingDefault = true;
}
@@ -72,7 +88,19 @@ namespace grapher
public ActiveValueLabel ActiveValueLabel { get; }
- public Option[] Options { get; }
+ public Option Acceleration { get; }
+
+ public CapOptions Cap { get; }
+
+ public Option Weight { get; }
+
+ public OffsetOptions Offset { get; }
+
+ public Option LimitOrExponent { get; }
+
+ public Option Midpoint { get; }
+
+ private IEnumerable<OptionBase> Options { get; }
public int Top
{
@@ -83,6 +111,7 @@ namespace grapher
set
{
AccelDropdown.Top = value;
+ Layout(value + AccelDropdown.Height + Constants.OptionVerticalSeperation);
}
}
@@ -131,11 +160,13 @@ namespace grapher
public void Hide()
{
AccelDropdown.Hide();
-
- foreach(var option in Options)
- {
- option.Hide();
- }
+
+ Acceleration.Hide();
+ Cap.Hide();
+ Weight.Hide();
+ Offset.Hide();
+ LimitOrExponent.Hide();
+ Midpoint.Hide();
}
public void Show()
@@ -144,26 +175,62 @@ namespace grapher
Layout();
}
- public void SetActiveValue(int index)
+ public void SetActiveValues(int index, AccelArgs args)
{
var name = AccelerationTypes.Where(t => t.Value.Index == index).FirstOrDefault().Value.Name;
ActiveValueLabel.SetValue(name);
+
+ Weight.SetActiveValue(args.weight);
+ Cap.SetActiveValues(args.gainCap, args.scaleCap, args.gainCap > 0);
+ Offset.SetActiveValue(args.offset, args.legacy_offset);
+ Acceleration.SetActiveValue(args.accel);
+ LimitOrExponent.SetActiveValue(args.exponent);
+ Midpoint.SetActiveValue(args.midpoint);
}
- public void ShowFullText()
+ public void ShowFull()
{
if (ShowingDefault)
{
AccelDropdown.Text = Constants.AccelDropDownDefaultFullText;
}
+
+ Left = Acceleration.Left;
+ Width = Acceleration.Width;
}
- public void ShowShortenedText()
+ public void ShowShortened()
{
if (ShowingDefault)
{
AccelDropdown.Text = Constants.AccelDropDownDefaultShortText;
}
+
+ Left = Acceleration.Field.Left;
+ Width = Acceleration.Field.Width;
+ }
+
+ public void SetArgs(ref AccelArgs args)
+ {
+ args.accel = Acceleration.Field.Data;
+ args.rate = Acceleration.Field.Data;
+ args.powerScale = Acceleration.Field.Data;
+ args.gainCap = Cap.VelocityGainCap;
+ args.scaleCap = Cap.SensitivityCap;
+ args.limit = LimitOrExponent.Field.Data;
+ args.exponent = LimitOrExponent.Field.Data;
+ args.powerExponent = LimitOrExponent.Field.Data;
+ args.offset = Offset.Offset;
+ args.legacy_offset = Offset.LegacyOffset;
+ args.midpoint = Midpoint.Field.Data;
+ args.weight = Weight.Field.Data;
+ }
+
+ public AccelArgs GenerateArgs()
+ {
+ AccelArgs args = new AccelArgs();
+ SetArgs(ref args);
+ return args;
}
private void OnIndexChanged(object sender, EventArgs e)
@@ -179,9 +246,22 @@ namespace grapher
Layout();
}
- private void Layout()
+ private void Layout(int top = -1)
{
- AccelerationType.Layout(Options, WriteButton);
+ if (top < 0)
+ {
+ top = Acceleration.Top;
+ }
+
+ AccelerationType.Layout(
+ Acceleration,
+ Cap,
+ Weight,
+ Offset,
+ LimitOrExponent,
+ Midpoint,
+ WriteButton,
+ top);
}
#endregion Methods
diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs
index bfbc1ef..68f06fb 100644
--- a/grapher/Models/Options/ApplyOptions.cs
+++ b/grapher/Models/Options/ApplyOptions.cs
@@ -61,12 +61,12 @@ namespace grapher.Models.Options
public Vec2<AccelMode> GetModes()
{
- var xMode = (AccelMode)OptionSetX.AccelTypeOptions.AccelerationIndex;
+ var xMode = (AccelMode)OptionSetX.Options.AccelerationIndex;
return new Vec2<AccelMode>
{
x = xMode,
- y = ByComponentVectorXYLock.Checked ? xMode : (AccelMode)OptionSetY.AccelTypeOptions.AccelerationIndex
+ y = ByComponentVectorXYLock.Checked ? xMode : (AccelMode)OptionSetY.Options.AccelerationIndex
};
}
diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs
index 6dc1116..cf587c7 100644
--- a/grapher/Models/Options/CapOptions.cs
+++ b/grapher/Models/Options/CapOptions.cs
@@ -8,7 +8,7 @@ using System.Windows.Forms;
namespace grapher
{
- public class CapOptions
+ public class CapOptions : OptionBase
{
#region Constants
@@ -76,7 +76,7 @@ namespace grapher
}
}
- public int Top
+ public override int Top
{
get
{
@@ -88,7 +88,7 @@ namespace grapher
}
}
- public int Height
+ public override int Height
{
get
{
@@ -96,12 +96,39 @@ namespace grapher
}
}
+ public override int Left
+ {
+ get
+ {
+ return CapOption.Left;
+ }
+ set
+ {
+ CapOption.Left = value;
+ }
+ }
+
+ public override int Width
+ {
+ get
+ {
+ return CapOption.Width;
+ }
+ }
+
+ public override bool Visible
+ {
+ get
+ {
+ return CapOption.Visible;
+ }
+ }
#endregion Properties
#region Methods
- public void Hide()
+ public override void Hide()
{
CapOption.Hide();
}
@@ -111,6 +138,11 @@ namespace grapher
CapOption.Show();
}
+ public override void Show(string name)
+ {
+ CapOption.Show(name);
+ }
+
public void SnapTo(Option option)
{
Top = option.Top + option.Height + Constants.OptionVerticalSeperation;
diff --git a/grapher/Models/Options/IOption.cs b/grapher/Models/Options/IOption.cs
new file mode 100644
index 0000000..71ac5e4
--- /dev/null
+++ b/grapher/Models/Options/IOption.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace grapher.Models.Options
+{
+ public interface IOption
+ {
+ int Top { get; set; }
+
+ int Height { get; }
+
+ int Left { get; }
+
+ int Width { get; }
+
+ bool Visible { get; }
+
+ void Show(string name);
+
+ void Hide();
+
+ void SnapTo(IOption option);
+ }
+}
diff --git a/grapher/Models/Options/OffsetOptions.cs b/grapher/Models/Options/OffsetOptions.cs
index 0b01ab9..fbc6898 100644
--- a/grapher/Models/Options/OffsetOptions.cs
+++ b/grapher/Models/Options/OffsetOptions.cs
@@ -7,7 +7,7 @@ using System.Windows.Forms;
namespace grapher.Models.Options
{
- public class OffsetOptions
+ public class OffsetOptions : OptionBase
{
public OffsetOptions(
ToolStripMenuItem velocityGainOffsetCheck,
@@ -65,6 +65,69 @@ namespace grapher.Models.Options
}
}
+ public override int Top
+ {
+ get
+ {
+ return OffsetOption.Top;
+ }
+ set
+ {
+ OffsetOption.Top = value;
+ }
+ }
+
+ public override int Height
+ {
+ get
+ {
+ return OffsetOption.Height;
+ }
+ }
+
+ public override int Left
+ {
+ get
+ {
+ return OffsetOption.Left;
+ }
+ set
+ {
+ OffsetOption.Left = value;
+ }
+ }
+
+ public override int Width
+ {
+ get
+ {
+ return OffsetOption.Width;
+ }
+ }
+
+ public override bool Visible
+ {
+ get
+ {
+ return OffsetOption.Visible;
+ }
+ }
+
+ public override void Hide()
+ {
+ OffsetOption.Hide();
+ }
+
+ public void Show()
+ {
+ OffsetOption.Show();
+ }
+
+ public override void Show(string name)
+ {
+ OffsetOption.Show(name);
+ }
+
public void SetActiveValue(double offset, double legacyOffset)
{
if (offset > 0)
diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs
index 22b78d4..68ecf66 100644
--- a/grapher/Models/Options/Option.cs
+++ b/grapher/Models/Options/Option.cs
@@ -8,7 +8,7 @@ using System.Windows.Forms;
namespace grapher
{
- public class Option
+ public class Option : OptionBase
{
#region Constructors
@@ -72,7 +72,7 @@ namespace grapher
public ActiveValueLabel ActiveValueLabel { get; }
- public int Top
+ public override int Top
{
get
{
@@ -85,7 +85,7 @@ namespace grapher
}
}
- public int Height
+ public override int Height
{
get
{
@@ -93,18 +93,18 @@ namespace grapher
}
}
- public int Left
+ public override int Left
{
get
{
return Label.Left;
}
- private set
+ set
{
Label.Left = value;
}
}
- public int Width
+ public override int Width
{
get
{
@@ -112,6 +112,14 @@ namespace grapher
}
}
+ public override bool Visible
+ {
+ get
+ {
+ return Field.Box.Visible;
+ }
+ }
+
#endregion Properties
#region Methods
@@ -127,7 +135,7 @@ namespace grapher
ActiveValueLabel.SetValue(value);
}
- public void Hide()
+ public override void Hide()
{
Field.Box.Hide();
Label.Hide();
@@ -146,23 +154,13 @@ namespace grapher
ActiveValueLabel.SetValue(value);
}
- public void Show(string name)
+ public override void Show(string name)
{
SetName(name);
Show();
}
- public void SnapTo(Option option)
- {
- Top = option.Top + option.Height + Constants.OptionVerticalSeperation;
- }
-
- public void SnapTo(CapOptions option)
- {
- Top = option.Top + option.Height + Constants.OptionVerticalSeperation;
- }
-
#endregion Methods
}
}
diff --git a/grapher/Models/Options/OptionBase.cs b/grapher/Models/Options/OptionBase.cs
new file mode 100644
index 0000000..9fba72f
--- /dev/null
+++ b/grapher/Models/Options/OptionBase.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace grapher.Models.Options
+{
+ public abstract class OptionBase : IOption
+ {
+ public abstract int Top { get; set; }
+
+ public abstract int Height { get; }
+
+ public abstract int Left { get; set; }
+
+ public abstract int Width { get; }
+
+ public abstract bool Visible { get; }
+
+ public abstract void Show(string Name);
+
+ public abstract void Hide();
+
+ public virtual void SnapTo(IOption option)
+ {
+ Top = option.Top + option.Height + Constants.OptionVerticalSeperation;
+ }
+ }
+}