Beamline Configuration
Configure which beamline plugins to load by editing src/pystream/beamline_config.py:
# Load bl32ID plugins
ACTIVE_BEAMLINE = 'bl32ID'
# Load no beamline plugins
ACTIVE_BEAMLINE = None
# Filter specific plugins (optional)
ENABLED_PLUGINS = ['SoftBPMDialog', 'QGMaxDialog'] # or None for all
Creating Custom Beamlines
Create folder:
src/pystream/beamlines/my_beamline/Create
__init__.py:from .my_plugin import MyPluginDialog __all__ = ['MyPluginDialog']
Create plugin (
my_plugin.py):from PyQt5 import QtWidgets class MyPluginDialog(QtWidgets.QDialog): BUTTON_TEXT = "My Plugin" HANDLER_TYPE = 'singleton' # 'singleton', 'launcher', or 'multi-instance' def __init__(self, parent=None, logger=None): super().__init__(parent) # ... implementation
Activate: Set
ACTIVE_BEAMLINE = 'my_beamline'in config file
Handler Types
singleton: Single instance, show/hide on click (most plugins)
launcher: Execute external script, no dialog (for standalone tools)
multi-instance: New instance each click (rarely needed)