Files
PDFPatcher/App/Functions/AutoBookmark/TextPositionConditionEditor.cs
2022-04-21 21:43:45 +08:00

68 lines
1.6 KiB
C#

using System;
using System.Windows.Forms;
using PDFPatcher.Model;
namespace PDFPatcher.Functions
{
sealed partial class TextPositionConditionEditor : UserControl, IFilterConditionEditor
{
AutoBookmarkCondition.TextPositionCondition _condition;
bool _lock;
public TextPositionConditionEditor() {
InitializeComponent();
_lock = true;
_PositionBox.SelectedIndex = 0;
_lock = false;
}
#region ITextInfoFilterEditor 成员
public AutoBookmarkCondition Filter {
get => _condition;
set {
_condition = (AutoBookmarkCondition.TextPositionCondition)value;
_lock = true;
_PositionBox.SelectedIndex = _condition.Position - 1;
if (_condition.MinValue == _condition.MaxValue) {
_SpecificBox.Checked = true;
_SpecificValueBox.Value = (decimal)_condition.MaxValue;
}
else {
_RangeBox.Checked = true;
_MaxBox.Value = (decimal)_condition.MaxValue;
_MinBox.Value = (decimal)_condition.MinValue;
}
ToggleControlState();
_lock = false;
}
}
public UserControl EditorControl => this;
#endregion
void ControlChanged(object sender, EventArgs e) {
ToggleControlState();
if (_lock) {
return;
}
float min, max;
if (_SpecificBox.Checked) {
min = max = (float)_SpecificValueBox.Value;
}
else /*if (_YRangeBox.Checked)*/ {
min = (float)_MinBox.Value;
max = (float)_MaxBox.Value;
}
_condition.SetRange((byte)(_PositionBox.SelectedIndex + 1), min, max);
EditAdjustmentForm.UpdateFilter(this);
}
void ToggleControlState() {
_MinBox.Enabled = _MaxBox.Enabled = _RangeBox.Checked;
_SpecificValueBox.Enabled = _SpecificBox.Checked;
}
}
}