I have started work on the second widget: the scenario replicator. This widget allows the user to select multiple scenarios and multiple runs for each scenario. Then the user can walk away from their computer while the scenarios run.
The first thing to think about when adding a second widget was the packaging. Do we create a menu allowing the user to choose the widget they want? Or is each widget a separate executable? To keep things lightweight and simple, we decided to go with the latter option. This will necessitate restructuring of the solution as each form will need to be in its own project. I will also create a class library with subroutines that can be shared between the widgets.
I plan to meet with Rob tomorrow so I created some mock-ups of the scenario replicator to discuss. These mock-ups are attached to this post.
1. User uses the Browse... button to locate the scenario.txt file they wish to run
2. User chooses the number of runs they want
3. User clicks the Save button and the pending scenario files are added to a grid on the lower half of the screen
4. User clicks the Run button to run all scenarios and runs (scenario replicator form becomes read-only)
5. New folders will be created under the working directory selected in step 1. The naming convention will be run_x where x is the number of the run
6. The contents of the working directory from step 1 will be copied to the subdirectories except for logs (*.log)
7. All scenarios are run
8. As each run starts status changes to Running; As each run completes status changes to Complete; If a run fails status changes to Failed but the replicator still tries to run the next run.
9. Meanwhile, after the Run button is clicked, the ReplicatorStatus window pops up showing the status as the scenarios run