1
0
mirror of https://github.com/python-LimeReport/python-LimeReport.git synced 2025-10-12 15:10:05 +03:00

initial commit

This commit is contained in:
2023-07-15 22:18:53 +03:00
commit c48095bd6d
6 changed files with 258 additions and 0 deletions

103
.gitignore vendored Normal file
View File

@@ -0,0 +1,103 @@
# Created by https://www.toptal.com/developers/gitignore/api/cmake,qt,c++
# Edit at https://www.toptal.com/developers/gitignore?templates=cmake,qt,c++
### C++ ###
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
### CMake ###
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
### CMake Patch ###
# External projects
*-prefix/
### Qt ###
# C++ objects and libs
*.so.*
# Qt-es
object_script.*.Release
object_script.*.Debug
*_plugin_import.cpp
/.qmake.cache
/.qmake.stash
*.pro.user
*.pro.user.*
*.qbs.user
*.qbs.user.*
*.moc
moc_*.cpp
moc_*.h
qrc_*.cpp
ui_*.h
*.qmlc
*.jsc
Makefile*
*build-*
*.qm
*.prl
# Qt unit tests
target_wrapper.*
# QtCreator
*.autosave
# QtCreator Qml
*.qmlproject.user
*.qmlproject.user.*
# QtCreator CMake
CMakeLists.txt.user*
# QtCreator 4.8< compilation database
# QtCreator local machine specific files for imported projects
*creator.user*
*_qmlcache.qrc
# End of https://www.toptal.com/developers/gitignore/api/cmake,qt,c++
build

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "LimeReport"]
path = LimeReport
url = https://github.com/fralx/LimeReport

122
CMakeLists.txt Normal file
View File

@@ -0,0 +1,122 @@
cmake_minimum_required(VERSION 3.18)
cmake_policy(VERSION 3.18)
if(POLICY CMP0068)
cmake_policy(SET CMP0068 NEW)
endif()
project(LimeReport6)
set(USE_QT6 ON)
find_package(QT REQUIRED NAMES Qt6)
find_package(
Qt${QT_VERSION_MAJOR}
COMPONENTS Core Widgets Sql Network Xml Svg Qml PrintSupport REQUIRED
)
# find_package(PythonLibs REQUIRED)
find_package(Shiboken6 REQUIRED)
find_package(PySide6 REQUIRED)
get_target_property(LIBSHIBOKEN_INCLUDE_DIRS Shiboken6::libshiboken INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(PYSIDE_INCLUDE_DIRS PySide6::pyside6 INTERFACE_INCLUDE_DIRECTORIES)
# find_package(PySide6 REQUIRED)
add_subdirectory(LimeReport)
set(CMAKE_CXX_STANDARD 17)
set(wrapped_header ${CMAKE_SOURCE_DIR}/bindings.h)
set(typesystem_file ${CMAKE_SOURCE_DIR}/bindings.xml)
set(generated_sources
limereport_idatasourceholder_wrapper.cpp
limereport6_module_wrapper.cpp
limereport_icallbackdatasource_wrapper.cpp
limereport_enums_wrapper.cpp
limereport_idbcredentialsprovider_wrapper.cpp
limereport_reportengine_wrapper.cpp
limereport_idatasource_wrapper.cpp
limereport_idatasourcemanager_wrapper.cpp
)
list(TRANSFORM generated_sources PREPEND ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/)
set(SHIBOKEN_INCLUDES
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/LimeReport/include
${Qt6Core_INCLUDE_DIRS}
${Qt6Widgets_INCLUDE_DIRS}
${Qt6Qml_INCLUDE_DIRS}
${Qt6PrintSupport_INCLUDE_DIRS}
)
list(REMOVE_DUPLICATES SHIBOKEN_INCLUDES)
list(TRANSFORM SHIBOKEN_INCLUDES PREPEND "-I")
set(SHIBOKEN_TYPESYSTEMS
${CMAKE_SOURCE_DIR}
/usr/share/PySide6/typesystems
)
list(REMOVE_DUPLICATES SHIBOKEN_TYPESYSTEMS)
list(TRANSFORM SHIBOKEN_TYPESYSTEMS PREPEND "-T")
# Qt6PrintSupport_DEFINITIONS
# ===============
set(shiboken_generator_path "/usr/bin")
set(shiboken_path "${shiboken_generator_path}/shiboken6${CMAKE_EXECUTABLE_SUFFIX}")
if(NOT EXISTS ${shiboken_path})
message(FATAL_ERROR "Shiboken executable not found at path: ${shiboken_path}")
endif()
set(shiboken_options
--generator-set=shiboken
--enable-parent-ctor-heuristic
--enable-return-value-heuristic
--use-isnull-as-nb_nonzero
--enable-pyside-extensions
--avoid-protected-hack
${SHIBOKEN_INCLUDES}
${SHIBOKEN_TYPESYSTEMS}
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
)
set(generated_sources_dependencies ${wrapped_header} ${typesystem_file})
add_custom_command(OUTPUT ${generated_sources}
COMMAND ${shiboken_path}
${shiboken_options} ${wrapped_header} ${typesystem_file}
DEPENDS ${generated_sources_dependencies}
IMPLICIT_DEPENDS CXX ${wrapped_header}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Running generator for ${typesystem_file}.")
# ===============
set(${PROJECT_NAME}_sources ${generated_sources})
add_library(${PROJECT_NAME} MODULE ${${PROJECT_NAME}_sources})
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
target_link_libraries(${PROJECT_NAME}
limereport-qt${QT_VERSION_MAJOR}
)
target_link_libraries(${PROJECT_NAME}
Shiboken6::libshiboken
PySide6::pyside6
)
target_include_directories(${PROJECT_NAME} PRIVATE ${PYTHON_INCLUDE_DIRS})
target_include_directories(${PROJECT_NAME} PRIVATE ${LIBSHIBOKEN_INCLUDE_DIRS})
foreach(_dir IN LISTS PYSIDE_INCLUDE_DIRS)
target_include_directories(${PROJECT_NAME} PRIVATE ${_dir})
target_include_directories(${PROJECT_NAME} PRIVATE ${_dir}/QtCore)
target_include_directories(${PROJECT_NAME} PRIVATE ${_dir}/QtGui)
target_include_directories(${PROJECT_NAME} PRIVATE ${_dir}/QtWidgets)
target_include_directories(${PROJECT_NAME} PRIVATE ${_dir}/QtQml)
target_include_directories(${PROJECT_NAME} PRIVATE ${_dir}/QtNetwork)
target_include_directories(${PROJECT_NAME} PRIVATE ${_dir}/QtPrintSupport)
endforeach()

1
LimeReport Submodule

Submodule LimeReport added at 6a623a9ecb

1
bindings.h Normal file
View File

@@ -0,0 +1 @@
#include <lrreportengine.h>

28
bindings.xml Normal file
View File

@@ -0,0 +1,28 @@
<?xml version="1.0"?>
<!--
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-->
<typesystem package="LimeReport6">
<load-typesystem name="typesystem_widgets.xml" generate="no"/>
<load-typesystem name="typesystem_qml.xml" generate="no"/>
<load-typesystem name="typesystem_printsupport_common.xml" generate="no"/>
<namespace-type name="LimeReport" visible="false">
<enum-type name="ExpandType" />
<enum-type name="RenderPass" />
<enum-type name="ArrangeType" />
<enum-type name="ScaleType" />
<enum-type name="PreviewHint" flags="PreviewHints" />
<object-type name="Enums">
<enum-type name="VariableDataType" />
</object-type>
<object-type name="ReportEngine" />
<object-type name="IDataSource">
<enum-type name="DatasourceMode" />
</object-type>
<object-type name="IDataSourceHolder" force-abstract="yes" />
<object-type name="IDataSourceManager" force-abstract="yes" />
<object-type name="IDbCredentialsProvider" />
<object-type name="ICallbackDatasource" />
</namespace-type>
</typesystem>