Skip to content

Conversation

sezelt
Copy link
Member

@sezelt sezelt commented Jan 7, 2025

This adds the ability to extend py4DGUI using a plugin mechanism. Classes living in the py4d_browser_plugin namespace and possessing certain attributes are automatically discovered and loaded. Currently the interface is minimal, and plugins have complete access to the DataViewer object, but more over time the interface will become more strictly prescribed. As this develops, all non-core features (including ones currently available in the browser) will be implemented as plugins, and this should also help to clarify how to make an effective interface between the core and the plugins.

To-dos:

  • Re-implement calibration menu as internal plugin
  • Re-implement tcBF as internal plugin
  • Re-implement EMPAD2 raw reader as external plugin
  • Create API for plugins to access detector ROI information
  • Update calibration and tcBF plugins to use ROI API
  • Implement signals/slots for various update conditions to enable better live analysis plugins

The intention is that this will allow for greater flexibility when adding advanced analysis features as well as the ability to control acquisition hardware directly in the GUI. This also helps maintain a clean separation of state between the core functionality and any ancillary features.

@sezelt
Copy link
Member Author

sezelt commented Jun 27, 2025

In the interests of finally getting these new features out there, I am going to release this without making the updates to the signals/slots for live plugins.

@sezelt sezelt marked this pull request as ready for review June 27, 2025 17:54
@sezelt sezelt merged commit be9cc48 into py4dstem:dev Jun 27, 2025
1 check passed
This was referenced Jun 27, 2025
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

Successfully merging this pull request may close these issues.

1 participant