Compare commits

..

9 Commits

Author SHA1 Message Date
aj bd48f57ce0 feat(ui): distinct Dark palette and recolor drawings on scheme switch
- Replace Dark part colors with high-contrast neon/electric palette
- Recolor existing drawings in open nests when scheme changes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 22:06:14 -04:00
aj a6ec21accc fix(ui): address code review issues in color scheme feature
- Sync PlateView.BackColor on repaint so live scheme switch updates background
- Guard FromHex against truncated hex strings (< 6 chars)
- Cache disk schemes to avoid re-reading Schemes/ folder on every access

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:56:15 -04:00
aj 320cf40f41 feat(ui): ship Schemes folder for user-defined color scheme JSON
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:52:45 -04:00
aj 3beca10429 feat(ui): add color scheme picker to Options dialog
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:52:00 -04:00
aj 8bea5dac6c feat(ui): apply active color scheme at startup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:50:03 -04:00
aj 12f8bbf8f5 feat(ui): add ActiveColorScheme user setting
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 21:49:31 -04:00
aj d15790b948 feat(ui): add ColorSchemeRegistry with Classic/Pastel/Dark built-ins
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:48:46 -04:00
aj d80f76e386 feat(ui): add ColorScheme.Name/PartColors instance props and JSON serializer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 21:46:51 -04:00
aj 07bce8699a refactor(core): make Drawing.PartColors mutable for scheme overrides
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 21:45:18 -04:00
12 changed files with 360 additions and 8 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ namespace OpenNest
private static int nextColorIndex; private static int nextColorIndex;
private Program program; private Program program;
public static readonly Color[] PartColors = new Color[] public static Color[] PartColors = new Color[]
{ {
Color.FromArgb(205, 92, 92), // Indian Red Color.FromArgb(205, 92, 92), // Indian Red
Color.FromArgb(148, 103, 189), // Medium Purple Color.FromArgb(148, 103, 189), // Medium Purple
+4 -1
View File
@@ -13,10 +13,13 @@ namespace OpenNest
private Color edgeSpacingColor; private Color edgeSpacingColor;
private Color previewPartColor; private Color previewPartColor;
public static Color[] PartColors => Drawing.PartColors; public string Name { get; set; } = "Unnamed";
public Color[] PartColors { get; set; } = Drawing.PartColors;
public static readonly ColorScheme Default = new ColorScheme public static readonly ColorScheme Default = new ColorScheme
{ {
Name = "Classic",
BackgroundColor = Color.DarkGray, BackgroundColor = Color.DarkGray,
LayoutOutlineColor = Color.Gray, LayoutOutlineColor = Color.Gray,
LayoutFillColor = Color.WhiteSmoke, LayoutFillColor = Color.WhiteSmoke,
+203
View File
@@ -0,0 +1,203 @@
using OpenNest.Forms;
using OpenNest.Properties;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace OpenNest
{
public static class ColorSchemeRegistry
{
private static readonly Dictionary<string, ColorScheme> builtIns =
new(StringComparer.OrdinalIgnoreCase)
{
["Classic"] = BuildClassic(),
["Pastel"] = BuildPastel(),
["Dark"] = BuildDark()
};
private static List<ColorScheme> diskCache;
public static IEnumerable<ColorScheme> AllSchemes
{
get
{
diskCache ??= LoadDiskSchemes().ToList();
return builtIns.Values.Concat(diskCache);
}
}
public static void Refresh() => diskCache = null;
public static ColorScheme Get(string name)
{
if (string.IsNullOrWhiteSpace(name))
return builtIns["Classic"];
var hit = AllSchemes.FirstOrDefault(
s => string.Equals(s.Name, name, StringComparison.OrdinalIgnoreCase));
return hit ?? builtIns["Classic"];
}
public static void ApplyActiveFromSettings()
{
var name = Settings.Default.ActiveColorScheme;
var scheme = Get(name);
Apply(scheme);
}
public static void Apply(ColorScheme scheme)
{
var d = ColorScheme.Default;
d.Name = scheme.Name;
d.BackgroundColor = scheme.BackgroundColor;
d.LayoutOutlineColor = scheme.LayoutOutlineColor;
d.LayoutFillColor = scheme.LayoutFillColor;
d.BoundingBoxColor = scheme.BoundingBoxColor;
d.RapidColor = scheme.RapidColor;
d.OriginColor = scheme.OriginColor;
d.EdgeSpacingColor = scheme.EdgeSpacingColor;
d.PreviewPartColor = scheme.PreviewPartColor;
d.PartColors = scheme.PartColors;
Drawing.PartColors = scheme.PartColors;
RecolorOpenNests(scheme.PartColors);
}
private static void RecolorOpenNests(Color[] palette)
{
foreach (Form f in Application.OpenForms)
{
if (f is not EditNestForm enf)
continue;
var i = 0;
foreach (var drawing in enf.Nest.Drawings)
{
if (drawing.IsCutOff)
continue;
drawing.Color = palette[i % palette.Length];
i++;
}
}
}
private static IEnumerable<ColorScheme> LoadDiskSchemes()
{
var dir = Path.Combine(AppContext.BaseDirectory, "Schemes");
if (!Directory.Exists(dir))
yield break;
foreach (var path in Directory.GetFiles(dir, "*.json"))
{
ColorScheme scheme;
try
{
scheme = ColorSchemeSerializer.Deserialize(File.ReadAllText(path));
}
catch
{
continue;
}
if (!builtIns.ContainsKey(scheme.Name))
yield return scheme;
}
}
private static ColorScheme BuildClassic() => new ColorScheme
{
Name = "Classic",
BackgroundColor = Color.DarkGray,
LayoutOutlineColor = Color.Gray,
LayoutFillColor = Color.WhiteSmoke,
BoundingBoxColor = Color.FromArgb(128, 128, 255),
RapidColor = Color.DodgerBlue,
OriginColor = Color.Gray,
EdgeSpacingColor = Color.FromArgb(180, 180, 180),
PreviewPartColor = Color.FromArgb(255, 140, 0),
PartColors = new[]
{
Color.FromArgb(205, 92, 92),
Color.FromArgb(148, 103, 189),
Color.FromArgb(75, 180, 175),
Color.FromArgb(210, 190, 75),
Color.FromArgb(190, 85, 175),
Color.FromArgb(185, 115, 85),
Color.FromArgb(120, 100, 190),
Color.FromArgb(200, 100, 140),
Color.FromArgb(80, 175, 155),
Color.FromArgb(195, 160, 85),
Color.FromArgb(175, 95, 160),
Color.FromArgb(215, 130, 130),
}
};
private static ColorScheme BuildPastel() => new ColorScheme
{
Name = "Pastel",
BackgroundColor = Color.FromArgb(70, 75, 85),
LayoutOutlineColor = Color.FromArgb(180, 180, 190),
LayoutFillColor = Color.FromArgb(245, 245, 248),
BoundingBoxColor = Color.FromArgb(128, 128, 255),
RapidColor = Color.DodgerBlue,
OriginColor = Color.FromArgb(160, 160, 160),
EdgeSpacingColor = Color.FromArgb(200, 200, 210),
PreviewPartColor = Color.FromArgb(255, 140, 0),
PartColors = new[]
{
Color.FromArgb(122, 179, 209), Color.FromArgb(254, 229, 174),
Color.FromArgb(143, 177, 229), Color.FromArgb(167, 172, 227),
Color.FromArgb(216, 249, 195), Color.FromArgb(209, 168, 216),
Color.FromArgb(222, 157, 190), Color.FromArgb(176, 255, 240),
Color.FromArgb(235, 205, 153), Color.FromArgb(177, 225, 180),
Color.FromArgb(125, 202, 241), Color.FromArgb(187, 206, 151),
Color.FromArgb(251, 175, 190), Color.FromArgb(129, 226, 227),
Color.FromArgb(255, 253, 207), Color.FromArgb(235, 205, 255),
Color.FromArgb(255, 197, 168), Color.FromArgb(116, 213, 234),
Color.FromArgb(190, 169, 122), Color.FromArgb(213, 159, 135),
Color.FromArgb(124, 184, 155), Color.FromArgb(255, 189, 214),
Color.FromArgb(146, 222, 255), Color.FromArgb(177, 173, 125),
Color.FromArgb(177, 166, 202), Color.FromArgb(197, 208, 255),
Color.FromArgb(255, 209, 243), Color.FromArgb(210, 255, 237),
Color.FromArgb(255, 237, 204), Color.FromArgb(167, 233, 255),
Color.FromArgb(182, 220, 255), Color.FromArgb(159, 177, 142),
Color.FromArgb(190, 248, 255), Color.FromArgb(187, 169, 136),
Color.FromArgb(199, 162, 168), Color.FromArgb(250, 255, 239),
Color.FromArgb(222, 233, 255), Color.FromArgb(255, 234, 225),
Color.FromArgb(240, 249, 255), Color.FromArgb(152, 176, 176),
}
};
private static ColorScheme BuildDark() => new ColorScheme
{
Name = "Dark",
BackgroundColor = Color.FromArgb(30, 30, 34),
LayoutOutlineColor = Color.FromArgb(90, 90, 95),
LayoutFillColor = Color.FromArgb(50, 50, 55),
BoundingBoxColor = Color.FromArgb(100, 160, 220),
RapidColor = Color.FromArgb(255, 200, 50),
OriginColor = Color.FromArgb(120, 120, 130),
EdgeSpacingColor = Color.FromArgb(90, 90, 100),
PreviewPartColor = Color.FromArgb(255, 170, 60),
PartColors = new[]
{
Color.FromArgb(255, 85, 85), // Neon Red
Color.FromArgb(80, 220, 255), // Electric Cyan
Color.FromArgb(255, 200, 50), // Amber
Color.FromArgb(130, 255, 130), // Lime Green
Color.FromArgb(255, 130, 220), // Hot Pink
Color.FromArgb(255, 165, 70), // Tangerine
Color.FromArgb(100, 180, 255), // Sky Blue
Color.FromArgb(200, 160, 255), // Lavender
Color.FromArgb(50, 230, 180), // Mint
Color.FromArgb(255, 255, 100), // Lemon
Color.FromArgb(255, 120, 120), // Salmon
Color.FromArgb(140, 230, 255), // Ice Blue
}
};
}
}
+84
View File
@@ -0,0 +1,84 @@
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text.Json;
namespace OpenNest
{
public static class ColorSchemeSerializer
{
private static readonly JsonSerializerOptions JsonOptions = new()
{
WriteIndented = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
public static string Serialize(ColorScheme scheme)
{
var dto = new ColorSchemeDto
{
Name = scheme.Name,
BackgroundColor = ToHex(scheme.BackgroundColor),
LayoutOutlineColor = ToHex(scheme.LayoutOutlineColor),
LayoutFillColor = ToHex(scheme.LayoutFillColor),
BoundingBoxColor = ToHex(scheme.BoundingBoxColor),
RapidColor = ToHex(scheme.RapidColor),
OriginColor = ToHex(scheme.OriginColor),
EdgeSpacingColor = ToHex(scheme.EdgeSpacingColor),
PreviewPartColor = ToHex(scheme.PreviewPartColor),
PartColors = scheme.PartColors.Select(ToHex).ToArray()
};
return JsonSerializer.Serialize(dto, JsonOptions);
}
public static ColorScheme Deserialize(string json)
{
var dto = JsonSerializer.Deserialize<ColorSchemeDto>(json, JsonOptions)
?? throw new JsonException("ColorScheme JSON was null");
return new ColorScheme
{
Name = dto.Name ?? "Unnamed",
BackgroundColor = FromHex(dto.BackgroundColor),
LayoutOutlineColor = FromHex(dto.LayoutOutlineColor),
LayoutFillColor = FromHex(dto.LayoutFillColor),
BoundingBoxColor = FromHex(dto.BoundingBoxColor),
RapidColor = FromHex(dto.RapidColor),
OriginColor = FromHex(dto.OriginColor),
EdgeSpacingColor = FromHex(dto.EdgeSpacingColor),
PreviewPartColor = FromHex(dto.PreviewPartColor),
PartColors = (dto.PartColors ?? new string[0]).Select(FromHex).ToArray()
};
}
private static string ToHex(Color c) =>
"#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
private static Color FromHex(string hex)
{
if (string.IsNullOrWhiteSpace(hex))
return Color.Black;
var h = hex.TrimStart('#');
if (h.Length < 6)
return Color.Black;
var r = byte.Parse(h.Substring(0, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture);
var g = byte.Parse(h.Substring(2, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture);
var b = byte.Parse(h.Substring(4, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture);
return Color.FromArgb(r, g, b);
}
private class ColorSchemeDto
{
public string Name { get; set; }
public string BackgroundColor { get; set; }
public string LayoutOutlineColor { get; set; }
public string LayoutFillColor { get; set; }
public string BoundingBoxColor { get; set; }
public string RapidColor { get; set; }
public string OriginColor { get; set; }
public string EdgeSpacingColor { get; set; }
public string PreviewPartColor { get; set; }
public string[] PartColors { get; set; }
}
}
}
+3
View File
@@ -464,6 +464,9 @@ namespace OpenNest.Controls
protected override void OnPaint(PaintEventArgs e) protected override void OnPaint(PaintEventArgs e)
{ {
if (BackColor != ColorScheme.BackgroundColor)
BackColor = ColorScheme.BackgroundColor;
e.Graphics.SmoothingMode = SmoothingMode.HighSpeed; e.Graphics.SmoothingMode = SmoothingMode.HighSpeed;
if (DrawOrigin) if (DrawOrigin)
+1
View File
@@ -71,6 +71,7 @@ namespace OpenNest.Forms
NestEngineRegistry.LoadPlugins(enginesDir); NestEngineRegistry.LoadPlugins(enginesDir);
OptionsForm.ApplyDisabledStrategies(); OptionsForm.ApplyDisabledStrategies();
ColorSchemeRegistry.ApplyActiveFromSettings();
foreach (var engine in NestEngineRegistry.AvailableEngines) foreach (var engine in NestEngineRegistry.AvailableEngines)
engineComboBox.Items.Add(engine.Name); engineComboBox.Items.Add(engine.Name);
+31 -5
View File
@@ -42,6 +42,8 @@
this.bottomPanel1 = new OpenNest.Controls.BottomPanel(); this.bottomPanel1 = new OpenNest.Controls.BottomPanel();
this.strategyGrid = new System.Windows.Forms.DataGridView(); this.strategyGrid = new System.Windows.Forms.DataGridView();
this.strategyGroupBox = new System.Windows.Forms.GroupBox(); this.strategyGroupBox = new System.Windows.Forms.GroupBox();
this.colorSchemeLabel = new System.Windows.Forms.Label();
this.colorSchemeCombo = new System.Windows.Forms.ComboBox();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.tableLayoutPanel1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout();
this.bottomPanel1.SuspendLayout(); this.bottomPanel1.SuspendLayout();
@@ -95,15 +97,18 @@
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.textBox1, 1, 0); this.tableLayoutPanel1.Controls.Add(this.textBox1, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.label3, 0, 0); this.tableLayoutPanel1.Controls.Add(this.label3, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.checkBox1, 0, 2); this.tableLayoutPanel1.Controls.Add(this.colorSchemeLabel, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.colorSchemeCombo, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.checkBox1, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.numericUpDown1, 1, 1); this.tableLayoutPanel1.Controls.Add(this.numericUpDown1, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.button1, 3, 0); this.tableLayoutPanel1.Controls.Add(this.button1, 3, 0);
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 12); this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 12);
this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3; this.tableLayoutPanel1.RowCount = 4;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.34F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(684, 160); this.tableLayoutPanel1.Size = new System.Drawing.Size(684, 160);
this.tableLayoutPanel1.TabIndex = 0; this.tableLayoutPanel1.TabIndex = 0;
// //
@@ -198,6 +203,25 @@
this.strategyGroupBox.TabStop = false; this.strategyGroupBox.TabStop = false;
this.strategyGroupBox.Text = "Fill Strategies"; this.strategyGroupBox.Text = "Fill Strategies";
// //
// colorSchemeLabel
//
this.colorSchemeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.colorSchemeLabel.AutoSize = true;
this.colorSchemeLabel.Location = new System.Drawing.Point(3, 92);
this.colorSchemeLabel.Name = "colorSchemeLabel";
this.colorSchemeLabel.Size = new System.Drawing.Size(145, 16);
this.colorSchemeLabel.TabIndex = 10;
this.colorSchemeLabel.Text = "Color scheme:";
//
// colorSchemeCombo
//
this.colorSchemeCombo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.colorSchemeCombo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.colorSchemeCombo.Location = new System.Drawing.Point(154, 89);
this.colorSchemeCombo.Name = "colorSchemeCombo";
this.colorSchemeCombo.Size = new System.Drawing.Size(130, 24);
this.colorSchemeCombo.TabIndex = 11;
//
// OptionsForm // OptionsForm
// //
this.AcceptButton = this.saveButton; this.AcceptButton = this.saveButton;
@@ -239,5 +263,7 @@
private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button1;
private System.Windows.Forms.DataGridView strategyGrid; private System.Windows.Forms.DataGridView strategyGrid;
private System.Windows.Forms.GroupBox strategyGroupBox; private System.Windows.Forms.GroupBox strategyGroupBox;
private System.Windows.Forms.Label colorSchemeLabel;
private System.Windows.Forms.ComboBox colorSchemeCombo;
} }
} }
+12
View File
@@ -68,6 +68,13 @@ namespace OpenNest.Forms
checkBox1.Checked = Settings.Default.CreateNewNestOnOpen; checkBox1.Checked = Settings.Default.CreateNewNestOnOpen;
numericUpDown1.Value = (decimal)Settings.Default.AutoSizePlateFactor; numericUpDown1.Value = (decimal)Settings.Default.AutoSizePlateFactor;
colorSchemeCombo.Items.Clear();
foreach (var scheme in ColorSchemeRegistry.AllSchemes)
colorSchemeCombo.Items.Add(scheme.Name);
var active = Settings.Default.ActiveColorScheme;
var idx = colorSchemeCombo.Items.IndexOf(active);
colorSchemeCombo.SelectedIndex = idx >= 0 ? idx : 0;
var disabledNames = ParseDisabledStrategies(Settings.Default.DisabledStrategies); var disabledNames = ParseDisabledStrategies(Settings.Default.DisabledStrategies);
foreach (DataGridViewRow row in strategyGrid.Rows) foreach (DataGridViewRow row in strategyGrid.Rows)
row.Cells["Enabled"].Value = !disabledNames.Contains((string)row.Cells["Name"].Value); row.Cells["Enabled"].Value = !disabledNames.Contains((string)row.Cells["Name"].Value);
@@ -78,6 +85,7 @@ namespace OpenNest.Forms
Settings.Default.NestTemplatePath = textBox1.Text; Settings.Default.NestTemplatePath = textBox1.Text;
Settings.Default.CreateNewNestOnOpen = checkBox1.Checked; Settings.Default.CreateNewNestOnOpen = checkBox1.Checked;
Settings.Default.AutoSizePlateFactor = (double)numericUpDown1.Value; Settings.Default.AutoSizePlateFactor = (double)numericUpDown1.Value;
Settings.Default.ActiveColorScheme = colorSchemeCombo.SelectedItem as string ?? "Classic";
var disabledNames = new List<string>(); var disabledNames = new List<string>();
foreach (DataGridViewRow row in strategyGrid.Rows) foreach (DataGridViewRow row in strategyGrid.Rows)
@@ -89,6 +97,10 @@ namespace OpenNest.Forms
Settings.Default.Save(); Settings.Default.Save();
ApplyDisabledStrategies(); ApplyDisabledStrategies();
ColorSchemeRegistry.ApplyActiveFromSettings();
foreach (Form f in Application.OpenForms)
f.Invalidate(invalidateChildren: true);
} }
/// <summary> /// <summary>
+5
View File
@@ -15,6 +15,11 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Update="Schemes\*.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\OpenNest.Api\OpenNest.Api.csproj" /> <ProjectReference Include="..\OpenNest.Api\OpenNest.Api.csproj" />
<ProjectReference Include="..\OpenNest.Core\OpenNest.Core.csproj" /> <ProjectReference Include="..\OpenNest.Core\OpenNest.Core.csproj" />
+12
View File
@@ -226,5 +226,17 @@ namespace OpenNest.Properties {
this["CuttingParametersJson"] = value; this["CuttingParametersJson"] = value;
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Classic")]
public string ActiveColorScheme {
get {
return ((string)(this["ActiveColorScheme"]));
}
set {
this["ActiveColorScheme"] = value;
}
}
} }
} }
+3
View File
@@ -53,5 +53,8 @@
<Setting Name="CuttingParametersJson" Type="System.String" Scope="User"> <Setting Name="CuttingParametersJson" Type="System.String" Scope="User">
<Value Profile="(Default)" /> <Value Profile="(Default)" />
</Setting> </Setting>
<Setting Name="ActiveColorScheme" Type="System.String" Scope="User">
<Value Profile="(Default)">Classic</Value>
</Setting>
</Settings> </Settings>
</SettingsFile> </SettingsFile>
View File