- 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
33 lines
641 B
CMake
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})
|