feat(sdk): add IToolbarProvider interface to kcsdk (#354)
This commit is contained in:
@@ -1,19 +1,20 @@
|
||||
# kindred-addon-sdk — stable API for Kindred Create addon integration
|
||||
|
||||
from kindred_sdk.version import SDK_VERSION
|
||||
from kindred_sdk.context import (
|
||||
register_context,
|
||||
unregister_context,
|
||||
register_overlay,
|
||||
unregister_overlay,
|
||||
inject_commands,
|
||||
current_context,
|
||||
refresh_context,
|
||||
)
|
||||
from kindred_sdk.theme import get_theme_tokens, load_palette
|
||||
from kindred_sdk.origin import register_origin, unregister_origin
|
||||
from kindred_sdk.dock import register_dock_panel
|
||||
from kindred_sdk.compat import create_version, freecad_version
|
||||
from kindred_sdk.context import (
|
||||
current_context,
|
||||
inject_commands,
|
||||
refresh_context,
|
||||
register_context,
|
||||
register_overlay,
|
||||
unregister_context,
|
||||
unregister_overlay,
|
||||
)
|
||||
from kindred_sdk.dock import register_dock_panel
|
||||
from kindred_sdk.origin import register_origin, unregister_origin
|
||||
from kindred_sdk.theme import get_theme_tokens, load_palette
|
||||
from kindred_sdk.toolbar import register_toolbar
|
||||
from kindred_sdk.version import SDK_VERSION
|
||||
|
||||
__all__ = [
|
||||
"SDK_VERSION",
|
||||
@@ -26,6 +27,7 @@ __all__ = [
|
||||
"refresh_context",
|
||||
"get_theme_tokens",
|
||||
"load_palette",
|
||||
"register_toolbar",
|
||||
"register_origin",
|
||||
"unregister_origin",
|
||||
"register_dock_panel",
|
||||
|
||||
37
mods/sdk/kindred_sdk/toolbar.py
Normal file
37
mods/sdk/kindred_sdk/toolbar.py
Normal file
@@ -0,0 +1,37 @@
|
||||
"""Toolbar provider registration.
|
||||
|
||||
Wraps the C++ ``kcsdk.register_toolbar()`` API with a Python fallback
|
||||
that extracts toolbar data and calls ``inject_commands()`` directly.
|
||||
"""
|
||||
|
||||
|
||||
def _kcsdk_available():
|
||||
"""Return the kcsdk module if available, else None."""
|
||||
try:
|
||||
import kcsdk
|
||||
|
||||
return kcsdk
|
||||
except ImportError:
|
||||
return None
|
||||
|
||||
|
||||
def register_toolbar(provider):
|
||||
"""Register a toolbar provider for automatic context injection.
|
||||
|
||||
When the C++ ``kcsdk`` module is available, delegates to its
|
||||
``register_toolbar()`` which stores the provider and auto-injects
|
||||
commands into the target editing contexts.
|
||||
|
||||
Falls back to extracting data from the provider and calling
|
||||
``inject_commands()`` directly for each target context.
|
||||
"""
|
||||
kcsdk = _kcsdk_available()
|
||||
if kcsdk is not None:
|
||||
kcsdk.register_toolbar(provider)
|
||||
return
|
||||
|
||||
# Fallback: extract data and call inject_commands directly
|
||||
from kindred_sdk import inject_commands
|
||||
|
||||
for ctx_id in provider.context_ids():
|
||||
inject_commands(ctx_id, provider.toolbar_name(), provider.commands())
|
||||
Reference in New Issue
Block a user