Skip to content

Hierarchical device properties #585

Description

@henrypinkard

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions