feat: add BendLineDialog for manual bend line property entry
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
103
OpenNest/Forms/BendLineDialog.cs
Normal file
103
OpenNest/Forms/BendLineDialog.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
using OpenNest.Bending;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace OpenNest.Forms
|
||||
{
|
||||
public class BendLineDialog : Form
|
||||
{
|
||||
private readonly ComboBox cboDirection;
|
||||
private readonly NumericUpDown numAngle;
|
||||
private readonly NumericUpDown numRadius;
|
||||
private readonly CheckBox chkRadius;
|
||||
|
||||
public BendLineDialog()
|
||||
{
|
||||
Text = "Bend Line Properties";
|
||||
FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
MaximizeBox = false;
|
||||
MinimizeBox = false;
|
||||
StartPosition = FormStartPosition.CenterParent;
|
||||
Size = new Size(260, 200);
|
||||
|
||||
var font = new Font("Segoe UI", 9f);
|
||||
|
||||
// Direction
|
||||
var lblDir = new Label { Text = "Direction:", Location = new Point(12, 15), AutoSize = true, Font = font };
|
||||
cboDirection = new ComboBox
|
||||
{
|
||||
DropDownStyle = ComboBoxStyle.DropDownList,
|
||||
Location = new Point(100, 12),
|
||||
Width = 130,
|
||||
Font = font
|
||||
};
|
||||
cboDirection.Items.AddRange(new object[] { "Down", "Up" });
|
||||
cboDirection.SelectedIndex = 0;
|
||||
|
||||
// Angle
|
||||
var lblAngle = new Label { Text = "Angle:", Location = new Point(12, 47), AutoSize = true, Font = font };
|
||||
numAngle = new NumericUpDown
|
||||
{
|
||||
Location = new Point(100, 44),
|
||||
Width = 130,
|
||||
Font = font,
|
||||
Minimum = 0,
|
||||
Maximum = 180,
|
||||
DecimalPlaces = 1,
|
||||
Value = 90
|
||||
};
|
||||
|
||||
// Radius (with checkbox to enable)
|
||||
chkRadius = new CheckBox { Text = "Radius:", Location = new Point(12, 79), AutoSize = true, Font = font };
|
||||
numRadius = new NumericUpDown
|
||||
{
|
||||
Location = new Point(100, 76),
|
||||
Width = 130,
|
||||
Font = font,
|
||||
Minimum = 0,
|
||||
Maximum = 25,
|
||||
DecimalPlaces = 3,
|
||||
Increment = 0.0625m,
|
||||
Enabled = false
|
||||
};
|
||||
chkRadius.CheckedChanged += (s, e) => numRadius.Enabled = chkRadius.Checked;
|
||||
|
||||
// Buttons
|
||||
var btnOk = new Button
|
||||
{
|
||||
Text = "OK",
|
||||
DialogResult = DialogResult.OK,
|
||||
Location = new Point(62, 120),
|
||||
Size = new Size(80, 28),
|
||||
Font = font
|
||||
};
|
||||
var btnCancel = new Button
|
||||
{
|
||||
Text = "Cancel",
|
||||
DialogResult = DialogResult.Cancel,
|
||||
Location = new Point(150, 120),
|
||||
Size = new Size(80, 28),
|
||||
Font = font
|
||||
};
|
||||
|
||||
AcceptButton = btnOk;
|
||||
CancelButton = btnCancel;
|
||||
|
||||
Controls.AddRange(new Control[] {
|
||||
lblDir, cboDirection,
|
||||
lblAngle, numAngle,
|
||||
chkRadius, numRadius,
|
||||
btnOk, btnCancel
|
||||
});
|
||||
}
|
||||
|
||||
public BendDirection Direction => cboDirection.SelectedIndex == 0
|
||||
? BendDirection.Down
|
||||
: BendDirection.Up;
|
||||
|
||||
public double BendAngle => (double)numAngle.Value;
|
||||
|
||||
public double? BendRadius => chkRadius.Checked ? (double)numRadius.Value : null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user