Files
create/src/Gui/SDK/bindings/CMakeLists.txt
forbes 18532e3bd7 feat(sdk): add panel provider and theme engine to kcsdk (#352, #353)
- IPanelProvider: abstract interface for dock panels with PySide widget bridging
- PyIPanelProvider/PyProviderHolder: pybind11 trampoline + GIL-safe holder
- WidgetBridge: PySide QWidget → C++ QWidget* conversion via Shiboken
- SDKRegistry: panel registration, creation, and lifecycle management
- ThemeEngine: C++ singleton with minimal YAML parser, palette cache,
  getColor/allTokens/formatQss matching Python Palette API
- kcsdk bindings: DockArea, PanelPersistence enums, panel functions,
  theme_color, theme_tokens, format_qss, load_palette
- dock.py: kcsdk delegation with FreeCADGui fallback
- theme.py: kcsdk delegation with Python YAML fallback
2026-02-28 14:53:38 -06:00

33 lines
641 B
CMake

# SPDX-License-Identifier: LGPL-2.1-or-later
set(KCSDKPy_SRCS
kcsdk_py.cpp
PyIPanelProvider.h
PyProviderHolder.h
)
add_library(kcsdk_py SHARED ${KCSDKPy_SRCS})
target_include_directories(kcsdk_py
PRIVATE
${CMAKE_SOURCE_DIR}/src
${CMAKE_BINARY_DIR}/src
${pybind11_INCLUDE_DIR}
)
target_link_libraries(kcsdk_py
PRIVATE
pybind11::module
Python3::Python
KCSDK
)
if(FREECAD_WARN_ERROR)
target_compile_warn_error(kcsdk_py)
endif()
SET_BIN_DIR(kcsdk_py kcsdk /Mod/Create)
SET_PYTHON_PREFIX_SUFFIX(kcsdk_py)
INSTALL(TARGETS kcsdk_py DESTINATION ${CMAKE_INSTALL_LIBDIR})