-
Notifications
You must be signed in to change notification settings - Fork 5
Add PropertyGrid to Design dialogs #534
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
7eae139 to
8787216
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As we discussed during live code review, please move the ProbeGroup editor into the the specialized stimulus waveform property editor on the RHS stim gui so that the base class does not have to be informed about its existence.
|
Per the live review with Aaron, I will be changing this to utilize |
- Remove constructor arguments from base class - Rhs2116 is not refactored, as the controls are not 1:1 tied to an underlying object, but are dynamic controls depending on what is selected
|
Overall, I like the properties panes. Can you please have a look at the above issues before a proper review. Also take care to ensure that OOP and idiomatic programming principles are being followed before I look at the code. |
- Add categories to properties - Allow the GUI panels to be resized so the property grid can be better visualized - Fix the stimulus sequence options so that they resize properly - Adjust NeuropixelsV2Dialog to show device properties at all times, and display probe configuration dialogs when selected from the property grid
- NPX V2 probe configuration dialogs are not able to be opened from NPX V2e device dialogs
- Close the probe configuration dialog when any property other than ProbeConfiguration is selected - Add text to panel giving instructions for the user on what to do to show the probe configuration dialog
|
@jonnew This PR is updated based on our discussion this morning, with the changes to the ellipsis and the NeuropixelsV2e dialogs. Below is a GIF showing the updated behavior of the NeuropixelsV2e dialog, showing the probe configuration dialog updating and being removed as needed, as well as the default text being shown in the background when no probe configuration property is selected. |
- Hide certain properties when the property grid is displayed in a custom GUI, specifically hiding the DeviceName/DeviceAddress properties when a dialog comes from a ConfigureHeadstage* node to match the behavior of the Bonsai editor
…n in the device dialog
|
When some property other than the probeconfiguration is selected, we get a helpful dialog in the area where the probe would be shown. I like this but I want a couple changes. |
jonnew
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lets have a live review of this one, I'm not getting the clone() stuff.
| /// Returns a deep copy of the current <see cref="ConfigureNeuropixelsV2e"/> instance. | ||
| /// </summary> | ||
| /// <returns><see cref="ConfigureNeuropixelsV2e"/> instance.</returns> | ||
| public IConfigureNeuropixelsV2 Clone() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are we adding this to the public interface instead of using the copy constructor like all the other configuration operations do? It looks like you are immediately interpreting the result as concrete ConfigureNeuropixelsV2e type anyway?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Another issue I have with this is that its not an interface that actually describes a contract for a "ConfigureNeuropixelsV2" but for some very specific type of headstage that has two NeuropixelsV2ProbeConfiguration's and a common enable. For instance, the headstage I'm implementing for the Allen that has a NPX 2.0 and Intan cannot use this interface.
So basically, the logic is backwards here: the interface was made posthoc to accommodate a set of three properties that happened to be common to a couple specific classes in the library. It was not designed from the beginning as a contract for describing a set of generic functions that are applicable to all e-style headstages that have neuropixels v2(s).
If we create an interface for configuring those headstages that have neuropixels, it needs to be able to handle all cases
- Fix the device dialog label to remain centered when resizing - Add label to probe configuration dialogs (V1/V2) with instructions on how to open the probe configuration








For all custom dialogs, there is now an added tab that contains a PropertyGrid to display all properties for a device. This is always the non-default tab, so that the priority is on the custom GUI, but it is always present should the user want to look at and change any properties that are not exposed via custom controls.
Any changes made in either the custom GUI or the PropertyGrid are operating on the same underlying object, which is the object attached to the PropertyGrid, so that all data is always synchronized.
Neuropixels V1

Neuropixels V2

Rhs2116

Headstage64

Fixes #515