Imagine that you want to run your EventIDE experiment with different hardware or use different values for element properties while keeping the experimental procedure and scripts intact. In the past, you had to create several experiment files for such purposes and then synchronize their further editing. To address that inconvenience, we have added custom configurations management that can be applied within the same experiment.
How does it work?
You can create any number of configurations in your experiment. Each configuration may contain multiple records. When you switch to a certain configuration, each record performs one of two possible actions:
- Replace any element in the base configuration (base element) with its copy, which may have different property values
- Replace a base element with a homotypic element, e.g. when you want to re-configure your experiment for different hardware
Thus, every configuration represents a quick adjustment of selected elements in your experiment.
GUI for configuration management
The configuration management is entirely GUI-based. The next paragraphs describe the new GUI components for managing the configurations.
Configuration ribbon tab
The configuration management is available in the new ribbon tab at the top of the main EventIDE window:
Using the buttons on the Configurations tab you can create a new configuration, choose the currently active configuration via a drop list and import and export the configurations. A name of the current configuration is also added to the title of the main window.
Once you switch into the Configuration ribbon tab, you will see two panels in the central area of the main window:
The left panel displays a list of created configurations and allows selecting a configuration for editing. The central panel allows adding and removing configuration records for a selected configuration. You can also add a configuration description and notes at the bottom of the central panel. The description may contain a plain text as well, as formatted document, if you copy the latter from another text editor.
On-load configuration selection
You can enable on-load configuration selection in your experiment. Then, the configuration selector dialog appears each time you load your experiment :
You can export the current configurations into another experiment with the export/import buttons in the Configuration ribbon tab. When you import the configurations, you will be asked to re-assign the base configurable elements, one by one. For each base element in the imported file, you will have to find a corresponding element in the experiment. If other configurations exist there, they will be overwritten.
There are several rules that you should be aware of, while managing the configurations:
- After you couple the configurable elements via a new configuration record, elements’ editing (apart of deletion) is not synchronized across configurations.
- if the configurable elements have snippets (e.g. the Triggered snippet) the snippet code is shared across configurations.
- Proxy variables created on the configurable elements are remapped to the replacing elements given that the latter have matching properties.
- If you delete a configurable element, the replacing elements will be also deleted in all configurations.
- When you create a configuration record for an element with the material list (e.g. Renderer), the current material list will be copied into a replacing element. However, later the material lists can be edited independently.
- We recommend adding configurations at the late design stages.
- Non-base configurations are always derivatives to the base configuration- they cannot be promoted, extracted or saved separately.
- The configurations can not be switched at runtime.
- If you want to select configurations right at the start of experiment, you can create a proxy variable for the ‘Current Configuration’ property of the Experiment object and add that proxy into the start-up variable list.
- The active configuration can be only set by the drop-down list in the Configurations ribbon tab or via ‘Current Configuration’ property of the Experiment object.