summaryrefslogtreecommitdiff
path: root/grapher/Models/Options
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-09-01 21:45:42 -0700
committerJacob Palecki <[email protected]>2020-09-01 21:45:42 -0700
commit95cc3ed0a0bf66f5535b873f245bc1c35a145478 (patch)
treede1a9f20dee0239cf7a2204945249b497deb8f9e /grapher/Models/Options
parentAdd X Y labels for by component (diff)
downloadrawaccel-95cc3ed0a0bf66f5535b873f245bc1c35a145478.tar.xz
rawaccel-95cc3ed0a0bf66f5535b873f245bc1c35a145478.zip
intermittent commit - large commit halfway done
Diffstat (limited to 'grapher/Models/Options')
-rw-r--r--grapher/Models/Options/AccelOptionSet.cs169
-rw-r--r--grapher/Models/Options/AccelTypeOptions.cs (renamed from grapher/Models/Options/AccelOptions.cs)91
-rw-r--r--grapher/Models/Options/CapOptions.cs58
-rw-r--r--grapher/Models/Options/Option.cs48
4 files changed, 318 insertions, 48 deletions
diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs
new file mode 100644
index 0000000..2d15ad6
--- /dev/null
+++ b/grapher/Models/Options/AccelOptionSet.cs
@@ -0,0 +1,169 @@
+using grapher.Models.Serialized;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher.Models.Options
+{
+ public class AccelOptionSet
+ {
+ public AccelOptionSet(
+ Label titleLabel,
+ AccelTypeOptions accelTypeOptions,
+ Option acceleration,
+ CapOptions cap,
+ Option weight,
+ Option offset,
+ Option limitOrExp,
+ Option midpoint)
+ {
+ TitleLabel = titleLabel;
+ AccelTypeOptions = accelTypeOptions;
+ Acceleration = acceleration;
+ Cap = cap;
+ Weight = weight;
+ Offset = offset;
+ LimitOrExponent = limitOrExp;
+ Midpoint = midpoint;
+
+ AccelTypeOptions.ShowFullText();
+
+ TitleLabel.Top = TopAnchor;
+ }
+
+ public int TopAnchor { get; }
+
+ public Label TitleLabel { get; }
+
+ public AccelTypeOptions AccelTypeOptions { get; }
+
+ public Option Acceleration { get; }
+
+ public CapOptions Cap { get; }
+
+ public Option Weight { get; }
+
+ public Option Offset { get; }
+
+ public Option LimitOrExponent { get; }
+
+ public Option Midpoint { get; }
+
+ public bool IsTitleMode { get; private set; }
+
+ public void SetRegularMode()
+ {
+ if (IsTitleMode)
+ {
+ IsTitleMode = false;
+
+ HideTitle();
+ AccelTypeOptions.Left = Acceleration.Left;
+ AccelTypeOptions.Width = Acceleration.Width;
+ AccelTypeOptions.ShowFullText();
+ }
+ }
+
+ public void SetTitleMode()
+ {
+ if (!IsTitleMode)
+ {
+ IsTitleMode = true;
+
+ AccelTypeOptions.Left = Acceleration.Field.Left;
+ AccelTypeOptions.Width = Acceleration.Field.Width;
+ AccelTypeOptions.ShowFullText();
+ DisplayTitle();
+ }
+ }
+
+ public void Hide()
+ {
+ TitleLabel.Hide();
+ AccelTypeOptions.Hide();
+ Acceleration.Hide();
+ Cap.Hide();
+ Weight.Hide();
+ Offset.Hide();
+ LimitOrExponent.Hide();
+ Midpoint.Hide();
+ }
+
+ public void Show()
+ {
+ if (IsTitleMode)
+ {
+ TitleLabel.Show();
+ }
+
+ AccelTypeOptions.Show();
+ Acceleration.Show();
+ Cap.Show();
+ Weight.Show();
+ Offset.Show();
+ LimitOrExponent.Show();
+ Midpoint.Show();
+ }
+
+ public void DisplayTitle()
+ {
+ TitleLabel.Show();
+
+ SetOptionsTop(TitleLabel.Top + TitleLabel.Height + Constants.OptionVerticalSeperation);
+ }
+
+ public void HideTitle()
+ {
+ TitleLabel.Hide();
+
+ SetOptionsTop(TopAnchor);
+ }
+
+ public void SetArgs(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.Field.Data;
+ args.midpoint = Midpoint.Field.Data;
+ args.weight = Weight.Field.Data;
+ }
+
+ public AccelArgs GenerateArgs()
+ {
+ AccelArgs args = new AccelArgs();
+ SetArgs(args);
+ return args;
+ }
+
+ 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);
+ 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.SnapTo(Weight);
+ LimitOrExponent.SnapTo(Offset);
+ Midpoint.SnapTo(LimitOrExponent);
+ }
+ }
+}
diff --git a/grapher/Models/Options/AccelOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs
index 8c01585..2359b8d 100644
--- a/grapher/Models/Options/AccelOptions.cs
+++ b/grapher/Models/Options/AccelTypeOptions.cs
@@ -9,7 +9,7 @@ using System.Windows.Forms;
namespace grapher
{
- public class AccelOptions
+ public class AccelTypeOptions
{
#region Fields
@@ -30,10 +30,9 @@ namespace grapher
#region Constructors
- public AccelOptions(
+ public AccelTypeOptions(
ComboBox accelDropdown,
Option[] options,
- OptionXY[] optionsXY,
Button writeButton,
ActiveValueLabel activeValueLabel)
{
@@ -47,17 +46,12 @@ namespace grapher
throw new Exception("Layout given too many options.");
}
- if (optionsXY.Length > Constants.PossibleOptionsXYCount)
- {
- throw new Exception("Layout given too many options.");
- }
-
Options = options;
- OptionsXY = optionsXY;
WriteButton = writeButton;
ActiveValueLabel = activeValueLabel;
Layout("Off");
+ ShowingDefault = true;
}
#endregion Constructors
@@ -74,29 +68,104 @@ namespace grapher
public Option[] Options { get; }
- public OptionXY[] OptionsXY { get; }
+ public int Top
+ {
+ get
+ {
+ return AccelDropdown.Top;
+ }
+ set
+ {
+ AccelDropdown.Top = value;
+ }
+ }
+
+ public int Height
+ {
+ get
+ {
+ return AccelDropdown.Height;
+ }
+ set
+ {
+ AccelDropdown.Height = value;
+ }
+ }
+
+ public int Left
+ {
+ get
+ {
+ return AccelDropdown.Left;
+ }
+ set
+ {
+ AccelDropdown.Left = value;
+ }
+ }
+
+ public int Width
+ {
+ get
+ {
+ return AccelDropdown.Width;
+ }
+ set
+ {
+ AccelDropdown.Width = value;
+ }
+ }
+
+ private bool ShowingDefault { get; set; }
#endregion Properties
#region Methods
+ public void Hide()
+ {
+ AccelDropdown.Hide();
+ }
+
+ public void Show()
+ {
+ AccelDropdown.Show();
+ }
+
public void SetActiveValue(int index)
{
var name = AccelerationTypes.Where(t => t.Value.Index == index).FirstOrDefault().Value.Name;
ActiveValueLabel.SetValue(name);
}
+ public void ShowFullText()
+ {
+ if (ShowingDefault)
+ {
+ AccelDropdown.Text = Constants.AccelDropDownDefaultFullText;
+ }
+ }
+
+ public void ShowShortenedText()
+ {
+ if (ShowingDefault)
+ {
+ AccelDropdown.Text = Constants.AccelDropDownDefaultShortText;
+ }
+ }
+
private void OnIndexChanged(object sender, EventArgs e)
{
var accelerationTypeString = AccelDropdown.SelectedItem.ToString();
Layout(accelerationTypeString);
+ ShowingDefault = false;
}
private void Layout(string type)
{
var accelerationType = AccelerationTypes[type];
AccelerationIndex = accelerationType.Index;
- accelerationType.Layout(Options, OptionsXY, WriteButton);
+ accelerationType.Layout(Options, WriteButton);
}
#endregion Methods
diff --git a/grapher/Models/Options/CapOptions.cs b/grapher/Models/Options/CapOptions.cs
index 62f74a3..6768a85 100644
--- a/grapher/Models/Options/CapOptions.cs
+++ b/grapher/Models/Options/CapOptions.cs
@@ -20,14 +20,12 @@ namespace grapher
public CapOptions(
ToolStripMenuItem sensitivityCapCheck,
ToolStripMenuItem velocityGainCapCheck,
- OptionXY capOption,
- OptionXY weightOption)
+ Option capOption)
{
SensitivityCapCheck = sensitivityCapCheck;
VelocityGainCapCheck = velocityGainCapCheck;
CapOption = capOption;
- WeightOption = weightOption;
SensitivityCapCheck.Click += new System.EventHandler(OnSensitivityCapCheckClick);
VelocityGainCapCheck.Click += new System.EventHandler(OnVelocityGainCapCheckClick);
@@ -46,32 +44,16 @@ namespace grapher
public ToolStripMenuItem VelocityGainCapCheck { get; }
- public OptionXY CapOption { get; }
-
- public OptionXY WeightOption { get; }
+ public Option CapOption { get; }
public bool IsSensitivityGain { get; private set; }
- public double SensitivityCapX {
+ public double SensitivityCap {
get
{
if (IsSensitivityGain)
{
- return CapOption.Fields.X;
- }
- else
- {
- return 0;
- }
- }
- }
-
- public double SensitivityCapY {
- get
- {
- if (IsSensitivityGain)
- {
- return CapOption.Fields.Y;
+ return CapOption.Field.Data;
}
else
{
@@ -89,7 +71,7 @@ namespace grapher
}
else
{
- return CapOption.Fields.X;
+ return CapOption.Field.Data;
}
}
}
@@ -98,21 +80,31 @@ namespace grapher
#region Methods
- public void SetActiveValues(double gainCap, double sensCapX, double sensCapY, bool capGainEnabled)
+ public void Hide()
+ {
+ CapOption.Hide();
+ }
+
+ public void Show()
+ {
+ CapOption.Show();
+ }
+
+ public void SetActiveValues(double gainCap, double sensCap, bool capGainEnabled)
{
if (capGainEnabled)
{
- CapOption.ActiveValueLabels.X.FormatString = Constants.GainCapFormatString;
- CapOption.ActiveValueLabels.X.Prefix = "Gain";
- CapOption.SetActiveValues(gainCap, gainCap);
+ CapOption.ActiveValueLabel.FormatString = Constants.GainCapFormatString;
+ CapOption.ActiveValueLabel.Prefix = "Gain";
+ CapOption.SetActiveValue(gainCap);
SensitivityCapCheck.Checked = true;
VelocityGainCapCheck.Checked = false;
}
else
{
- CapOption.ActiveValueLabels.X.FormatString = Constants.DefaultActiveValueFormatString;
- CapOption.ActiveValueLabels.X.Prefix = string.Empty;
- CapOption.SetActiveValues(sensCapX, sensCapY);
+ CapOption.ActiveValueLabel.FormatString = Constants.DefaultActiveValueFormatString;
+ CapOption.ActiveValueLabel.Prefix = string.Empty;
+ CapOption.SetActiveValue(sensCap);
SensitivityCapCheck.Checked = false;
VelocityGainCapCheck.Checked = true;
}
@@ -155,18 +147,12 @@ namespace grapher
void EnableSensitivityCap()
{
IsSensitivityGain = true;
- CapOption.Fields.LockCheckBox.Enabled = true;
- WeightOption.Fields.LockCheckBox.Enabled = true;
CapOption.SetName("Sensitivity Cap");
}
void EnableVelocityGainCap()
{
IsSensitivityGain = false;
- CapOption.Fields.LockCheckBox.Checked = true;
- CapOption.Fields.LockCheckBox.Enabled = false;
- WeightOption.Fields.LockCheckBox.Checked = true;
- WeightOption.Fields.LockCheckBox.Enabled = false;
CapOption.SetName("Velocity Gain Cap");
}
diff --git a/grapher/Models/Options/Option.cs b/grapher/Models/Options/Option.cs
index c5336a6..bd2c9a1 100644
--- a/grapher/Models/Options/Option.cs
+++ b/grapher/Models/Options/Option.cs
@@ -62,6 +62,47 @@ namespace grapher
public ActiveValueLabel ActiveValueLabel { get; }
+ public int Top
+ {
+ get
+ {
+ return Field.Top;
+ }
+ set
+ {
+ Field.Top = value;
+ Label.Top = value;
+ }
+ }
+
+ public int Height
+ {
+ get
+ {
+ return Field.Height;
+ }
+ }
+
+ public int Left
+ {
+ get
+ {
+ return Label.Left;
+ }
+ set
+ {
+ Label.Left = value;
+ Field.Left = value + Label.Width + Constants.OptionLabelBoxSeperation;
+ }
+ }
+ public int Width
+ {
+ get
+ {
+ return Field.Left + Field.Width - Label.Left;
+ }
+ }
+
#endregion Properties
#region Methods
@@ -70,7 +111,7 @@ namespace grapher
{
Label.Text = name;
//Label.Left = Convert.ToInt32((Field.Box.Left / 2.0) - (Label.Width / 2.0)); //Centered
- Label.Left = Convert.ToInt32(Field.Box.Left - Label.Width - 10); //Right-aligned
+ Left = Label.Left;
}
public void SetActiveValue(double value)
@@ -103,6 +144,11 @@ namespace grapher
Show();
}
+
+ public void SnapTo(Option option)
+ {
+ Top = option.Top + option.Height + Constants.OptionVerticalSeperation;
+ }
#endregion Methods
}