feat(sdk): panel provider system (IPanelProvider) #352

Closed
opened 2026-02-27 19:30:24 +00:00 by forbes · 0 comments
Owner

Goal

Addons register dock panel factories via C++ interface with PySide widget bridging.

New files

  • src/Gui/SDK/IPanelProvider.h — Abstract interface: id(), title(), create_widget() (pure virtual); preferred_area(), persistence(), context_affinity() (defaults)
  • src/Gui/SDK/WidgetBridge.h/.cpp — PySide QWidget <-> C++ QWidget* conversion via Gui::PythonWrapper
  • src/Gui/SDK/bindings/PyIPanelProvider.h — Trampoline class
  • src/Gui/SDK/bindings/PyProviderHolder.h — GIL-safe forwarding wrapper

Modified files

  • src/Gui/SDK/Types.h — Add DockArea, PanelPersistence enums
  • src/Gui/SDK/SDKRegistry.h/.cpp — Add register_panel(), unregister_panel(), create_panel()
  • src/Gui/SDK/bindings/kcsdk_py.cpp — Bind IPanelProvider with trampoline
  • mods/sdk/kindred_sdk/dock.py — Rewrite to use kcsdk.register_panel()

Depends on #350. Part of the KCSDK epic (#346). Phase 3 of 8.

## Goal Addons register dock panel factories via C++ interface with PySide widget bridging. ## New files - `src/Gui/SDK/IPanelProvider.h` — Abstract interface: `id()`, `title()`, `create_widget()` (pure virtual); `preferred_area()`, `persistence()`, `context_affinity()` (defaults) - `src/Gui/SDK/WidgetBridge.h/.cpp` — PySide QWidget <-> C++ QWidget* conversion via `Gui::PythonWrapper` - `src/Gui/SDK/bindings/PyIPanelProvider.h` — Trampoline class - `src/Gui/SDK/bindings/PyProviderHolder.h` — GIL-safe forwarding wrapper ## Modified files - `src/Gui/SDK/Types.h` — Add `DockArea`, `PanelPersistence` enums - `src/Gui/SDK/SDKRegistry.h/.cpp` — Add `register_panel()`, `unregister_panel()`, `create_panel()` - `src/Gui/SDK/bindings/kcsdk_py.cpp` — Bind `IPanelProvider` with trampoline - `mods/sdk/kindred_sdk/dock.py` — Rewrite to use `kcsdk.register_panel()` Depends on #350. Part of the KCSDK epic (#346). Phase 3 of 8.
forbes added the enhancement label 2026-02-27 19:30:24 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#352