You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fix: retain plugin library lifetime
* fix: harden plugin host boundaries
* docs: clarify plugin author guidance
* fix: avoid dialog instantiation during catalog scans
Add a static manifest tail slot to dialog vtables and teach catalog discovery to use it when present, while preserving the legacy create/get_manifest fallback for existing plugins.
Update SDK examples and docs for the two-argument dialog export, cover the static-manifest path in tests, and simplify redundant unexpected(std::string(...)) error construction.
* fix: fallback for null dialog static manifests
Use the dialog static manifest tail slot only when it is present and non-null. New-header plugins using the legacy one-argument dialog macro now correctly fall back to runtime manifest discovery.
* refactor: move plugin vtable validation out of header
Keep the loader required-slot checks in a private implementation unit and wire them through an internal detail library. Also remove the dialog protocol subproject's global C++ standard override so it no longer downgrades the root build setting.
* formatting
* feat: add parser arrow stream writes
* fix: harden dialog plugin loading
* fix: enable MSVC conformant preprocessor
PJ_DIALOG_PLUGIN's overload-by-arg-count idiom relies on __VA_ARGS__
splitting on commas inside nested macro calls. MSVC's traditional
preprocessor passes __VA_ARGS__ as a single token, causing the
2-argument form to dispatch to the legacy 1-argument macro and
generate a bogus dialogVtableFor<Class, kManifest> specialisation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: update missing slot fixture for parser tail slot
* fix: export MSVC preprocessor mode for dialog SDK
---------
Co-authored-by: Davide Faconti <dfaconti@aurynrobotics.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
editor, reactive time-tick, and ScatterXY output type.
10
+
**Current status:** Dialog SDK support now exists for chart containers,
11
+
chart zoom/pan events, drop targets, editable `QPlainTextEdit` code editors,
12
+
and periodic ticks. Treat the original gap analysis below as historical
13
+
context for porting priorities, not as a current reference. Remaining
14
+
porting risks should be revalidated against the current SDK and datastore
15
+
surface; ScatterXY-style output remains a separate datastore concern.
15
16
16
17
---
17
18
@@ -51,7 +52,10 @@ In the current port:
51
52
- No preview — the transform runs directly on OK
52
53
- Modal dialog that opens and closes
53
54
54
-
This is not a failure of the port — it is a limitation of the current SDK: `DialogPluginTyped` does not support preview widgets (charts) or drag-and-drop. Those features require Dialog SDK extensions.
55
+
At the time of the original port, `DialogPluginTyped` did not support preview
56
+
widgets or drag-and-drop. Current Dialog SDKs provide chart containers,
57
+
chart range events, and generic drop targets; any toolbox port should be
58
+
revalidated against those APIs before treating this section as blocking.
55
59
56
60
The end-to-end wiring is not yet confirmed at 100%. The plugin loads, the dialog opens with combo boxes, but we have not verified that the transform produces data visible in the plots. There may be a mismatch in catalog field names.
57
61
@@ -74,11 +78,11 @@ Three toolbox plugins exist in `plotjuggler/plotjuggler_plugins/`:
74
78
| Aspect | PJ 3.x | New SDK |
75
79
|--------|--------|---------|
76
80
| Plugin owns its UI | Yes — full `QWidget` with arbitrary children | No — `.ui` file + host-rendered dialog runtime |
77
-
| Data access | Direct reference to `PlotDataMapRef`| Via handles: `catalogSnapshot`, `readSeries`, `appendRecord`|
81
+
| Data access | Direct reference to `PlotDataMapRef`| Via handles: `catalogSnapshot`, `readSeriesArrow`, `appendRecord`|
78
82
| Communication | Qt signals/slots | C ABI vtables + JSON config |
79
83
| Qt dependency | Required | None in core/plugin SDK; GUI hosts supply their toolkit runtime |
80
-
| Embedded chart preview | Integrated (`PlotWidgetBase`) |Not available in the SDK|
81
-
| Drag-and-drop | Via `eventFilter` in the plugin |Not supported by the dialog protocol|
84
+
| Embedded chart preview | Integrated (`PlotWidgetBase`) |Available through chart data on QFrame containers|
85
+
| Drag-and-drop | Via `eventFilter` in the plugin |Available through dialog drop targets and `onItemsDropped`|
82
86
| Output type |`PlotData` (time series) **or**`PlotDataXY` (scatter) | Time-indexed series only |
83
87
| Transform registry | Yes — re-applied on layout reload | No — outputs are static data |
84
88
| Reactive execution |`ReactiveLuaFunction` re-runs on every slider tick |`onTick()` exists but cannot write to datastore or access current timestamp |
| Instances | 3: global code, function body, library |
251
255
| Font size | Ctrl+wheel: 8–14 pt range, persisted to `QSettings`|
252
256
253
-
The current SDK has `setPlainText()` for **read-only** text display only. The dialog docs explicitly state that `QTextEdit` and `QPlainTextEdit` are **not supported** by the widget binding system. Without an editable code widget, the Lua editor cannot exist.
257
+
The current Dialog SDK has `setPlainText()`, editable `setCodeContent()`,
258
+
`setCodeLanguage()`, and `onCodeChanged()` for `QPlainTextEdit`-based code
259
+
editing. The Lua editor port still needs product-level validation, but an
260
+
editable code widget is no longer a missing SDK primitive.
254
261
255
262
**SDK equivalent needed:**
256
263
```cpp
@@ -299,7 +306,7 @@ The sol2 Lua API exposed to scripts:
*Gaps 1.1, 1.4, 2.1, 3.1, 3.3, and 4.1 are blocking for their respective toolboxes and require new SDK infrastructure. The remaining gaps represent UX degradation that can be partially mitigated with workarounds within the current SDK.*
488
+
*Historical note: several gaps called blocking in this document have since
489
+
received SDK support. Before using this as a porting checklist, re-run the
490
+
gap analysis against the current Dialog SDK and datastore APIs.*
0 commit comments