feat: add filter toggle to remnant viewer for showing all remnants

The remnant viewer previously always filtered by smallest part dimension,
hiding large remnants that were narrower than the smallest part. Added a
"Filter by part size" checkbox (on by default) so users can toggle this
off to see all remnants regardless of size.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-25 21:39:03 -04:00
parent f29f086080
commit f46bcd4e4b
2 changed files with 31 additions and 4 deletions

View File

@@ -848,7 +848,6 @@ namespace OpenNest.Forms
}
var finder = RemnantFinder.FromPlate(plate);
var tiered = finder.FindTieredRemnants(minDim);
if (remnantViewer == null || remnantViewer.IsDisposed)
{
@@ -862,7 +861,7 @@ namespace OpenNest.Forms
Top);
}
remnantViewer.LoadRemnants(tiered, activeForm.PlateView);
remnantViewer.LoadRemnants(finder, minDim, activeForm.PlateView);
remnantViewer.Show();
remnantViewer.BringToFront();
}

View File

@@ -11,7 +11,10 @@ namespace OpenNest.Forms
public class RemnantViewerForm : Form
{
private ListView listView;
private CheckBox filterCheckBox;
private PlateView plateView;
private RemnantFinder finder;
private double minDim;
private List<TieredRemnant> remnants = new();
private int selectedIndex = -1;
@@ -24,6 +27,15 @@ namespace OpenNest.Forms
ShowInTaskbar = false;
TopMost = true;
filterCheckBox = new CheckBox
{
Text = "Filter by part size",
Checked = true,
Dock = DockStyle.Top,
Padding = new Padding(4, 2, 0, 2),
};
filterCheckBox.CheckedChanged += FilterCheckBox_CheckedChanged;
listView = new ListView
{
Dock = DockStyle.Fill,
@@ -42,6 +54,7 @@ namespace OpenNest.Forms
listView.SelectedIndexChanged += ListView_SelectedIndexChanged;
Controls.Add(listView);
Controls.Add(filterCheckBox);
}
protected override bool ProcessDialogKey(Keys keyData)
@@ -54,10 +67,25 @@ namespace OpenNest.Forms
return base.ProcessDialogKey(keyData);
}
public void LoadRemnants(List<TieredRemnant> tieredRemnants, PlateView view)
public void LoadRemnants(RemnantFinder finder, double minDim, PlateView view)
{
plateView = view;
remnants = tieredRemnants;
this.finder = finder;
this.minDim = minDim;
Refresh();
}
private void FilterCheckBox_CheckedChanged(object sender, EventArgs e)
{
if (finder != null)
Refresh();
}
private new void Refresh()
{
var dim = filterCheckBox.Checked ? minDim : 0;
remnants = finder.FindTieredRemnants(dim);
selectedIndex = -1;
listView.BeginUpdate();