Skip to content
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

Hierarchical device properties #585

Open
henrypinkard opened this issue Feb 28, 2025 · 0 comments
Open

Hierarchical device properties #585

henrypinkard opened this issue Feb 28, 2025 · 0 comments

Comments

@henrypinkard
Copy link
Member

Originally proposed in #258 along with standard properties (which have now been independently implemented in #584). A summary of the remaining work that would be needed to implement a hierarchical property mechanism

Benefits

  • Improved organization of properties, especially for devices with many properties
  • More intuitive navigation of related properties
  • Foundation for future property group operations
  • Better user experience when working with complex devices

Core Functionality

  • Introduce hierarchical property naming using // and / delimiters (e.g., //Group/SubGroup/Property)
  • Allow creation of properties with hierarchical names through new API functions
  • Enforce that existing CreateProperty() functions reject names containing //
  • Ensure existing properties without hierarchical syntax continue to work as before

API Changes

  • Add new functions to create hierarchical properties in device layer
  • Maybe implement functions in the MMCore API to retrieve properties based on their group hierarchy

Backwards Compatibility

  • Existing property names without hierarchical syntax remain valid
  • Config files with non-hierarchical property names continue to load correctly
  • Property browser displays hierarchical properties with their full path if UI enhancements are not yet implemented

GUI Enhancements (Future Work)

  • Update property browser to display hierarchical properties in a collapsible tree structure
  • Groups can be expanded/collapsed to show/hide their contained properties
  • Property browser sorts properties by their hierarchical structure

Implementation Guidelines

  • Hierarchical structure is purely a naming convention that exists at the API level
  • Internally, full property paths are used for uniqueness and identification
  • No changes needed to how properties are stored in the system state cache
  • Config files will store the full hierarchical property names
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant