Some checks failed
Build and Test / build (pull_request) Has been cancelled
Replaces the flat context model with a tree-structured hierarchy: - ContextDefinition gains parentId field for declaring parent-child relationships between contexts - Resolver builds a context stack by walking parentId links from leaf to root, verifying each ancestor matches current state - Breadcrumb is now auto-built from the stack — each level contributes its expanded label and color, replacing all hardcoded special cases - EditingContext gains stack field (QStringList, root to leaf) Transition guards (#386): - addTransitionGuard() / removeTransitionGuard() on resolver - Guards run synchronously before applyContext(); first rejection cancels the transition and emits contextTransitionBlocked signal - Full SDK/pybind11/Python bindings Breadcrumb injection (#387): - injectBreadcrumb() / removeBreadcrumbInjection() on resolver - Addons can append segments to any context's breadcrumb display - Active only when the target context is in the current stack - Full SDK/pybind11/Python bindings Built-in parent assignments: - partdesign.body → partdesign.workbench - partdesign.feature → partdesign.body - partdesign.in_assembly → assembly.edit - sketcher.edit → partdesign.body - assembly.idle → assembly.workbench - assembly.edit → assembly.idle - Workbench-level and root contexts have no parent SDK surface: - Types.h: parentId on ContextDef, stack on ContextSnapshot - SDKRegistry: guard/injection delegation, snapshotFromGui helper - kcsdk_py: parent_id param, context_stack(), guard/injection bindings - kindred_sdk: context_stack(), add/remove_transition_guard(), inject/remove_breadcrumb_injection(), parent_id on register_context() Closes #385, closes #386, closes #387
86 lines
2.1 KiB
Python
86 lines
2.1 KiB
Python
# kindred-addon-sdk — stable API for Kindred Create addon integration
|
|
|
|
from kindred_sdk.command import register_command
|
|
from kindred_sdk.compat import create_version, freecad_version
|
|
from kindred_sdk.context import (
|
|
add_transition_guard,
|
|
available_contexts,
|
|
context_stack,
|
|
current_context,
|
|
inject_breadcrumb,
|
|
inject_commands,
|
|
refresh_context,
|
|
register_context,
|
|
register_overlay,
|
|
remove_breadcrumb_injection,
|
|
remove_transition_guard,
|
|
unregister_context,
|
|
unregister_overlay,
|
|
)
|
|
from kindred_sdk.dock import register_dock_panel
|
|
from kindred_sdk.events import emit, off, on
|
|
from kindred_sdk.lifecycle import context_history, on_context_enter, on_context_exit
|
|
from kindred_sdk.menu import register_menu
|
|
from kindred_sdk.origin import (
|
|
active_origin,
|
|
get_origin,
|
|
list_origins,
|
|
register_origin,
|
|
set_active_origin,
|
|
unregister_origin,
|
|
)
|
|
from kindred_sdk.registry import (
|
|
addon_diagnostics,
|
|
addon_resource,
|
|
addon_version,
|
|
is_addon_loaded,
|
|
loaded_addons,
|
|
)
|
|
from kindred_sdk.statusbar import register_status_widget
|
|
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",
|
|
"active_origin",
|
|
"add_transition_guard",
|
|
"addon_diagnostics",
|
|
"addon_resource",
|
|
"addon_version",
|
|
"available_contexts",
|
|
"context_history",
|
|
"context_stack",
|
|
"create_version",
|
|
"current_context",
|
|
"emit",
|
|
"freecad_version",
|
|
"get_origin",
|
|
"get_theme_tokens",
|
|
"inject_breadcrumb",
|
|
"inject_commands",
|
|
"is_addon_loaded",
|
|
"list_origins",
|
|
"load_palette",
|
|
"loaded_addons",
|
|
"off",
|
|
"on",
|
|
"on_context_enter",
|
|
"on_context_exit",
|
|
"refresh_context",
|
|
"register_command",
|
|
"register_context",
|
|
"register_dock_panel",
|
|
"register_menu",
|
|
"register_origin",
|
|
"register_overlay",
|
|
"register_status_widget",
|
|
"register_toolbar",
|
|
"remove_breadcrumb_injection",
|
|
"remove_transition_guard",
|
|
"set_active_origin",
|
|
"unregister_context",
|
|
"unregister_origin",
|
|
"unregister_overlay",
|
|
]
|