Repository navigation
feat(plugins): menu entries, selection gating and instruments for tools - #384
Merged
Merged
Conversation
Assisted-by: Claude Opus 5.5
Assisted-by: Claude Opus 5.5
This was referenced Oct 7, 2026
Merged
…into feat/plugin-tools
PierreRaybaut
changed the base branch from
feat/application-metadata-guidance
to
feat/plugin-sdk-implementation
October 7, 2026 18:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #374 (#383 is merged).
Application plugins can now offer tools that DataLab shows in its menus, and instruments with a live view, without writing any user interface code:
PluginToolgainsobject_typeandselection(ToolSelection: none, exactly one, at least one, at least two). DataLab lists each tool in the plugin's submenu of the Plugins menu of its panel. When the selection does not match, it disables the menu entry and the catalog button, and the button tooltip tells what to select (PluginBase.assess_tool).instrumentmethod instead of alauncher. This method returns aPluginInstrument(newdatalab.plugin_instrumentsmodule, Qt-free and shared with DataLab-Web): guidata settings,preview()returning anInstrumentFrame, andacquire()returning anInstrumentAcquisition.InstrumentWindow: PlotPy live view and summary on the left, embedded settings on the right (DataSetEditLayoutwith active states, groups, tabs and automatic sliders), and Live and Acquire buttons. Acquired objects go to a new group of the matching panel and are selected, ready for the application's methods. There is one window per tool; reloading plugins closes them.The Camera and Pulse plugins use this to provide a scientific camera simulator and an oscilloscope simulator (DataLab-Platform/datalab-camera-characterization and DataLab-Platform/datalab-pulse-characterization,
feat/equipment-simulator). The small windows that flashed while an instrument window opened came from guidata's automatic sliders; this is fixed on guidatadevelop(PlotPyStack/guidata@49cd14f).Tests
plugin_generator_unit_test.pyare environmental (sigimaxmissing in a subprocess). New tests cover tool validation, selection counting, instruments, the catalog tool buttons, and an application test for the menus of each panel, enable states, launch, the instrument window, errors, acquisition and reload.Docs: the "Plugin tools" section is rewritten with a new "Instruments" subsection,
plugin_toolsandplugin_instrumentsjoin the public API, and the 1.4 release notes are updated, with their French catalogs;datalab.poupdated. The Sphinx gettext build passes with-W.Assisted-by: Claude Opus 5.5