mirror of
https://github.com/RawAccelOfficial/rawaccel.git
synced 2025-05-15 22:04:45 +02:00
183 lines
4.4 KiB
C#
183 lines
4.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace grapher.Models.Options.LUT
|
|
{
|
|
public class LutApplyOptions : OptionBase
|
|
{
|
|
public const string LUTApplyOptionsLabelText = "Apply as:";
|
|
public const int LUTApplyLabelDropdownSeparation = 4;
|
|
|
|
public enum LutApplyType
|
|
{
|
|
Sensitivity,
|
|
Velocity
|
|
}
|
|
|
|
public class LutApplyOption
|
|
{
|
|
public LutApplyType Type { get; set; }
|
|
|
|
public string Name => Type.ToString();
|
|
|
|
public override string ToString() => Name;
|
|
}
|
|
|
|
public static readonly LutApplyOption Sensitivity = new LutApplyOption
|
|
{
|
|
Type = LutApplyType.Sensitivity,
|
|
};
|
|
|
|
public static readonly LutApplyOption Velocity = new LutApplyOption
|
|
{
|
|
Type = LutApplyType.Velocity,
|
|
};
|
|
|
|
public LutApplyOptions(
|
|
Label label,
|
|
ComboBox applyOptionsDropdown,
|
|
ActiveValueLabel lutApplyActiveValue)
|
|
{
|
|
ApplyOptions = applyOptionsDropdown;
|
|
ApplyOptions.Items.Clear();
|
|
ApplyOptions.Items.AddRange(
|
|
new LutApplyOption[]
|
|
{
|
|
Sensitivity,
|
|
Velocity,
|
|
});
|
|
|
|
Label = label;
|
|
Label.Text = LUTApplyOptionsLabelText;
|
|
Label.AutoSize = false;
|
|
Label.Width = 50;
|
|
|
|
ActiveValueLabel = lutApplyActiveValue;
|
|
}
|
|
|
|
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;
|
|
}
|
|
set
|
|
{
|
|
Label.Left = value;
|
|
ApplyOptions.Left = Label.Left + Label.Width + LUTApplyLabelDropdownSeparation;
|
|
}
|
|
}
|
|
|
|
public override int Height
|
|
{
|
|
get
|
|
{
|
|
return Label.Height;
|
|
}
|
|
}
|
|
|
|
public override int Top
|
|
{
|
|
get
|
|
{
|
|
return Label.Top;
|
|
}
|
|
set
|
|
{
|
|
ApplyOptions.Top = value;
|
|
Label.Top = (ApplyOptions.Height - Label.Height) / 2 + ApplyOptions.Top;
|
|
ActiveValueLabel.Top = value;
|
|
}
|
|
}
|
|
|
|
public override int Width
|
|
{
|
|
get
|
|
{
|
|
return Label.Width;
|
|
}
|
|
set
|
|
{
|
|
ApplyOptions.Width = value - Label.Width - Constants.OptionLabelBoxSeperation;
|
|
}
|
|
}
|
|
|
|
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))
|
|
{
|
|
Label.Text = labelText;
|
|
}
|
|
|
|
ApplyOptions.Show();
|
|
ActiveValueLabel.Show();
|
|
ShouldShow = true;
|
|
}
|
|
|
|
public override void AlignActiveValues()
|
|
{
|
|
ActiveValueLabel.Align();
|
|
}
|
|
|
|
public void SetActiveValue(bool applyAsVelocity)
|
|
{
|
|
ApplyOption = ApplyOptionFromSettings(applyAsVelocity);
|
|
ActiveValueLabel.SetValue(ApplyOption.Name);
|
|
}
|
|
|
|
public LutApplyOption ApplyOptionFromSettings(bool applyAsVelocity)
|
|
{
|
|
if (applyAsVelocity)
|
|
{
|
|
return Velocity;
|
|
}
|
|
else
|
|
{
|
|
return Sensitivity;
|
|
}
|
|
}
|
|
}
|
|
}
|