From a8d48325d5e6fe0466502b865c82317b6f7410a2 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Mon, 6 Sep 2021 23:24:51 -0400 Subject: get grapher building --- grapher/Models/Options/AccelTypeOptions.cs | 56 ++++++++++------------ grapher/Models/Options/ApplyOptions.cs | 18 +++---- .../Directionality/DirectionalityOptions.cs | 21 ++++---- grapher/Models/Options/LUT/LUTPanelOptions.cs | 27 +++++++---- 4 files changed, 63 insertions(+), 59 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 44c9ea8..eab38a1 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -21,7 +21,6 @@ namespace grapher public static readonly LayoutBase Power = new PowerLayout(); public static readonly LayoutBase LUT = new LUTLayout(); public static readonly LayoutBase Off = new OffLayout(); - public static readonly LayoutBase Unsupported = new UnsupportedLayout(); #endregion Fields @@ -262,21 +261,22 @@ namespace grapher { AccelerationType = AccelTypeFromSettings(ref args); AccelTypeActiveValue.SetValue(AccelerationType.ActiveName); - GainSwitch.SetActiveValue(args.legacy); + GainSwitch.SetActiveValue(args.gain); Weight.SetActiveValue(args.weight); - Cap.SetActiveValue(args.cap); + Cap.SetActiveValue(args.cap.x); Offset.SetActiveValue(args.offset); - Acceleration.SetActiveValue(args.accelClassic); + Acceleration.SetActiveValue(args.acceleration); DecayRate.SetActiveValue(args.decayRate); GrowthRate.SetActiveValue(args.growthRate); Smooth.SetActiveValue(args.smooth); Scale.SetActiveValue(args.scale); Limit.SetActiveValue((args.mode == AccelMode.motivity) ? args.motivity : args.limit); - PowerClassic.SetActiveValue(args.power); - Exponent.SetActiveValue(args.exponent); + PowerClassic.SetActiveValue(args.exponentClassic); + Exponent.SetActiveValue(args.exponentPower); Midpoint.SetActiveValue(args.midpoint); - LutPanel.SetActiveValues(args.tableData.points, args.tableData.length); - LutApply.SetActiveValue(args.tableData.velocity); + LutPanel.SetActiveValues(args.data, args.length, args.mode); + // TODO - use GainSwitch only? + LutApply.SetActiveValue(args.gain); } public void ShowFull() @@ -308,17 +308,16 @@ namespace grapher public void SetArgs(ref AccelArgs args) { - if (AccelerationType == Unsupported) throw new NotImplementedException(); - args.mode = AccelerationType.Mode; - args.legacy = !GainSwitch.CheckBox.Checked; + args.gain = GainSwitch.CheckBox.Checked; - if (Acceleration.Visible) args.accelClassic = Acceleration.Field.Data; + if (Acceleration.Visible) args.acceleration = Acceleration.Field.Data; if (DecayRate.Visible) args.decayRate = DecayRate.Field.Data; if (GrowthRate.Visible) args.growthRate = GrowthRate.Field.Data; if (Smooth.Visible) args.smooth = Smooth.Field.Data; if (Scale.Visible) args.scale = Scale.Field.Data; - if (Cap.Visible) args.cap = Cap.Field.Data; + // TODO - make field for output and in_out cap + if (Cap.Visible) args.cap.x = Cap.Field.Data; if (Limit.Visible) { if (args.mode == AccelMode.motivity) @@ -328,20 +327,27 @@ namespace grapher else { args.limit = Limit.Field.Data; - } + } } - if (PowerClassic.Visible) args.power = PowerClassic.Field.Data; - if (Exponent.Visible)args.exponent = Exponent.Field.Data; + if (PowerClassic.Visible) args.exponentClassic = PowerClassic.Field.Data; + if (Exponent.Visible) args.exponentPower = Exponent.Field.Data; if (Offset.Visible) args.offset = Offset.Field.Data; if (Midpoint.Visible) args.midpoint = Midpoint.Field.Data; if (Weight.Visible) args.weight = Weight.Field.Data; if (LutPanel.Visible) { (var points, var length) = LutPanel.GetPoints(); - args.tableData.points = points; - args.tableData.length = length; + args.length = length * 2; + + for (int i = 0; i < length; i++) + { + ref var p = ref points[i]; + var data_idx = i * 2; + args.data[data_idx] = p.x; + args.data[data_idx + 1] = p.y; + } } - if (LutApply.Visible) args.tableData.velocity = LutApply.ApplyType == LutApplyOptions.LutApplyType.Velocity; + } public override void AlignActiveValues() @@ -407,19 +413,9 @@ namespace grapher private LayoutBase AccelTypeFromSettings(ref AccelArgs args) { - if (args.spacedTableArgs.mode != SpacedTableMode.off) - { - if (!AccelDropdown.Items.Contains(Unsupported)) - { - AccelDropdown.Items.Add(Unsupported); - } - - return Unsupported; - } - switch (args.mode) { - case AccelMode.classic: return (args.power == 2) ? Linear : Classic; + case AccelMode.classic: return (args.exponentClassic == 2) ? Linear : Classic; case AccelMode.jump: return Jump; case AccelMode.natural: return Natural; case AccelMode.motivity: return Motivity; diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 06854b8..0d87943 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -81,30 +81,30 @@ namespace grapher.Models.Options #region Methods - public void SetArgs(ref Vec2 args) + public void SetArgs(ref AccelArgs argsX, ref AccelArgs argsY) { - OptionSetX.SetArgs(ref args.x); + OptionSetX.SetArgs(ref argsX); if (ByComponentVectorXYLock.Checked) { - OptionSetX.SetArgs(ref args.y); + OptionSetX.SetArgs(ref argsY); } else { - OptionSetY.SetArgs(ref args.y); + OptionSetY.SetArgs(ref argsY); } } - public void SetActiveValues(DriverSettings settings) + public void SetActiveValues(Profile settings) { - Sensitivity.SetActiveValues(settings.sensitivity.x, settings.sensitivity.y); + Sensitivity.SetActiveValues(settings.sensitivity, settings.yxSensRatio); Rotation.SetActiveValue(settings.rotation); WholeVectorCheckBox.Checked = settings.combineMagnitudes; ByComponentVectorCheckBox.Checked = !settings.combineMagnitudes; - ByComponentVectorXYLock.Checked = settings.args.x.Equals(settings.args.y); - OptionSetX.SetActiveValues(ref settings.args.x); - OptionSetY.SetActiveValues(ref settings.args.y); + ByComponentVectorXYLock.Checked = settings.argsX.Equals(settings.argsY); + OptionSetX.SetActiveValues(ref settings.argsX); + OptionSetY.SetActiveValues(ref settings.argsY); Directionality.SetActiveValues(settings); diff --git a/grapher/Models/Options/Directionality/DirectionalityOptions.cs b/grapher/Models/Options/Directionality/DirectionalityOptions.cs index 9288132..35d2575 100644 --- a/grapher/Models/Options/Directionality/DirectionalityOptions.cs +++ b/grapher/Models/Options/Directionality/DirectionalityOptions.cs @@ -70,17 +70,16 @@ namespace grapher.Models.Options.Directionality private bool IsHidden { get; set; } - public DomainArgs GetDomainArgs() + public Tuple, double> GetDomainArgs() { - return new DomainArgs + var weights = new Vec2 { - domainXY = new Vec2 - { - x = Domain.Fields.X, - y = Domain.Fields.Y, - }, - lpNorm = ByComponentCheckBox.Checked ? 2 : LpNorm.Field.Data + x = Domain.Fields.X, + y = Domain.Fields.Y }; + double p = ByComponentCheckBox.Checked ? 2 : LpNorm.Field.Data; + + return new Tuple, double>(weights, p); } public Vec2 GetRangeXY() @@ -92,14 +91,14 @@ namespace grapher.Models.Options.Directionality }; } - public void SetActiveValues(DriverSettings settings) + public void SetActiveValues(Profile settings) { - Domain.SetActiveValues(settings.domainArgs.domainXY.x, settings.domainArgs.domainXY.y); + Domain.SetActiveValues(settings.domainXY.x, settings.domainXY.y); Range.SetActiveValues(settings.rangeXY.x, settings.rangeXY.y); if (settings.combineMagnitudes) { - LpNorm.SetActiveValue(settings.domainArgs.lpNorm); + LpNorm.SetActiveValue(settings.lpNorm); } else { diff --git a/grapher/Models/Options/LUT/LUTPanelOptions.cs b/grapher/Models/Options/LUT/LUTPanelOptions.cs index 3690c76..11550e4 100644 --- a/grapher/Models/Options/LUT/LUTPanelOptions.cs +++ b/grapher/Models/Options/LUT/LUTPanelOptions.cs @@ -111,15 +111,26 @@ namespace grapher.Models.Options.LUT // Nothing to do here. } - public void SetActiveValues(IEnumerable> activePoints, int length) + public void SetActiveValues(IEnumerable rawData, int length, AccelMode mode) { - if (length > 0 && activePoints.First().x != 0) + if (mode == AccelMode.lut && length > 1 && rawData.First() != 0) { - ActiveValuesTextBox.Text = PointsToActiveValuesText(activePoints, length); + var pointsLen = length / 2; + var points = new Vec2[pointsLen]; + for (int i = 0; i < pointsLen; i++) + { + var data_idx = i * 2; + points[i] = new Vec2 + { + x = rawData.ElementAt(data_idx), + y = rawData.ElementAt(data_idx + 1) + }; + } + ActiveValuesTextBox.Text = PointsToActiveValuesText(points, length); if (string.IsNullOrWhiteSpace(PointsTextBox.Text)) { - PointsTextBox.Text = PointsToEntryTextBoxText(activePoints, length); + PointsTextBox.Text = PointsToEntryTextBoxText(points, length); } } else @@ -135,14 +146,12 @@ namespace grapher.Models.Options.LUT private static (Vec2[], int length) UserTextToPoints(string userText) { - const int MaxPoints = 256; - if (string.IsNullOrWhiteSpace(userText)) { throw new ApplicationException("Text must be entered in text box to fill Look Up Table."); } - Vec2[] points = new Vec2[MaxPoints]; + Vec2[] points = new Vec2[AccelArgs.MaxLutPoints]; var userTextSplit = userText.Trim().Trim(';').Split(';'); int index = 0; @@ -155,9 +164,9 @@ namespace grapher.Models.Options.LUT throw new ApplicationException("At least 2 points required"); } - if (pointsCount > MaxPoints) + if (pointsCount > AccelArgs.MaxLutPoints) { - throw new ApplicationException($"Number of points exceeds max ({MaxPoints})"); + throw new ApplicationException($"Number of points exceeds max ({AccelArgs.MaxLutPoints})"); } foreach(var pointEntry in userTextSplit) -- cgit v1.2.3 From 2b568ff5a9c64c549a6d15a19aab0ca4d3a22c11 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Fri, 10 Sep 2021 23:07:02 -0700 Subject: Add y\x ratio to gui --- grapher/Models/Options/AccelOptionSet.cs | 2 +- grapher/Models/Options/ApplyOptions.cs | 15 +++--- grapher/Models/Options/CheckBoxOption.cs | 3 ++ grapher/Models/Options/LockableOption.cs | 89 ++++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 grapher/Models/Options/LockableOption.cs (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelOptionSet.cs b/grapher/Models/Options/AccelOptionSet.cs index 75eb017..3451402 100644 --- a/grapher/Models/Options/AccelOptionSet.cs +++ b/grapher/Models/Options/AccelOptionSet.cs @@ -99,7 +99,7 @@ namespace grapher.Models.Options Options.Top = TopAnchor; } - public void SetArgs(ref AccelArgs args) + public void SetArgsFromActiveValues(ref AccelArgs args) { Options.SetArgs(ref args); } diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 0d87943..5c3494c 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -65,7 +65,9 @@ namespace grapher.Models.Options public DirectionalityOptions Directionality { get; } - public OptionXY Sensitivity { get; } + public Option Sensitivity { get; } + + public Option YToXRatio { get; } public Option Rotation { get; } @@ -81,23 +83,24 @@ namespace grapher.Models.Options #region Methods - public void SetArgs(ref AccelArgs argsX, ref AccelArgs argsY) + public void SetArgsFromActiveValues(ref AccelArgs argsX, ref AccelArgs argsY) { - OptionSetX.SetArgs(ref argsX); + OptionSetX.SetArgsFromActiveValues(ref argsX); if (ByComponentVectorXYLock.Checked) { - OptionSetX.SetArgs(ref argsY); + OptionSetX.SetArgsFromActiveValues(ref argsY); } else { - OptionSetY.SetArgs(ref argsY); + OptionSetY.SetArgsFromActiveValues(ref argsY); } } public void SetActiveValues(Profile settings) { - Sensitivity.SetActiveValues(settings.sensitivity, settings.yxSensRatio); + Sensitivity.SetActiveValue(settings.sensitivity); + YToXRatio.SetActiveValue(settings.yxSensRatio); Rotation.SetActiveValue(settings.rotation); WholeVectorCheckBox.Checked = settings.combineMagnitudes; diff --git a/grapher/Models/Options/CheckBoxOption.cs b/grapher/Models/Options/CheckBoxOption.cs index abf96d3..1a4245d 100644 --- a/grapher/Models/Options/CheckBoxOption.cs +++ b/grapher/Models/Options/CheckBoxOption.cs @@ -2,6 +2,9 @@ namespace grapher.Models.Options { + /// + /// This is an option type that is just a checkbox. + /// public class CheckBoxOption : OptionBase { public CheckBoxOption( diff --git a/grapher/Models/Options/LockableOption.cs b/grapher/Models/Options/LockableOption.cs new file mode 100644 index 0000000..bf77520 --- /dev/null +++ b/grapher/Models/Options/LockableOption.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace grapher.Models.Options +{ + /// + /// This is an option type that is a regular option with a checkbox that disables it. + /// + public class LockableOption : OptionBase + { + public LockableOption( + Option option, + CheckBox checkBox, + int lockedvalue) + { + Option = option; + LockBox = checkBox; + LockedValue = lockedvalue; + } + + public Option Option { get; } + + public CheckBox LockBox { get; } + + public int LockedValue { get; } + + public override int Left + { + get => Option.Left; + + set + { + Option.Left = value; + } + } + + public override int Top + { + get => Option.Top; + + set + { + Option.Top = value; + LockBox.Top = value; + } + } + + public override int Width + { + get => Option.Width; + + set + { + Option.Width = value; + } + } + + public override int Height + { + get => Option.Height; + } + + public override bool Visible + { + get => Option.Visible; + } + + public override void AlignActiveValues() + { + Option.AlignActiveValues(); + } + + public override void Hide() + { + Option.Hide(); + LockBox.Hide(); + } + + public override void Show(string Name) + { + Option.Show(Name); + LockBox.Show(); + } + } +} -- cgit v1.2.3 From affc97b1ef41437e7caba31be8e9b9212805182e Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Sat, 11 Sep 2021 17:38:59 -0700 Subject: YToXRatio fully works --- grapher/Models/Options/ApplyOptions.cs | 13 +++++---- grapher/Models/Options/LockableOption.cs | 48 ++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 5 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/ApplyOptions.cs b/grapher/Models/Options/ApplyOptions.cs index 5c3494c..4946414 100644 --- a/grapher/Models/Options/ApplyOptions.cs +++ b/grapher/Models/Options/ApplyOptions.cs @@ -15,7 +15,8 @@ namespace grapher.Models.Options AccelOptionSet optionSetX, AccelOptionSet optionSetY, DirectionalityOptions directionalityOptions, - OptionXY sensitivity, + Option sensitivity, + LockableOption yxRatio, Option rotation, Label lockXYLabel, AccelCharts accelCharts) @@ -34,6 +35,7 @@ namespace grapher.Models.Options OptionSetX = optionSetX; OptionSetY = optionSetY; Sensitivity = sensitivity; + YToXRatio = yxRatio; Rotation = rotation; LockXYLabel = lockXYLabel; AccelCharts = accelCharts; @@ -44,7 +46,8 @@ namespace grapher.Models.Options ByComponentVectorXYLock.CheckedChanged += new System.EventHandler(OnByComponentXYLockChecked); ByComponentVectorXYLock.Checked = true; - Rotation.SnapTo(Sensitivity); + YToXRatio.SnapTo(Sensitivity); + Rotation.SnapTo(YToXRatio); EnableWholeApplication(); } @@ -67,7 +70,7 @@ namespace grapher.Models.Options public Option Sensitivity { get; } - public Option YToXRatio { get; } + public LockableOption YToXRatio { get; } public Option Rotation { get; } @@ -213,8 +216,8 @@ namespace grapher.Models.Options LockXYLabel.Width = (AccelCharts.Left - OptionSetX.ActiveValuesTitle.Left) / 2; OptionSetX.ActiveValuesTitle.Width = LockXYLabel.Width; LockXYLabel.Left = OptionSetX.ActiveValuesTitle.Left + OptionSetX.ActiveValuesTitle.Width; - Sensitivity.Fields.LockCheckBox.Left = LockXYLabel.Left + LockXYLabel.Width / 2 - Sensitivity.Fields.LockCheckBox.Width / 2; - ByComponentVectorXYLock.Left = Sensitivity.Fields.LockCheckBox.Left; + YToXRatio.LockBox.Left = LockXYLabel.Left + LockXYLabel.Width / 2 - YToXRatio.LockBox.Width / 2; + ByComponentVectorXYLock.Left = YToXRatio.LockBox.Left; AlignActiveValues(); } diff --git a/grapher/Models/Options/LockableOption.cs b/grapher/Models/Options/LockableOption.cs index bf77520..6e78783 100644 --- a/grapher/Models/Options/LockableOption.cs +++ b/grapher/Models/Options/LockableOption.cs @@ -20,6 +20,12 @@ namespace grapher.Models.Options Option = option; LockBox = checkBox; LockedValue = lockedvalue; + + LockBox.Click += OnLockedBoxClicked; + LockBox.AutoCheck = false; + + Option.Field.SetNewDefault(LockedValue); + SetLocked(); } public Option Option { get; } @@ -69,6 +75,25 @@ namespace grapher.Models.Options get => Option.Visible; } + public double Value + { + get => LockBox.Checked ? LockedValue : Option.Field.Data; + } + + public void SetActiveValue(double activeValue) + { + Option.SetActiveValue(activeValue); + + if (activeValue == LockedValue) + { + SetLocked(); + } + else + { + SetUnlocked(); + } + } + public override void AlignActiveValues() { Option.AlignActiveValues(); @@ -85,5 +110,28 @@ namespace grapher.Models.Options Option.Show(Name); LockBox.Show(); } + private void SetLocked() + { + LockBox.Checked = true; + Option.Field.SetToUnavailable(); + } + + private void SetUnlocked() + { + LockBox.Checked = false; + Option.Field.SetToDefault(); + } + + private void OnLockedBoxClicked(object sender, EventArgs e) + { + if (LockBox.Checked) + { + SetUnlocked(); + } + else + { + SetLocked(); + } + } } } -- cgit v1.2.3 From c0f2aa4a41de22936a5ed177c3b83792cc8231a8 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 13 Sep 2021 00:40:57 -0700 Subject: Most of Cap Type options in GUI --- grapher/Models/Options/Cap/CapOptions.cs | 147 ++++++++++++++++++++++++++ grapher/Models/Options/Cap/CapTypeOptions.cs | 93 ++++++++++++++++ grapher/Models/Options/ComboBoxOptionsBase.cs | 129 ++++++++++++++++++++++ grapher/Models/Options/LUT/LutApplyOptions.cs | 138 ++++++------------------ 4 files changed, 401 insertions(+), 106 deletions(-) create mode 100644 grapher/Models/Options/Cap/CapOptions.cs create mode 100644 grapher/Models/Options/Cap/CapTypeOptions.cs create mode 100644 grapher/Models/Options/ComboBoxOptionsBase.cs (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/Cap/CapOptions.cs b/grapher/Models/Options/Cap/CapOptions.cs new file mode 100644 index 0000000..144cd79 --- /dev/null +++ b/grapher/Models/Options/Cap/CapOptions.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace grapher.Models.Options.Cap +{ + public class CapOptions : OptionBase + { + public enum CapType + { + In, + Out, + Both, + } + + public CapOptions( + ComboBox capTypeDropDown, + Option capIn, + Option capOut, + Option slope) + { + CapTypeDropdown = capTypeDropDown; + In = capIn; + Out = capOut; + Slope = slope; + + SetupCapTypeDropdown(CapTypeDropdown); + CapTypeDropdown.SelectedItem = CapType.In; + } + + public ComboBox CapTypeDropdown { get; } + + public Option In { get; } + + public Option Out { get; } + + public Option Slope { get; } + + public CapType SelectedCapType { get; private set; } + + public override int Left + { + get => In.Left; + + set + { + In.Left = value; + Out.Left = value; + Slope.Left = value; + } + } + + public override int Top + { + get => CapTypeDropdown.Top; + set + { + CapTypeDropdown.Top = value; + Layout(); + } + } + + public override int Height + { + get => BottomElement.Top + BottomElement.Height - CapTypeDropdown.Top; + } + + public override int Width + { + get => CapTypeDropdown.Width; + + set + { + CapTypeDropdown.Width = value; + In.Width = value; + Out.Width = value; + Slope.Width = value; + } + } + + public override bool Visible + { + get => CapTypeDropdown.Visible; + } + + private Option BottomElement { get; set; } + + public void Layout() + { + Layout(CapTypeDropdown.Top + CapTypeDropdown.Height + Constants.OptionVerticalSeperation); + } + + private void Layout(int top) + { + switch (SelectedCapType) + { + case CapType.In: + Slope.Show(); + In.Show(); + Out.Hide(); + + Slope.Top = top; + In.SnapTo(Slope); + BottomElement = In; + break; + case CapType.Out: + Slope.Show(); + In.Hide(); + Out.Show(); + + Slope.Top = top; + In.SnapTo(Slope); + BottomElement = In; + break; + case CapType.Both: + Slope.Hide(); + In.Show(); + Out.Show(); + + In.Top = top; + Out.SnapTo(In); + BottomElement = Out; + break; + } + } + + private void FindSelectedTypeFromDropdown() + { + SelectedCapType = (CapType)CapTypeDropdown.SelectedItem; + } + + private void OnCapTypeDropdownSelectedItemChanged(object sender, EventArgs e) + { + FindSelectedTypeFromDropdown(); + Layout(); + } + + private void SetupCapTypeDropdown(ComboBox capTypeDropDown) + { + capTypeDropDown.Items.Clear(); + capTypeDropDown.DataSource = Enum.GetValues(typeof(CapType)); + } + } +} diff --git a/grapher/Models/Options/Cap/CapTypeOptions.cs b/grapher/Models/Options/Cap/CapTypeOptions.cs new file mode 100644 index 0000000..b2cca57 --- /dev/null +++ b/grapher/Models/Options/Cap/CapTypeOptions.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace grapher.Models.Options.Cap +{ + public class CapTypeOptions : ComboBoxOptionsBase + { + #region Enum + + public enum CapType + { + In, + Out, + Both, + } + + #endregion Enum + + #region Classes + + public class CapTypeOption + { + public CapType Type { get; set; } + + public string Name => Type.ToString(); + + public override string ToString() => Name; + } + + #endregion Classes + + #region Static + + public static readonly CapTypeOption InCap = new CapTypeOption + { + Type = CapType.In, + }; + + public static readonly CapTypeOption OutCap = new CapTypeOption + { + Type = CapType.Out, + }; + + public static readonly CapTypeOption BothCap = new CapTypeOption + { + Type = CapType.Both, + }; + + public static readonly CapTypeOption[] AllCapTypeOptions = new CapTypeOption[] + { + InCap, + OutCap, + BothCap + }; + + #endregion Static + + #region Constructors + + public CapTypeOptions( + Label label, + ComboBox dropdown, + ActiveValueLabel activeValueLabel) + : base( + label, + dropdown, + activeValueLabel) + { + } + + #endregion Constructors + + #region Properties + + CapTypeOption CapOption + { + get + { + return OptionsDropdown.SelectedItem as CapTypeOption; + } + set + { + OptionsDropdown.SelectedItem = value; + } + } + + #endregion Properties + } +} diff --git a/grapher/Models/Options/ComboBoxOptionsBase.cs b/grapher/Models/Options/ComboBoxOptionsBase.cs new file mode 100644 index 0000000..64e0092 --- /dev/null +++ b/grapher/Models/Options/ComboBoxOptionsBase.cs @@ -0,0 +1,129 @@ +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 abstract class ComboBoxOptionsBase : OptionBase + { + #region Constructors + + public ComboBoxOptionsBase( + Label label, + ComboBox dropdown, + ActiveValueLabel activeValueLabel) + { + OptionsDropdown = dropdown; + OptionsDropdown.Items.Clear(); + + Label = label; + Label.AutoSize = false; + Label.Width = 50; + + ActiveValueLabel = activeValueLabel; + } + + #endregion Constructors + + #region Properties + + public Label Label { get; } + + public ActiveValueLabel ActiveValueLabel { get; } + + public ComboBox OptionsDropdown { get; } + + public override bool Visible + { + get + { + return Label.Visible || ShouldShow; + } + } + + public override int Left + { + get + { + return Label.Left; + } + set + { + Label.Left = value; + OptionsDropdown.Left = Label.Left + Label.Width + Constants.OptionVerticalSeperation; + } + } + + public override int Height + { + get + { + return Label.Height; + } + } + + public override int Top + { + get + { + return Label.Top; + } + set + { + OptionsDropdown.Top = value; + Label.Top = (OptionsDropdown.Height - Label.Height) / 2 + OptionsDropdown.Top; + ActiveValueLabel.Top = value; + } + } + + public override int Width + { + get + { + return Label.Width; + } + set + { + OptionsDropdown.Width = value - Label.Width - Constants.OptionLabelBoxSeperation; + } + } + + protected bool ShouldShow { get; set; } + + #endregion Properties + + #region Methods + + public override void Hide() + { + Label.Hide(); + OptionsDropdown.Hide(); + ActiveValueLabel.Hide(); + ShouldShow = false; + } + + public override void Show(string labelText) + { + Label.Show(); + + if (!string.IsNullOrWhiteSpace(labelText)) + { + Label.Text = labelText; + } + + OptionsDropdown.Show(); + ActiveValueLabel.Show(); + ShouldShow = true; + } + + public override void AlignActiveValues() + { + ActiveValueLabel.Align(); + } + + #endregion Methods + } +} diff --git a/grapher/Models/Options/LUT/LutApplyOptions.cs b/grapher/Models/Options/LUT/LutApplyOptions.cs index 7d8c737..61cae61 100644 --- a/grapher/Models/Options/LUT/LutApplyOptions.cs +++ b/grapher/Models/Options/LUT/LutApplyOptions.cs @@ -7,10 +7,9 @@ using System.Windows.Forms; namespace grapher.Models.Options.LUT { - public class LutApplyOptions : OptionBase + public class LutApplyOptions : ComboBoxOptionsBase { - public const string LUTApplyOptionsLabelText = "Apply as:"; - public const int LUTApplyLabelDropdownSeparation = 4; + #region Enum public enum LutApplyType { @@ -18,6 +17,10 @@ namespace grapher.Models.Options.LUT Velocity } + #endregion Enum + + #region Classes + public class LutApplyOption { public LutApplyType Type { get; set; } @@ -27,6 +30,10 @@ namespace grapher.Models.Options.LUT public override string ToString() => Name; } + #endregion Classes + + #region Static + public static readonly LutApplyOption Sensitivity = new LutApplyOption { Type = LutApplyType.Sensitivity, @@ -37,129 +44,58 @@ namespace grapher.Models.Options.LUT Type = LutApplyType.Velocity, }; + #endregion Static + + #region Constructors + public LutApplyOptions( Label label, ComboBox applyOptionsDropdown, ActiveValueLabel lutApplyActiveValue) + : base( + label, + applyOptionsDropdown, + lutApplyActiveValue) { - ApplyOptions = applyOptionsDropdown; - ApplyOptions.Items.Clear(); - ApplyOptions.Items.AddRange( + OptionsDropdown.Items.AddRange( new LutApplyOption[] { Sensitivity, Velocity, }); + } - Label = label; - Label.Text = LUTApplyOptionsLabelText; - Label.AutoSize = false; - Label.Width = 50; + #endregion Constructors - ActiveValueLabel = lutApplyActiveValue; - } + #region Properties public LutApplyType ApplyType { get => ApplyOption.Type; } public LutApplyOption ApplyOption { get { - return ApplyOptions.SelectedItem as LutApplyOption; - } - set - { - ApplyOptions.SelectedItem = value; - } - } - - public Label Label { get; } - - public ActiveValueLabel ActiveValueLabel { get; } - - public ComboBox ApplyOptions { get; } - - public override bool Visible - { - get - { - return Label.Visible || ShouldShow; - } - } - - public override int Left - { - get - { - return Label.Left; + return OptionsDropdown.SelectedItem as LutApplyOption; } set { - Label.Left = value; - ApplyOptions.Left = Label.Left + Label.Width + LUTApplyLabelDropdownSeparation; + OptionsDropdown.SelectedItem = value; } } - public override int Height - { - get - { - return Label.Height; - } - } + #endregion Properties - public override int Top - { - get - { - return Label.Top; - } - set - { - ApplyOptions.Top = value; - Label.Top = (ApplyOptions.Height - Label.Height) / 2 + ApplyOptions.Top; - ActiveValueLabel.Top = value; - } - } + #region Methods - public override int Width + public static LutApplyOption ApplyOptionFromSettings(bool applyAsVelocity) { - get - { - return Label.Width; - } - set + if (applyAsVelocity) { - ApplyOptions.Width = value - Label.Width - Constants.OptionLabelBoxSeperation; + return Velocity; } - } - - private bool ShouldShow { get; set; } - - public override void Hide() - { - Label.Hide(); - ApplyOptions.Hide(); - ActiveValueLabel.Hide(); - ShouldShow = false; - } - - public override void Show(string labelText) - { - Label.Show(); - - if (!string.IsNullOrWhiteSpace(labelText)) + else { - Label.Text = labelText; + return Sensitivity; } - - ApplyOptions.Show(); - ActiveValueLabel.Show(); - ShouldShow = true; - } - - public override void AlignActiveValues() - { - ActiveValueLabel.Align(); } public void SetActiveValue(bool applyAsVelocity) @@ -168,16 +104,6 @@ namespace grapher.Models.Options.LUT ActiveValueLabel.SetValue(ApplyOption.Name); } - public LutApplyOption ApplyOptionFromSettings(bool applyAsVelocity) - { - if (applyAsVelocity) - { - return Velocity; - } - else - { - return Sensitivity; - } - } + #endregion Methods } } -- cgit v1.2.3 From 41c79072e5713ab8750f058b6de0623b3b17f366 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 13 Sep 2021 01:02:57 -0700 Subject: Some reorganizing --- grapher/Models/Options/Cap/CapOptions.cs | 44 +++++++++------------------- grapher/Models/Options/Cap/CapTypeOptions.cs | 43 +++++++++++++++++++++++---- 2 files changed, 52 insertions(+), 35 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/Cap/CapOptions.cs b/grapher/Models/Options/Cap/CapOptions.cs index 144cd79..2fe44b0 100644 --- a/grapher/Models/Options/Cap/CapOptions.cs +++ b/grapher/Models/Options/Cap/CapOptions.cs @@ -4,34 +4,26 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using static grapher.Models.Options.Cap.CapTypeOptions; namespace grapher.Models.Options.Cap { public class CapOptions : OptionBase { - public enum CapType - { - In, - Out, - Both, - } public CapOptions( - ComboBox capTypeDropDown, + CapTypeOptions capTypeOptions, Option capIn, Option capOut, Option slope) { - CapTypeDropdown = capTypeDropDown; + CapTypeOptions = capTypeOptions; In = capIn; Out = capOut; Slope = slope; - - SetupCapTypeDropdown(CapTypeDropdown); - CapTypeDropdown.SelectedItem = CapType.In; } - public ComboBox CapTypeDropdown { get; } + public CapTypeOptions CapTypeOptions { get; } public Option In { get; } @@ -39,8 +31,6 @@ namespace grapher.Models.Options.Cap public Option Slope { get; } - public CapType SelectedCapType { get; private set; } - public override int Left { get => In.Left; @@ -55,26 +45,26 @@ namespace grapher.Models.Options.Cap public override int Top { - get => CapTypeDropdown.Top; + get => CapTypeOptions.Top; set { - CapTypeDropdown.Top = value; + CapTypeOptions.Top = value; Layout(); } } public override int Height { - get => BottomElement.Top + BottomElement.Height - CapTypeDropdown.Top; + get => BottomElement.Top + BottomElement.Height - CapTypeOptions.Top; } public override int Width { - get => CapTypeDropdown.Width; + get => CapTypeOptions.Width; set { - CapTypeDropdown.Width = value; + CapTypeOptions.Width = value; In.Width = value; Out.Width = value; Slope.Width = value; @@ -83,21 +73,21 @@ namespace grapher.Models.Options.Cap public override bool Visible { - get => CapTypeDropdown.Visible; + get => CapTypeOptions.Visible; } private Option BottomElement { get; set; } public void Layout() { - Layout(CapTypeDropdown.Top + CapTypeDropdown.Height + Constants.OptionVerticalSeperation); + Layout(CapTypeOptions.Top + CapTypeOptions.Height + Constants.OptionVerticalSeperation); } private void Layout(int top) { - switch (SelectedCapType) + switch (CapTypeOptions.SelectedCapType) { - case CapType.In: + case CapType.Input: Slope.Show(); In.Show(); Out.Hide(); @@ -106,7 +96,7 @@ namespace grapher.Models.Options.Cap In.SnapTo(Slope); BottomElement = In; break; - case CapType.Out: + case CapType.Output: Slope.Show(); In.Hide(); Out.Show(); @@ -127,14 +117,8 @@ namespace grapher.Models.Options.Cap } } - private void FindSelectedTypeFromDropdown() - { - SelectedCapType = (CapType)CapTypeDropdown.SelectedItem; - } - private void OnCapTypeDropdownSelectedItemChanged(object sender, EventArgs e) { - FindSelectedTypeFromDropdown(); Layout(); } diff --git a/grapher/Models/Options/Cap/CapTypeOptions.cs b/grapher/Models/Options/Cap/CapTypeOptions.cs index b2cca57..4ea372b 100644 --- a/grapher/Models/Options/Cap/CapTypeOptions.cs +++ b/grapher/Models/Options/Cap/CapTypeOptions.cs @@ -13,8 +13,8 @@ namespace grapher.Models.Options.Cap public enum CapType { - In, - Out, + Input, + Output, Both, } @@ -37,12 +37,12 @@ namespace grapher.Models.Options.Cap public static readonly CapTypeOption InCap = new CapTypeOption { - Type = CapType.In, + Type = CapType.Input, }; public static readonly CapTypeOption OutCap = new CapTypeOption { - Type = CapType.Out, + Type = CapType.Output, }; public static readonly CapTypeOption BothCap = new CapTypeOption @@ -70,13 +70,22 @@ namespace grapher.Models.Options.Cap dropdown, activeValueLabel) { + OptionsDropdown.Items.AddRange( + new CapTypeOption[] + { + InCap, + OutCap, + BothCap + }); } #endregion Constructors #region Properties - CapTypeOption CapOption + public CapType SelectedCapType => SelectedCapOption.Type; + + public CapTypeOption SelectedCapOption { get { @@ -89,5 +98,29 @@ namespace grapher.Models.Options.Cap } #endregion Properties + + #region Methods + + public static CapTypeOption CapTypeOptionFromSettings(ClassicCapMode capMode) + { + switch (capMode) + { + case ClassicCapMode.output: + return OutCap; + case ClassicCapMode.in_out: + return BothCap; + case ClassicCapMode.input: + default: + return InCap; + } + } + + public void SetActiveValue(ClassicCapMode capMode) + { + SelectedCapOption = CapTypeOptionFromSettings(capMode); + ActiveValueLabel.SetValue(SelectedCapOption.Name); + } + + #endregion Methods } } -- cgit v1.2.3 From 6c037f92a350d8622f3739b1033c909912860d77 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Tue, 14 Sep 2021 00:55:21 -0700 Subject: Mostly working cap type in GUI --- grapher/Models/Options/AccelTypeOptions.cs | 75 +++++++++++-------- grapher/Models/Options/Cap/CapOptions.cs | 107 +++++++++++++++++++++------ grapher/Models/Options/Cap/CapTypeOptions.cs | 11 +++ 3 files changed, 137 insertions(+), 56 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index eab38a1..9086b41 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.Options.Cap; using grapher.Models.Options.LUT; using grapher.Models.Serialized; using System; @@ -29,12 +30,11 @@ namespace grapher public AccelTypeOptions( ComboBox accelDropdown, CheckBoxOption gainSwitch, - Option acceleration, + CapOptions classicCap, + CapOptions powerCap, Option decayRate, Option growthRate, Option smooth, - Option scale, - Option cap, Option weight, Option offset, Option limit, @@ -65,12 +65,11 @@ namespace grapher AccelDropdown.SelectedIndexChanged += new System.EventHandler(OnIndexChanged); GainSwitch = gainSwitch; - Acceleration = acceleration; DecayRate = decayRate; GrowthRate = growthRate; Smooth = smooth; - Scale = scale; - Cap = cap; + ClassicCap = classicCap; + PowerCap = powerCap; Weight = weight; Offset = offset; Limit = limit; @@ -85,7 +84,7 @@ namespace grapher AccelTypeActiveValue.Left = AccelDropdown.Left + AccelDropdown.Width; AccelTypeActiveValue.Height = AccelDropdown.Height; - GainSwitch.Left = Acceleration.Field.Left; + GainSwitch.Left = DecayRate.Field.Left; LutPanel.Left = AccelDropdown.Left; LutPanel.Width = AccelDropdown.Width + AccelTypeActiveValue.Width; @@ -108,17 +107,15 @@ namespace grapher public ActiveValueLabel AccelTypeActiveValue { get; } - public Option Acceleration { get; } - public Option DecayRate { get; } public Option GrowthRate { get; } public Option Smooth { get; } - public Option Scale { get; } + public CapOptions ClassicCap { get; } - public Option Cap { get; } + public CapOptions PowerCap { get; } public Option Weight { get; } @@ -228,12 +225,11 @@ namespace grapher AccelTypeActiveValue.Hide(); GainSwitch.Hide(); - Acceleration.Hide(); DecayRate.Hide(); GrowthRate.Hide(); Smooth.Hide(); - Scale.Hide(); - Cap.Hide(); + ClassicCap.Hide(); + PowerCap.Hide(); Weight.Hide(); Offset.Hide(); Limit.Hide(); @@ -263,13 +259,20 @@ namespace grapher AccelTypeActiveValue.SetValue(AccelerationType.ActiveName); GainSwitch.SetActiveValue(args.gain); Weight.SetActiveValue(args.weight); - Cap.SetActiveValue(args.cap.x); + ClassicCap.SetActiveValues( + args.acceleration, + args.cap.x, + args.cap.y, + args.capMode); + PowerCap.SetActiveValues( + args.scale, + args.cap.x, + args.cap.y, + args.capMode); Offset.SetActiveValue(args.offset); - Acceleration.SetActiveValue(args.acceleration); DecayRate.SetActiveValue(args.decayRate); GrowthRate.SetActiveValue(args.growthRate); Smooth.SetActiveValue(args.smooth); - Scale.SetActiveValue(args.scale); Limit.SetActiveValue((args.mode == AccelMode.motivity) ? args.motivity : args.limit); PowerClassic.SetActiveValue(args.exponentClassic); Exponent.SetActiveValue(args.exponentPower); @@ -286,8 +289,8 @@ namespace grapher AccelDropdown.Text = Constants.AccelDropDownDefaultFullText; } - Left = Acceleration.Left + Constants.DropDownLeftSeparation; - Width = Acceleration.Width - Constants.DropDownLeftSeparation; + Left = DecayRate.Left + Constants.DropDownLeftSeparation; + Width = DecayRate.Width - Constants.DropDownLeftSeparation; LutText.Expand(); HandleLUTOptionsOnResize(); @@ -300,8 +303,8 @@ namespace grapher AccelDropdown.Text = Constants.AccelDropDownDefaultShortText; } - Left = Acceleration.Field.Left; - Width = Acceleration.Field.Width; + Left = DecayRate.Field.Left; + Width = DecayRate.Field.Width; LutText.Shorten(); } @@ -311,13 +314,23 @@ namespace grapher args.mode = AccelerationType.Mode; args.gain = GainSwitch.CheckBox.Checked; - if (Acceleration.Visible) args.acceleration = Acceleration.Field.Data; if (DecayRate.Visible) args.decayRate = DecayRate.Field.Data; if (GrowthRate.Visible) args.growthRate = GrowthRate.Field.Data; if (Smooth.Visible) args.smooth = Smooth.Field.Data; - if (Scale.Visible) args.scale = Scale.Field.Data; - // TODO - make field for output and in_out cap - if (Cap.Visible) args.cap.x = Cap.Field.Data; + if (ClassicCap.Visible) + { + args.acceleration = ClassicCap.Slope.Field.Data; + args.cap.x = ClassicCap.In.Field.Data; + args.cap.y = ClassicCap.Out.Field.Data; + args.capMode = ClassicCap.CapTypeOptions.GetSelectedCapMode(); + } + if (PowerCap.Visible) + { + args.scale = ClassicCap.Slope.Field.Data; + args.cap.x = PowerCap.In.Field.Data; + args.cap.y = PowerCap.Out.Field.Data; + args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode(); + } if (Limit.Visible) { if (args.mode == AccelMode.motivity) @@ -354,12 +367,11 @@ namespace grapher { AccelTypeActiveValue.Align(); GainSwitch.AlignActiveValues(); - Acceleration.AlignActiveValues(); DecayRate.AlignActiveValues(); GrowthRate.AlignActiveValues(); Smooth.AlignActiveValues(); - Scale.AlignActiveValues(); - Cap.AlignActiveValues(); + ClassicCap.AlignActiveValues(); + PowerCap.AlignActiveValues(); Offset.AlignActiveValues(); Weight.AlignActiveValues(); Limit.AlignActiveValues(); @@ -373,7 +385,7 @@ namespace grapher { LutText.Left = AccelDropdown.Left; LutPanel.Left = GainSwitch.Left - 100; - LutPanel.Width = Acceleration.ActiveValueLabel.CenteringLabel.Right - LutPanel.Left; + LutPanel.Width = DecayRate.ActiveValueLabel.CenteringLabel.Right - LutPanel.Left; LutApply.Left = LutPanel.Left; LutApply.Width = AccelDropdown.Right - LutPanel.Left; } @@ -393,12 +405,11 @@ namespace grapher AccelerationType.Layout( GainSwitch, - Acceleration, + ClassicCap, + PowerCap, DecayRate, GrowthRate, Smooth, - Scale, - Cap, Weight, Offset, Limit, diff --git a/grapher/Models/Options/Cap/CapOptions.cs b/grapher/Models/Options/Cap/CapOptions.cs index 2fe44b0..e959dee 100644 --- a/grapher/Models/Options/Cap/CapOptions.cs +++ b/grapher/Models/Options/Cap/CapOptions.cs @@ -21,6 +21,11 @@ namespace grapher.Models.Options.Cap In = capIn; Out = capOut; Slope = slope; + + ShouldShow = true; + TopElement = Slope; + BottomElement = In; + CapTypeOptions.OptionsDropdown.SelectedIndexChanged += OnCapTypeDropdownSelectedItemChanged; } public CapTypeOptions CapTypeOptions { get; } @@ -45,17 +50,16 @@ namespace grapher.Models.Options.Cap public override int Top { - get => CapTypeOptions.Top; + get => TopElement.Top; set { - CapTypeOptions.Top = value; - Layout(); + Layout(value); } } public override int Height { - get => BottomElement.Top + BottomElement.Height - CapTypeOptions.Top; + get => BottomElement.Top + BottomElement.Height - TopElement.Top; } public override int Width @@ -73,45 +77,100 @@ namespace grapher.Models.Options.Cap public override bool Visible { - get => CapTypeOptions.Visible; + get => ShouldShow; + } + + private bool ShouldShow { get; set; } + + private IOption BottomElement { get; set; } + + private IOption TopElement { get; set; } + + public override void AlignActiveValues() + { + Slope.AlignActiveValues(); + CapTypeOptions.AlignActiveValues(); + In.AlignActiveValues(); + Out.AlignActiveValues(); + } + + public override void Show(string name) + { + ShouldShow = true; + Layout(Top, name); } - private Option BottomElement { get; set; } + public override void Hide() + { + ShouldShow = false; + CapTypeOptions.Hide(); + Slope.Hide(); + In.Hide(); + Out.Hide(); + } - public void Layout() + public void SetActiveValues( + double scale, + double inCap, + double outCap, + ClassicCapMode capMode) { - Layout(CapTypeOptions.Top + CapTypeOptions.Height + Constants.OptionVerticalSeperation); + Slope.SetActiveValue(scale); + In.SetActiveValue(inCap); + Out.SetActiveValue(outCap); + CapTypeOptions.SetActiveValue(capMode); } - private void Layout(int top) + private void Layout(int top, string name = null) { switch (CapTypeOptions.SelectedCapType) { case CapType.Input: - Slope.Show(); - In.Show(); - Out.Hide(); + if (ShouldShow) + { + Slope.Show(); + CapTypeOptions.Show(name); + In.Show(); + Out.Hide(); + } Slope.Top = top; - In.SnapTo(Slope); + CapTypeOptions.SnapTo(Slope); + In.SnapTo(CapTypeOptions); + + TopElement = CapTypeOptions; BottomElement = In; break; case CapType.Output: - Slope.Show(); - In.Hide(); - Out.Show(); + if (ShouldShow) + { + Slope.Show(); + CapTypeOptions.Show(name); + In.Hide(); + Out.Show(); + } Slope.Top = top; - In.SnapTo(Slope); - BottomElement = In; + CapTypeOptions.SnapTo(Slope); + Out.SnapTo(CapTypeOptions); + + TopElement = CapTypeOptions; + BottomElement = Out; break; case CapType.Both: - Slope.Hide(); - In.Show(); - Out.Show(); - - In.Top = top; + if (ShouldShow) + { + CapTypeOptions.Show(name); + Slope.Hide(); + In.Show(); + Out.Show(); + } + + CapTypeOptions.Top = top; + In.SnapTo(CapTypeOptions); Out.SnapTo(In); + + TopElement = In; BottomElement = Out; break; } @@ -119,7 +178,7 @@ namespace grapher.Models.Options.Cap private void OnCapTypeDropdownSelectedItemChanged(object sender, EventArgs e) { - Layout(); + Layout(Top); } private void SetupCapTypeDropdown(ComboBox capTypeDropDown) diff --git a/grapher/Models/Options/Cap/CapTypeOptions.cs b/grapher/Models/Options/Cap/CapTypeOptions.cs index 4ea372b..f0c5617 100644 --- a/grapher/Models/Options/Cap/CapTypeOptions.cs +++ b/grapher/Models/Options/Cap/CapTypeOptions.cs @@ -97,6 +97,17 @@ namespace grapher.Models.Options.Cap } } + public ClassicCapMode GetSelectedCapMode() + { + switch(SelectedCapType) + { + case CapType.Output: return ClassicCapMode.output; + case CapType.Both: return ClassicCapMode.in_out; + case CapType.Input: + default: return ClassicCapMode.input; + } + } + #endregion Properties #region Methods -- cgit v1.2.3 From 8878091a2cab77b0433daea7a47033e1c35e42c1 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Wed, 15 Sep 2021 23:16:43 -0700 Subject: Cap type options now fully working --- grapher/Models/Options/AccelTypeOptions.cs | 3 -- grapher/Models/Options/Cap/CapOptions.cs | 62 ++++++++++++++++++--------- grapher/Models/Options/Cap/CapTypeOptions.cs | 27 +++++++++++- grapher/Models/Options/ComboBoxOptionsBase.cs | 11 ++--- 4 files changed, 70 insertions(+), 33 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 9086b41..3d2f840 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -2,10 +2,7 @@ using grapher.Models.Options; using grapher.Models.Options.Cap; using grapher.Models.Options.LUT; -using grapher.Models.Serialized; using System; -using System.Collections.Generic; -using System.Linq; using System.Windows.Forms; namespace grapher diff --git a/grapher/Models/Options/Cap/CapOptions.cs b/grapher/Models/Options/Cap/CapOptions.cs index e959dee..ac34abf 100644 --- a/grapher/Models/Options/Cap/CapOptions.cs +++ b/grapher/Models/Options/Cap/CapOptions.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; using static grapher.Models.Options.Cap.CapTypeOptions; @@ -10,6 +6,20 @@ namespace grapher.Models.Options.Cap { public class CapOptions : OptionBase { + #region Constants + + public const string InCapLabel = "Cap: Input"; + public const string OutCapLabel = "Cap: Output"; + + #endregion Constants + + #region Fields + + private int _top; + + #endregion Fields + + #region Constructors public CapOptions( CapTypeOptions capTypeOptions, @@ -23,11 +33,16 @@ namespace grapher.Models.Options.Cap Slope = slope; ShouldShow = true; - TopElement = Slope; + _top = Slope.Top; BottomElement = In; CapTypeOptions.OptionsDropdown.SelectedIndexChanged += OnCapTypeDropdownSelectedItemChanged; + CapTypeOptions.SelectedCapOption = InCap; } + #endregion Constructors + + #region Properties + public CapTypeOptions CapTypeOptions { get; } public Option In { get; } @@ -50,16 +65,17 @@ namespace grapher.Models.Options.Cap public override int Top { - get => TopElement.Top; + get => _top; set { + _top = value; Layout(value); } } public override int Height { - get => BottomElement.Top + BottomElement.Height - TopElement.Top; + get => BottomElement.Top + BottomElement.Height - Top; } public override int Width @@ -84,7 +100,9 @@ namespace grapher.Models.Options.Cap private IOption BottomElement { get; set; } - private IOption TopElement { get; set; } + #endregion Properties + + #region Methods public override void AlignActiveValues() { @@ -130,7 +148,7 @@ namespace grapher.Models.Options.Cap { Slope.Show(); CapTypeOptions.Show(name); - In.Show(); + ShowInCap(); Out.Hide(); } @@ -138,7 +156,6 @@ namespace grapher.Models.Options.Cap CapTypeOptions.SnapTo(Slope); In.SnapTo(CapTypeOptions); - TopElement = CapTypeOptions; BottomElement = In; break; case CapType.Output: @@ -147,14 +164,13 @@ namespace grapher.Models.Options.Cap Slope.Show(); CapTypeOptions.Show(name); In.Hide(); - Out.Show(); + ShowOutCap(); } Slope.Top = top; CapTypeOptions.SnapTo(Slope); Out.SnapTo(CapTypeOptions); - TopElement = CapTypeOptions; BottomElement = Out; break; case CapType.Both: @@ -162,29 +178,35 @@ namespace grapher.Models.Options.Cap { CapTypeOptions.Show(name); Slope.Hide(); - In.Show(); - Out.Show(); + ShowInCap(); + ShowOutCap(); } CapTypeOptions.Top = top; In.SnapTo(CapTypeOptions); Out.SnapTo(In); - TopElement = In; BottomElement = Out; break; } } - private void OnCapTypeDropdownSelectedItemChanged(object sender, EventArgs e) + private void ShowInCap() { - Layout(Top); + In.Show(InCapLabel); + } + + private void ShowOutCap() + { + Out.Show(OutCapLabel); } - private void SetupCapTypeDropdown(ComboBox capTypeDropDown) + private void OnCapTypeDropdownSelectedItemChanged(object sender, EventArgs e) { - capTypeDropDown.Items.Clear(); - capTypeDropDown.DataSource = Enum.GetValues(typeof(CapType)); + Layout(Top); + CapTypeOptions.CheckIfDefault(); } + + #endregion Methods } } diff --git a/grapher/Models/Options/Cap/CapTypeOptions.cs b/grapher/Models/Options/Cap/CapTypeOptions.cs index f0c5617..1e7bd58 100644 --- a/grapher/Models/Options/Cap/CapTypeOptions.cs +++ b/grapher/Models/Options/Cap/CapTypeOptions.cs @@ -64,7 +64,8 @@ namespace grapher.Models.Options.Cap public CapTypeOptions( Label label, ComboBox dropdown, - ActiveValueLabel activeValueLabel) + ActiveValueLabel activeValueLabel, + int left) : base( label, dropdown, @@ -77,6 +78,13 @@ namespace grapher.Models.Options.Cap OutCap, BothCap }); + + Default = OutCap; + + label.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + label.Left = left; + label.Width = OptionsDropdown.Left - left - Constants.OptionLabelBoxSeperation; + label.Height = OptionsDropdown.Height; } #endregion Constructors @@ -97,6 +105,8 @@ namespace grapher.Models.Options.Cap } } + private CapTypeOption Default { get; set; } + public ClassicCapMode GetSelectedCapMode() { switch(SelectedCapType) @@ -128,10 +138,23 @@ namespace grapher.Models.Options.Cap public void SetActiveValue(ClassicCapMode capMode) { - SelectedCapOption = CapTypeOptionFromSettings(capMode); + Default = CapTypeOptionFromSettings(capMode); + SelectedCapOption = Default; ActiveValueLabel.SetValue(SelectedCapOption.Name); } + public void CheckIfDefault() + { + if (SelectedCapOption.Equals(Default)) + { + OptionsDropdown.ForeColor = System.Drawing.Color.Gray; + } + else + { + OptionsDropdown.ForeColor = System.Drawing.Color.Black; + } + } + #endregion Methods } } diff --git a/grapher/Models/Options/ComboBoxOptionsBase.cs b/grapher/Models/Options/ComboBoxOptionsBase.cs index 64e0092..6999e99 100644 --- a/grapher/Models/Options/ComboBoxOptionsBase.cs +++ b/grapher/Models/Options/ComboBoxOptionsBase.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +using System.Windows.Forms; namespace grapher.Models.Options { @@ -61,7 +56,7 @@ namespace grapher.Models.Options { get { - return Label.Height; + return OptionsDropdown.Height; } } @@ -69,7 +64,7 @@ namespace grapher.Models.Options { get { - return Label.Top; + return OptionsDropdown.Top; } set { -- cgit v1.2.3 From feba2ca96fcfdc161c5ffd1c0cceb8db38b894e0 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Wed, 15 Sep 2021 23:48:32 -0700 Subject: Fix gain switch GUI --- grapher/Models/Options/CheckBoxOption.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/CheckBoxOption.cs b/grapher/Models/Options/CheckBoxOption.cs index 1a4245d..8c125ec 100644 --- a/grapher/Models/Options/CheckBoxOption.cs +++ b/grapher/Models/Options/CheckBoxOption.cs @@ -102,10 +102,10 @@ namespace grapher.Models.Options ActiveValueLabel.Show(); } - public void SetActiveValue(bool legacy) + public void SetActiveValue(bool gain) { - CheckBox.Checked = !legacy; - var activeValueString = legacy ? "Legacy" : "Gain"; + CheckBox.Checked = gain; + var activeValueString = gain ? "Gain" : "Legacy"; ActiveValueLabel.SetValue(activeValueString); } } -- cgit v1.2.3 From 7361457ed17670b37279f12fe334e7a9ce7ea34e Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 16 Sep 2021 01:29:51 -0700 Subject: Get power cap working --- grapher/Models/Options/AccelTypeOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 3d2f840..b7a7b7b 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -323,7 +323,7 @@ namespace grapher } if (PowerCap.Visible) { - args.scale = ClassicCap.Slope.Field.Data; + args.scale = PowerCap.Slope.Field.Data; args.cap.x = PowerCap.In.Field.Data; args.cap.y = PowerCap.Out.Field.Data; args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode(); -- cgit v1.2.3 From 4197e030c5cfeda5592816c8028152d9b7b599e0 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 16 Sep 2021 13:07:43 -0700 Subject: Remove weight --- grapher/Models/Options/AccelTypeOptions.cs | 9 --------- 1 file changed, 9 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index b7a7b7b..029a93e 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -32,7 +32,6 @@ namespace grapher Option decayRate, Option growthRate, Option smooth, - Option weight, Option offset, Option limit, Option powerClassic, @@ -67,7 +66,6 @@ namespace grapher Smooth = smooth; ClassicCap = classicCap; PowerCap = powerCap; - Weight = weight; Offset = offset; Limit = limit; PowerClassic = powerClassic; @@ -114,8 +112,6 @@ namespace grapher public CapOptions PowerCap { get; } - public Option Weight { get; } - public Option Offset { get; } public Option Limit { get; } @@ -227,7 +223,6 @@ namespace grapher Smooth.Hide(); ClassicCap.Hide(); PowerCap.Hide(); - Weight.Hide(); Offset.Hide(); Limit.Hide(); PowerClassic.Hide(); @@ -255,7 +250,6 @@ namespace grapher AccelerationType = AccelTypeFromSettings(ref args); AccelTypeActiveValue.SetValue(AccelerationType.ActiveName); GainSwitch.SetActiveValue(args.gain); - Weight.SetActiveValue(args.weight); ClassicCap.SetActiveValues( args.acceleration, args.cap.x, @@ -343,7 +337,6 @@ namespace grapher if (Exponent.Visible) args.exponentPower = Exponent.Field.Data; if (Offset.Visible) args.offset = Offset.Field.Data; if (Midpoint.Visible) args.midpoint = Midpoint.Field.Data; - if (Weight.Visible) args.weight = Weight.Field.Data; if (LutPanel.Visible) { (var points, var length) = LutPanel.GetPoints(); @@ -370,7 +363,6 @@ namespace grapher ClassicCap.AlignActiveValues(); PowerCap.AlignActiveValues(); Offset.AlignActiveValues(); - Weight.AlignActiveValues(); Limit.AlignActiveValues(); PowerClassic.AlignActiveValues(); Exponent.AlignActiveValues(); @@ -407,7 +399,6 @@ namespace grapher DecayRate, GrowthRate, Smooth, - Weight, Offset, Limit, PowerClassic, -- cgit v1.2.3 From 9cdad754cc299f44ebac1a39e89ce28d01714290 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 16 Sep 2021 13:45:51 -0700 Subject: Fix error in LUT gui --- grapher/Models/Options/LUT/LUTPanelOptions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/LUT/LUTPanelOptions.cs b/grapher/Models/Options/LUT/LUTPanelOptions.cs index 11550e4..eedcfa8 100644 --- a/grapher/Models/Options/LUT/LUTPanelOptions.cs +++ b/grapher/Models/Options/LUT/LUTPanelOptions.cs @@ -126,11 +126,11 @@ namespace grapher.Models.Options.LUT y = rawData.ElementAt(data_idx + 1) }; } - ActiveValuesTextBox.Text = PointsToActiveValuesText(points, length); + ActiveValuesTextBox.Text = PointsToActiveValuesText(points, pointsLen); if (string.IsNullOrWhiteSpace(PointsTextBox.Text)) { - PointsTextBox.Text = PointsToEntryTextBoxText(points, length); + PointsTextBox.Text = PointsToEntryTextBoxText(points, pointsLen); } } else -- cgit v1.2.3 From 1fd8881608e4ce6ab21fd78d3ebb42a941cd0e93 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 16 Sep 2021 18:33:30 -0700 Subject: Add power start from one --- grapher/Models/Options/AccelTypeOptions.cs | 9 ++ grapher/Models/Options/SwitchOption.cs | 162 +++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+) create mode 100644 grapher/Models/Options/SwitchOption.cs (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index 029a93e..b3153ed 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -29,6 +29,7 @@ namespace grapher CheckBoxOption gainSwitch, CapOptions classicCap, CapOptions powerCap, + SwitchOption powerStartsFrom, Option decayRate, Option growthRate, Option smooth, @@ -70,6 +71,7 @@ namespace grapher Limit = limit; PowerClassic = powerClassic; Exponent = exponent; + PowerStartsFrom = powerStartsFrom; Midpoint = midpoint; WriteButton = writeButton; AccelTypeActiveValue = accelTypeActiveValue; @@ -112,6 +114,8 @@ namespace grapher public CapOptions PowerCap { get; } + public SwitchOption PowerStartsFrom { get; } + public Option Offset { get; } public Option Limit { get; } @@ -223,6 +227,7 @@ namespace grapher Smooth.Hide(); ClassicCap.Hide(); PowerCap.Hide(); + PowerStartsFrom.Hide(); Offset.Hide(); Limit.Hide(); PowerClassic.Hide(); @@ -260,6 +265,7 @@ namespace grapher args.cap.x, args.cap.y, args.capMode); + PowerStartsFrom.SetActiveValue(!args.powerStartFromOne); Offset.SetActiveValue(args.offset); DecayRate.SetActiveValue(args.decayRate); GrowthRate.SetActiveValue(args.growthRate); @@ -322,6 +328,7 @@ namespace grapher args.cap.y = PowerCap.Out.Field.Data; args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode(); } + if (PowerStartsFrom.Visible) args.powerStartFromOne = PowerStartsFrom.Second.Checked; if (Limit.Visible) { if (args.mode == AccelMode.motivity) @@ -362,6 +369,7 @@ namespace grapher Smooth.AlignActiveValues(); ClassicCap.AlignActiveValues(); PowerCap.AlignActiveValues(); + PowerStartsFrom.AlignActiveValues(); Offset.AlignActiveValues(); Limit.AlignActiveValues(); PowerClassic.AlignActiveValues(); @@ -403,6 +411,7 @@ namespace grapher Limit, PowerClassic, Exponent, + PowerStartsFrom, Midpoint, LutText, LutPanel, diff --git a/grapher/Models/Options/SwitchOption.cs b/grapher/Models/Options/SwitchOption.cs new file mode 100644 index 0000000..79991c1 --- /dev/null +++ b/grapher/Models/Options/SwitchOption.cs @@ -0,0 +1,162 @@ +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 SwitchOption : OptionBase + { + + #region Constructors + + public SwitchOption( + Label label, + CheckBox firstCheckBox, + CheckBox secondCheckBox, + ActiveValueLabel activeValueLabel, + int left) + { + Label = label; + First = firstCheckBox; + Second = secondCheckBox; + ActiveValueLabel = activeValueLabel; + Left = left; + + label.AutoSize = false; + label.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + label.Width = First.Left - left - Constants.OptionLabelBoxSeperation; + label.Height = First.Height; + + ActiveValueLabel.Height = First.Height; + + First.CheckedChanged += OnFirstCheckedChange; + Second.CheckedChanged += OnSecondCheckedChange; + + First.Checked = true; + Second.Left = First.Left + First.Width + Constants.OptionLabelBoxSeperation; + Show(string.Empty); + } + + #endregion Constructors + + #region Properties + + public Label Label { get; } + + public CheckBox First { get; } + + public CheckBox Second { get; } + + public ActiveValueLabel ActiveValueLabel { get; } + + public override int Height + { + get => Label.Height; + } + + public override int Left + { + get => Label.Left; + set + { + Label.Left = value; + } + } + + public override bool Visible + { + get => ShouldShow; + } + + public override int Width + { + get => Second.Left + Second.Width - Label.Left; + set + { + } + } + + public override int Top + { + get => Label.Top; + set + { + Label.Top = value; + First.Top = value; + Second.Top = value; + ActiveValueLabel.Top = value; + } + } + + private bool ShouldShow { get; set; } + + #endregion Properties + + #region Methods + + public override void AlignActiveValues() + { + ActiveValueLabel.Align(); + } + + public override void Hide() + { + ShouldShow = false; + + Label.Hide(); + First.Hide(); + Second.Hide(); + ActiveValueLabel.Hide(); + } + + public override void Show(string name) + { + ShouldShow = true; + + if (!string.IsNullOrWhiteSpace(name)) + { + Label.Text = name; + } + + Label.Show(); + First.Show(); + Second.Show(); + ActiveValueLabel.Show(); + } + + public void SetActiveValue(bool shouldFirstBeChecked) + { + if (shouldFirstBeChecked) + { + First.Checked = true; + ActiveValueLabel.SetValue(First.Text); + } + else + { + Second.Checked = true; + ActiveValueLabel.SetValue(Second.Text); + } + } + + private void OnFirstCheckedChange(object sender, EventArgs e) + { + if (First.Checked) + { + Second.Checked = false; + } + } + + private void OnSecondCheckedChange(object sender, EventArgs e) + { + if (Second.Checked) + { + First.Checked = false; + } + } + + #endregion Methods + } +} -- cgit v1.2.3 From 115030165d539fde5440f6232879c7a076dea2ec Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Sat, 18 Sep 2021 05:20:53 -0400 Subject: generalize power start-from-1 starting output is determined by (gain) offset --- grapher/Models/Options/AccelTypeOptions.cs | 32 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index b3153ed..d89f2d1 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -29,11 +29,11 @@ namespace grapher CheckBoxOption gainSwitch, CapOptions classicCap, CapOptions powerCap, - SwitchOption powerStartsFrom, + Option outputOffset, Option decayRate, Option growthRate, Option smooth, - Option offset, + Option inputOffset, Option limit, Option powerClassic, Option exponent, @@ -67,11 +67,11 @@ namespace grapher Smooth = smooth; ClassicCap = classicCap; PowerCap = powerCap; - Offset = offset; + InputOffset = inputOffset; Limit = limit; PowerClassic = powerClassic; Exponent = exponent; - PowerStartsFrom = powerStartsFrom; + OutputOffset = outputOffset; Midpoint = midpoint; WriteButton = writeButton; AccelTypeActiveValue = accelTypeActiveValue; @@ -114,9 +114,9 @@ namespace grapher public CapOptions PowerCap { get; } - public SwitchOption PowerStartsFrom { get; } + public Option InputOffset { get; } - public Option Offset { get; } + public Option OutputOffset { get; } public Option Limit { get; } @@ -227,8 +227,8 @@ namespace grapher Smooth.Hide(); ClassicCap.Hide(); PowerCap.Hide(); - PowerStartsFrom.Hide(); - Offset.Hide(); + OutputOffset.Hide(); + InputOffset.Hide(); Limit.Hide(); PowerClassic.Hide(); Exponent.Hide(); @@ -265,8 +265,8 @@ namespace grapher args.cap.x, args.cap.y, args.capMode); - PowerStartsFrom.SetActiveValue(!args.powerStartFromOne); - Offset.SetActiveValue(args.offset); + OutputOffset.SetActiveValue(args.outputOffset); + InputOffset.SetActiveValue(args.inputOffset); DecayRate.SetActiveValue(args.decayRate); GrowthRate.SetActiveValue(args.growthRate); Smooth.SetActiveValue(args.smooth); @@ -328,7 +328,6 @@ namespace grapher args.cap.y = PowerCap.Out.Field.Data; args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode(); } - if (PowerStartsFrom.Visible) args.powerStartFromOne = PowerStartsFrom.Second.Checked; if (Limit.Visible) { if (args.mode == AccelMode.motivity) @@ -342,7 +341,8 @@ namespace grapher } if (PowerClassic.Visible) args.exponentClassic = PowerClassic.Field.Data; if (Exponent.Visible) args.exponentPower = Exponent.Field.Data; - if (Offset.Visible) args.offset = Offset.Field.Data; + if (InputOffset.Visible) args.inputOffset = InputOffset.Field.Data; + if (OutputOffset.Visible) args.outputOffset = OutputOffset.Field.Data; if (Midpoint.Visible) args.midpoint = Midpoint.Field.Data; if (LutPanel.Visible) { @@ -369,8 +369,8 @@ namespace grapher Smooth.AlignActiveValues(); ClassicCap.AlignActiveValues(); PowerCap.AlignActiveValues(); - PowerStartsFrom.AlignActiveValues(); - Offset.AlignActiveValues(); + OutputOffset.AlignActiveValues(); + InputOffset.AlignActiveValues(); Limit.AlignActiveValues(); PowerClassic.AlignActiveValues(); Exponent.AlignActiveValues(); @@ -407,11 +407,11 @@ namespace grapher DecayRate, GrowthRate, Smooth, - Offset, + InputOffset, Limit, PowerClassic, Exponent, - PowerStartsFrom, + OutputOffset, Midpoint, LutText, LutPanel, -- cgit v1.2.3 From 915132d15ce4c1913d18adb917124acc727d4800 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 16 Sep 2021 19:52:48 -0400 Subject: fix - gui lut mode AccelArgs::gain was not set from LutApplyOptions --- grapher/Models/Options/AccelTypeOptions.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index d89f2d1..f079542 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -275,7 +275,6 @@ namespace grapher Exponent.SetActiveValue(args.exponentPower); Midpoint.SetActiveValue(args.midpoint); LutPanel.SetActiveValues(args.data, args.length, args.mode); - // TODO - use GainSwitch only? LutApply.SetActiveValue(args.gain); } @@ -309,7 +308,9 @@ namespace grapher public void SetArgs(ref AccelArgs args) { args.mode = AccelerationType.Mode; - args.gain = GainSwitch.CheckBox.Checked; + args.gain = LutPanel.Visible ? + LutApply.ApplyType == LutApplyOptions.LutApplyType.Velocity : + GainSwitch.CheckBox.Checked; if (DecayRate.Visible) args.decayRate = DecayRate.Field.Data; if (GrowthRate.Visible) args.growthRate = GrowthRate.Field.Data; -- cgit v1.2.3 From d270a967b606116596114744417a182b3f16218b Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Sat, 18 Sep 2021 05:39:08 -0400 Subject: rename classic_cap_mode --- grapher/Models/Options/Cap/CapOptions.cs | 2 +- grapher/Models/Options/Cap/CapTypeOptions.cs | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/Cap/CapOptions.cs b/grapher/Models/Options/Cap/CapOptions.cs index ac34abf..de0f597 100644 --- a/grapher/Models/Options/Cap/CapOptions.cs +++ b/grapher/Models/Options/Cap/CapOptions.cs @@ -131,7 +131,7 @@ namespace grapher.Models.Options.Cap double scale, double inCap, double outCap, - ClassicCapMode capMode) + CapMode capMode) { Slope.SetActiveValue(scale); In.SetActiveValue(inCap); diff --git a/grapher/Models/Options/Cap/CapTypeOptions.cs b/grapher/Models/Options/Cap/CapTypeOptions.cs index 1e7bd58..6447feb 100644 --- a/grapher/Models/Options/Cap/CapTypeOptions.cs +++ b/grapher/Models/Options/Cap/CapTypeOptions.cs @@ -107,14 +107,14 @@ namespace grapher.Models.Options.Cap private CapTypeOption Default { get; set; } - public ClassicCapMode GetSelectedCapMode() + public CapMode GetSelectedCapMode() { switch(SelectedCapType) { - case CapType.Output: return ClassicCapMode.output; - case CapType.Both: return ClassicCapMode.in_out; + case CapType.Output: return CapMode.output; + case CapType.Both: return CapMode.in_out; case CapType.Input: - default: return ClassicCapMode.input; + default: return CapMode.input; } } @@ -122,21 +122,21 @@ namespace grapher.Models.Options.Cap #region Methods - public static CapTypeOption CapTypeOptionFromSettings(ClassicCapMode capMode) + public static CapTypeOption CapTypeOptionFromSettings(CapMode capMode) { switch (capMode) { - case ClassicCapMode.output: + case CapMode.output: return OutCap; - case ClassicCapMode.in_out: + case CapMode.in_out: return BothCap; - case ClassicCapMode.input: + case CapMode.input: default: return InCap; } } - public void SetActiveValue(ClassicCapMode capMode) + public void SetActiveValue(CapMode capMode) { Default = CapTypeOptionFromSettings(capMode); SelectedCapOption = Default; -- cgit v1.2.3 From 4c4eabc0cb85cfef22900773649d96f610bb25dc Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Sun, 19 Sep 2021 02:08:06 -0400 Subject: fix jump fields --- grapher/Models/Options/AccelTypeOptions.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/AccelTypeOptions.cs b/grapher/Models/Options/AccelTypeOptions.cs index f079542..359b6b8 100644 --- a/grapher/Models/Options/AccelTypeOptions.cs +++ b/grapher/Models/Options/AccelTypeOptions.cs @@ -29,10 +29,12 @@ namespace grapher CheckBoxOption gainSwitch, CapOptions classicCap, CapOptions powerCap, + Option outputJump, Option outputOffset, Option decayRate, Option growthRate, Option smooth, + Option inputJump, Option inputOffset, Option limit, Option powerClassic, @@ -67,10 +69,12 @@ namespace grapher Smooth = smooth; ClassicCap = classicCap; PowerCap = powerCap; + InputJump = inputJump; InputOffset = inputOffset; Limit = limit; PowerClassic = powerClassic; Exponent = exponent; + OutputJump = outputJump; OutputOffset = outputOffset; Midpoint = midpoint; WriteButton = writeButton; @@ -114,6 +118,10 @@ namespace grapher public CapOptions PowerCap { get; } + public Option InputJump { get; } + + public Option OutputJump { get; } + public Option InputOffset { get; } public Option OutputOffset { get; } @@ -229,6 +237,8 @@ namespace grapher PowerCap.Hide(); OutputOffset.Hide(); InputOffset.Hide(); + InputJump.Hide(); + OutputJump.Hide(); Limit.Hide(); PowerClassic.Hide(); Exponent.Hide(); @@ -265,6 +275,8 @@ namespace grapher args.cap.x, args.cap.y, args.capMode); + InputJump.SetActiveValue(args.cap.x); + OutputJump.SetActiveValue(args.cap.y); OutputOffset.SetActiveValue(args.outputOffset); InputOffset.SetActiveValue(args.inputOffset); DecayRate.SetActiveValue(args.decayRate); @@ -329,6 +341,8 @@ namespace grapher args.cap.y = PowerCap.Out.Field.Data; args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode(); } + if (InputJump.Visible) args.cap.x = InputJump.Field.Data; + if (OutputJump.Visible) args.cap.y = OutputJump.Field.Data; if (Limit.Visible) { if (args.mode == AccelMode.motivity) @@ -344,6 +358,7 @@ namespace grapher if (Exponent.Visible) args.exponentPower = Exponent.Field.Data; if (InputOffset.Visible) args.inputOffset = InputOffset.Field.Data; if (OutputOffset.Visible) args.outputOffset = OutputOffset.Field.Data; + if (Midpoint.Visible) args.midpoint = Midpoint.Field.Data; if (LutPanel.Visible) { @@ -372,6 +387,8 @@ namespace grapher PowerCap.AlignActiveValues(); OutputOffset.AlignActiveValues(); InputOffset.AlignActiveValues(); + OutputJump.AlignActiveValues(); + InputJump.AlignActiveValues(); Limit.AlignActiveValues(); PowerClassic.AlignActiveValues(); Exponent.AlignActiveValues(); @@ -408,10 +425,12 @@ namespace grapher DecayRate, GrowthRate, Smooth, + InputJump, InputOffset, Limit, PowerClassic, Exponent, + OutputJump, OutputOffset, Midpoint, LutText, -- cgit v1.2.3 From c64cc5e1ec3fe60392cafd63b795e5146f6dd159 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Mon, 20 Sep 2021 23:08:30 -0700 Subject: Disable output offset when both cap type selected in power --- grapher/Models/Options/Cap/CapOptions.cs | 39 +++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'grapher/Models/Options') diff --git a/grapher/Models/Options/Cap/CapOptions.cs b/grapher/Models/Options/Cap/CapOptions.cs index de0f597..68326e5 100644 --- a/grapher/Models/Options/Cap/CapOptions.cs +++ b/grapher/Models/Options/Cap/CapOptions.cs @@ -25,18 +25,27 @@ namespace grapher.Models.Options.Cap CapTypeOptions capTypeOptions, Option capIn, Option capOut, - Option slope) + Option slope, + Option disableOptionInBoth = null, + CheckBoxOption disableInBoth = null) { CapTypeOptions = capTypeOptions; In = capIn; Out = capOut; Slope = slope; + DisableOptionInBoth = disableOptionInBoth; + DisableInBoth = disableInBoth; ShouldShow = true; _top = Slope.Top; BottomElement = In; CapTypeOptions.OptionsDropdown.SelectedIndexChanged += OnCapTypeDropdownSelectedItemChanged; CapTypeOptions.SelectedCapOption = InCap; + + if (DisableInBoth != null) + { + DisableInBoth.CheckBox.CheckedChanged += OnDisableInBothCheckedChange; + } } #endregion Constructors @@ -51,6 +60,10 @@ namespace grapher.Models.Options.Cap public Option Slope { get; } + private Option DisableOptionInBoth { get; } + + private CheckBoxOption DisableInBoth { get; } + public override int Left { get => In.Left; @@ -189,6 +202,25 @@ namespace grapher.Models.Options.Cap BottomElement = Out; break; } + + DisableBuggedOptionIfApplicable(); + } + + private void DisableBuggedOptionIfApplicable() + { + if (DisableOptionInBoth != null) + { + if (CapTypeOptions.SelectedCapType == CapType.Both && + DisableInBoth != null && + !DisableInBoth.CheckBox.Checked) + { + DisableOptionInBoth.Field.SetToUnavailable(); + } + else + { + DisableOptionInBoth.Field.SetToDefault(); + } + } } private void ShowInCap() @@ -207,6 +239,11 @@ namespace grapher.Models.Options.Cap CapTypeOptions.CheckIfDefault(); } + private void OnDisableInBothCheckedChange(object sender, EventArgs e) + { + DisableBuggedOptionIfApplicable(); + } + #endregion Methods } } -- cgit v1.2.3