Files
OpenNest/OpenNest/Forms/PostProcessorConfigForm.cs
2026-03-31 12:07:15 -04:00

43 lines
1.4 KiB
C#

using System;
using System.Text.Json;
using System.Windows.Forms;
namespace OpenNest.Forms
{
public partial class PostProcessorConfigForm : Form
{
private readonly IConfigurablePostProcessor postProcessor;
private readonly string configBackup;
public PostProcessorConfigForm(IConfigurablePostProcessor postProcessor)
{
InitializeComponent();
this.postProcessor = postProcessor;
this.Text = postProcessor.Name + " Settings";
// Deep-clone config as JSON backup for cancel/restore
configBackup = JsonSerializer.Serialize(postProcessor.Config, postProcessor.Config.GetType());
propertyGrid.SelectedObject = postProcessor.Config;
}
private void okButton_Click(object sender, EventArgs e)
{
postProcessor.SaveConfig();
}
private void cancelButton_Click(object sender, EventArgs e)
{
// Restore config from backup
var original = JsonSerializer.Deserialize(configBackup, postProcessor.Config.GetType());
var properties = postProcessor.Config.GetType().GetProperties();
foreach (var prop in properties)
{
if (prop.CanWrite)
prop.SetValue(postProcessor.Config, prop.GetValue(original));
}
}
}
}