Commit Graph
67 Commits
Author SHA1 Message Date
ajandClaude 703efd528a Encapsulate mutable collections in Bin and Result
Replace public mutable collection fields/properties with private
backing fields and expose them as IReadOnlyList. Add proper methods
for mutation (AddItem, AddItems, RemoveItem, SortItems).

Changes:
- Bin.Items: Now private with AddItem/AddItems/RemoveItem/SortItems
- Result.ItemsNotUsed: Now readonly with Add methods
- Result.Bins: Now readonly with Add methods
- Updated all engine classes to use new encapsulated APIs

This improves encapsulation and prevents external code from
bypassing business logic by directly manipulating collections.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:02:48 -05:00
ajandClaude 2c6fe924e5 Remove useless catch-and-rethrow blocks in Toolbox
Remove empty catch-and-rethrow blocks in Load() and Save() methods
that were catching exceptions only to rethrow them without adding
any value. This improves code clarity and exception propagation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:02:36 -05:00
ajandClaude ee7275ac4f Fix state-mutating getter in LengthItem.Length
Remove dangerous side effect where the Length property getter
was modifying the LengthInputValue field. Property getters should
be pure and not cause state mutations, as this violates the principle
of least surprise and can cause issues with data binding, serialization,
and debugging.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:02:27 -05:00
aj 2869daf4f7 Remove commented-out sanity check code in MultiBinEngine 2025-10-01 23:26:30 -04:00
aj b8612f72d7 Fix null reference risk in BestFitEngine 2025-10-01 23:25:43 -04:00
aj d64d5a8d53 Fix CreateDuplicateBins bug in AdvancedFitEngine 2025-10-01 23:23:12 -04:00
aj a4dfd8c0c4 Simplified BestCombination.FindFrom2 2025-10-01 23:17:34 -04:00
aj 95b663c893 SyncDocumentFromUI 2025-10-01 23:09:00 -04:00
aj 0fb54daf6f Duplicate bins when possible in AdvancedFitEngine 2025-01-11 00:02:01 -05:00
aj ccbf8beeae Allow quantity -1 for infinite. 2025-01-05 23:16:39 -05:00
aj a1ad16bc52 Document 2025-01-02 23:21:34 -05:00
aj 1636a62a77 Refactored BinLayoutView 2025-01-02 23:20:48 -05:00
aj 491b98f983 Added cancel option to load example data 2025-01-01 01:30:47 -05:00
aj 08b3aa9182 Didnt like the name EnhancedBestFitEngine, new one isn't great either but it's better 2025-01-01 00:48:33 -05:00
aj 913064f4f8 Load Example Data 2025-01-01 00:47:01 -05:00
aj 8651465864 Refactored BestCombination.FindFrom2 2024-12-29 22:17:05 -05:00
aj 58b3c49cc6 Added option to OpenFileAfterSave 2024-12-24 13:34:31 -05:00
aj 90ae89802a BinFileSaver 2024-12-09 11:15:08 -05:00
aj d3ab49a7d2 Renamed Engine2 to EnhancedBestFitEngine 2023-03-01 21:59:24 -05:00
aj 2ce685bb83 Added Toolbox to manage tools 2023-01-14 08:39:01 -05:00
aj 2af0c5967f Show results windows maximized 2023-01-14 07:37:48 -05:00
aj eac422cba6 Fixed bin height when drawing BinLayoutView 2023-01-14 02:13:02 -05:00
aj 9ae37ca10c Fixed method name DrawingRowNumbers to DrawRowNumbers 2023-01-13 06:43:37 -05:00
aj 93f5571bbb BestCombination 2022-12-11 21:42:16 -05:00
aj b65dd1ec7d Used lower value priority bins first. 2022-02-09 11:22:56 -05:00
aj 4427cde20d End edit for controls before running 2022-02-09 11:14:33 -05:00
aj 804eedc649 Fixed DataSource reference. 2021-11-15 11:39:12 -05:00
aj a750fe0953 Fixed bin id increment twice. 2021-11-15 11:38:38 -05:00
aj 497d1fc7fc Revised publish url 2021-11-15 09:27:05 -05:00
aj 90d770e10c Fixed utilization greater than 100 percent 2021-11-15 09:10:20 -05:00
aj 029414099e Remember save file name. 2021-11-15 08:46:46 -05:00
aj 24cec30bf7 Set CutList as startup project. 2021-10-14 08:08:31 -04:00
aj f892a4096b Base class LengthItem
Item and BinInputItem are basically the same for accepting string input.
2021-10-14 08:06:29 -04:00
aj 263ce9c0f4 Round inches when converting to feet / inches 2021-10-14 08:03:21 -04:00
aj 495abe8cc3 Reordered methods within MainForm 2021-10-14 07:53:07 -04:00
aj 5e12d8db9c LoadTools 2021-10-14 07:39:32 -04:00
aj fc557d2500 Cleanup 2021-10-07 09:12:38 -04:00
aj 5af1daac11 DataGridView.DrawingRowNumbers 2021-10-07 09:10:34 -04:00
aj 63fa51c5cd Display lengths in feet and inches 2021-10-05 09:25:39 -04:00
aj 28d53e6d38 Multi-bin nesting 2021-10-05 09:24:05 -04:00
aj 25b3cdcfdc Rename UIItem to Item 2021-10-04 19:16:51 -04:00
aj 5f3d95a4c9 Renamed CutToLength to CutList 2021-10-04 19:12:37 -04:00
aj 44f3cbfa81 Moved nesting to SawCut library 2021-10-04 19:06:33 -04:00
aj 793c6173b1 Updated publish settings 2021-04-14 07:15:45 -04:00
aj b305aaa0d4 Number the rows in bins datagridview 2020-05-30 23:36:48 -04:00
aj 7a76426c76 Changed font and header names on ResultsForm 2020-05-30 00:10:11 -04:00
aj 86c10451fb Removed unused OptimizeResult class 2020-03-28 00:06:06 -04:00
aj 9abb4d93b7 Added Engine2 2019-11-20 02:49:31 -05:00
aj 8d7185bda8 Separated nesting logic from UI 2019-11-17 22:42:14 -05:00
aj e9802ce44a Split stock length input into feet and inches boxes 2019-06-30 21:02:54 -04:00
aj 77be658d1b Using SimpleExpressionEvaluator 2019-06-25 19:41:46 -04:00
aj 1f761e6812 Renamed custom tool to other 2019-06-25 19:40:54 -04:00
aj b433a50fde Fixed drawing scrap 2019-06-25 19:40:27 -04:00
aj b085bef9a7 Dont save new row items 2018-06-02 21:43:08 -04:00
aj 7c287e4bd4 Changed dataGridView1 row height 2018-06-02 21:42:33 -04:00
aj 4c5e8f8afb Indent json when saving tools 2018-06-02 21:41:20 -04:00
aj 0cded86d75 Added tool selection for kerf width 2018-06-02 21:28:50 -04:00
aj e5f919a3e8 Fixed Bin.Utilization 2018-06-02 20:24:38 -04:00
aj 2d0494731d Disable save and run buttons when items are empty 2018-06-02 20:22:14 -04:00
aj 4277b866af Renamed Forms 2018-06-02 20:21:39 -04:00
aj a7b0f90a32 Format total length 2018-05-31 23:13:14 -04:00
aj 09fa851367 Removed automatic naming for items 2018-05-31 22:50:09 -04:00
aj 8967aa8b55 Cleanup classes. 2018-05-31 22:31:04 -04:00
aj c3f24df75e Renamed Class1 to BinLayoutView 2018-05-31 18:22:19 -04:00
aj 3fd5f336f0 Skip over items that have 0 length 2018-05-31 17:14:24 -04:00
aj 21e498619c Add project files. 2017-02-20 21:37:49 -05:00
aj 79ed1db912 Add .gitignore and .gitattributes. 2017-02-06 08:36:35 -05:00