Skip to content

Commit 7fd8e81

Browse files
author
Charles PIGNEROL
committed
Première mouture API QtPython3 v2 (refonte totale de la console).
1 parent ab4ddc5 commit 7fd8e81

37 files changed

Lines changed: 5736 additions & 3 deletions

‎cmake/version.cmake‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
# version.cmake : version du projet
33
#
44

5-
# Pour la bibliothèque QtPython3 :
6-
set (QT_PYTHON_3_MAJOR_VERSION "6")
7-
set (QT_PYTHON_3_MINOR_VERSION "5")
5+
# Pour les bibliothèques QtPython3 et QtPython3_v2 :
6+
set (QT_PYTHON_3_MAJOR_VERSION "7")
7+
set (QT_PYTHON_3_MINOR_VERSION "0")
88
set (QT_PYTHON_3_RELEASE_VERSION "0")
99
set (QT_PYTHON_3_VERSION ${QT_PYTHON_3_MAJOR_VERSION}.${QT_PYTHON_3_MINOR_VERSION}.${QT_PYTHON_3_RELEASE_VERSION})
1010

‎src/CMakeLists.txt‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#add_subdirectory (QtPython) # Obsolète, python 2
22
#add_subdirectory (QtPyConsole) # Obsolète, python 2. Bloque sur la partie moc en de rares circonstances
33
add_subdirectory (QtPython3)
4+
add_subdirectory (QtPython3_v2)
45
if (BUILD_PY_CONSOLE)
56
add_subdirectory (QtPyConsole3) # Bloque sur la partie moc en de rares circonstances
67
endif (BUILD_PY_CONSOLE)

‎src/QtPython3/QtPython.cpp‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,12 @@ const Version& QtPython::getVersion ( )
228228
} // QtPython::getVersion
229229

230230

231+
UTF8String QtPython::getNamedVersion ( )
232+
{
233+
return UTF8String (_version.getVersion ( ) + " (console v1)", _consoleCharset);
234+
} // QtPython::getNamedVersion
235+
236+
231237
const Charset& QtPython::getConsoleCharset ( ) // v 3.3.0
232238
{
233239
return _consoleCharset;

‎src/QtPython3/public/QtPython3/QtPython.h‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ class QtPython
4343
*/
4444
static const TkUtil::Version& getVersion ( );
4545

46+
/**
47+
* @return Le numéro de version de ce composant logiciel suffixé de la version de la console.
48+
*/
49+
static TkUtil::UTF8String getNamedVersion ( );
50+
4651
/**
4752
* @return Le jeu de caractères utilisé par la console de lancement.
4853
*/
24 KB
Binary file not shown.

‎src/QtPython3_v2/CMakeLists.txt‎

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
set (CURRENT_PACKAGE_NAME "QtPython3_v2")
2+
set (CURRENT_PACKAGE_MACRO_NAME "QT_PYTHON_3_V2")
3+
4+
find_package (GUIToolkitsVariables 1.7 REQUIRED)
5+
6+
include (${CMAKE_SOURCE_DIR}/cmake/version.cmake)
7+
include (${GUIToolkitsVariables_CMAKE_DIR}/common.cmake)
8+
include (${GUIToolkitsVariables_CMAKE_DIR}/common_qt.cmake) # QT_MAJOR
9+
include (${GUIToolkitsVariables_CMAKE_DIR}/python_binding.cmake)
10+
include (${GUIToolkitsVariables_CMAKE_DIR}/workarounds.cmake)
11+
include (${GUIToolkitsVariables_CMAKE_DIR}/utilities.cmake)
12+
13+
# Le répertoire des scripts python :
14+
set (QT_PYTHON_SCRIPTS_DIR "${CMAKE_INSTALL_PREFIX}/${PYTHON_BINDING_DIR}")
15+
16+
find_package (QtUtil 6 REQUIRED)
17+
find_package (PythonUtil 6 REQUIRED)
18+
find_package(Qt${QT_MAJOR}Core NO_CMAKE_SYSTEM_PATH) # In order to enable moc ...
19+
20+
file (GLOB HEADERS public/${CURRENT_PACKAGE_NAME}/*.h)
21+
file (GLOB CPP_SOURCES *.cpp *.qrc)
22+
file (GLOB PRIVATE_HEADERS include/pyconsole/*.h)
23+
24+
# On ajoute les en-têtes aux sources. C'est utile pour cmake dans certains cas,
25+
# par exemple lorsqu'ils doivent être pré-processés (moc, ...).
26+
add_library (QtPython3_v2 ${CPP_SOURCES} ${HEADERS} ${PRIVATE_HEADERS})
27+
set_property (TARGET QtPython3_v2 PROPERTY AUTOMOC ON)
28+
set_property (TARGET QtPython3_v2 PROPERTY AUTORCC ON)
29+
set (ALL_TARGETS QtPython3_v2)
30+
set_property (TARGET QtPython3_v2 PROPERTY VERSION ${QT_PYTHON_3_VERSION})
31+
set_property (TARGET QtPython3_v2 PROPERTY SOVERSION ${QT_PYTHON_3_MAJOR_VERSION})
32+
set (QT_LIB_DEPENDENCIES Qt${QT_MAJOR}::Widgets Qt${QT_MAJOR}::Gui Qt${QT_MAJOR}::Core)
33+
set (QT_INC_DEPENDENCIES ${Qt${QT_MAJOR}Gui_INCLUDE_DIRS} ${Qt${QT_MAJOR}Core_INCLUDE_DIRS})
34+
# Rem : en Qt v 4.* on utilise -DUSE_QT_WEBKIT
35+
set (QT_PYTHON_3_PUBLIC_FLAGS -DQT_${QT_MAJOR})
36+
set (QT_PYTHON_3_PRIVATE_FLAGS -DQT_PYTHON_VERSION="${QT_PYTHON_3_VERSION}")
37+
38+
target_include_directories (QtPython3_v2 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/public>$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>)
39+
target_include_directories (QtPython3_v2 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>)
40+
target_compile_definitions (QtPython3_v2 PUBLIC ${QT_PYTHON_3_PUBLIC_FLAGS})
41+
target_compile_definitions (QtPython3_v2 PRIVATE ${QT_PYTHON_3_PRIVATE_FLAGS})
42+
target_compile_definitions (QtPython3_v2 PRIVATE PYTHON_CONSOLE_BRIDGE_PATH=\"${QT_PYTHON_SCRIPTS_DIR}/console_bridge.py\")
43+
target_compile_options (QtPython3_v2 PRIVATE ${SHARED_CFLAGS}) # Requested by Qt ...
44+
target_include_directories (QtPython3_v2 PUBLIC ${QT_INC_DEPENDENCIES})
45+
target_link_libraries (QtPython3_v2 PUBLIC QtUtil::QtUtil PythonUtil::PythonUtil)
46+
target_include_directories (QtPython3_v2 PUBLIC ${QT_INC_DEPENDENCIES} ${Python3_INCLUDE_DIRS})
47+
# Etre capable une fois installée de retrouver QtUtil, TkUtil, Qt5*, ... :
48+
# (Rem : en son absence on a Set runtime path of "/tmp/pignerol/install/lib/libQtPython3_v2.so.5.0.0" to "") ...
49+
set_target_properties (QtPython3_v2 PROPERTIES INSTALL_RPATH_USE_LINK_PATH 1)
50+
separate_debug_infos (QtPython3_v2 ${CMAKE_INSTALL_PREFIX}/src)
51+
52+
# INSTALLATION :
53+
include(CMakePackageConfigHelpers)
54+
# Génération du fichier contenant les informations sur la distribution :
55+
configure_file (cmake/QtPython3_v2Distribution.h.in ${CMAKE_CURRENT_BINARY_DIR}/QtPython3_v2Distribution.tmp)
56+
configure_file (${CMAKE_CURRENT_BINARY_DIR}/QtPython3_v2Distribution.tmp ${CMAKE_CURRENT_BINARY_DIR}/QtPython3_v2Distribution.h)
57+
58+
# ConfigPackageLocation : c'est plus ou moins standardisé, le défaut étant lib/cmake.
59+
# On nos recommande très vivement d'utiliser ce répertoire afin de limiter les soucis par la suite,
60+
# notamment au niveau des vues.
61+
set (ConfigPackageLocation ${CMAKE_CMAKE_DIR})
62+
63+
# La génération des règles d'installation :
64+
install (TARGETS ${ALL_TARGETS} EXPORT ${CMAKE_PACKAGE_TARGETS_NAME}
65+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
66+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
67+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
68+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
69+
70+
# Recopie des en-têtes dans le répertoire d'installation :
71+
install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CURRENT_PACKAGE_NAME})
72+
# Dont QtPython3_v2Distribution.h généré plus haut :
73+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtPython3_v2Distribution.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CURRENT_PACKAGE_NAME})
74+
75+
# Recopie des fichiers python indispensable au bon fonctionnement de la console :
76+
file (GLOB QT_PYTHON_SCRIPTS "${CMAKE_CURRENT_SOURCE_DIR}/python/*.py")
77+
78+
# A l'installation recopie dans le répertoire d'installation :
79+
install (FILES ${QT_PYTHON_SCRIPTS} DESTINATION "${QT_PYTHON_SCRIPTS_DIR}")
80+
81+
# Le fichier contenant les informations de version de ce module :
82+
write_basic_package_version_file(${CMAKE_PACKAGE_VERSION_FILE} VERSION ${QT_PYTHON_3_VERSION} COMPATIBILITY SameMajorVersion)
83+
export (EXPORT ${CMAKE_PACKAGE_TARGETS_NAME} FILE ${CMAKE_PACKAGE_TARGETS_FILE} NAMESPACE ${CMAKE_MODULE_NAMESPACE})
84+
85+
# Utilisation par d'autres modules de QtPython3_v2 :
86+
set (INCLUDE_INSTALL_DIR include/) # QtPython3_v2_INCLUDE_DIR avec QtPython3_v2Config.cmake.in
87+
set (LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) # QtPython3_v2_LIB_DIR avec QtPython3_v2Config.cmake.in
88+
set (RUNTIME_INSTALL_DIR ${PYTHON_BINDING_DIR}) # QtPython3_v2_RUNTIME_DIR avec QtPython3_v2Config.cmake.in
89+
# Création du fichier QtPython3_v2Config.cmake qui définira QtPython3_v2_INCLUDE_DIR, QtPython3_v2_LIB_DIR et QtPython3_v2_BIN_DIR :
90+
configure_package_config_file (cmake/${CMAKE_PACKAGE_CONFIG_NAME}.cmake.in ${CMAKE_PACKAGE_CONFIG_FILE}
91+
INSTALL_DESTINATION ${CMAKE_CMAKE_DIR} PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR RUNTIME_INSTALL_DIR)
92+
93+
# Copie du fichier QtPython3_v2Targets.cmake dans prefix/lib/QtPython3_v2/cmake :
94+
install (EXPORT ${CMAKE_PACKAGE_TARGETS_NAME}
95+
FILE ${CMAKE_PACKAGE_TARGETS_BASENAME} NAMESPACE ${CMAKE_MODULE_NAMESPACE}
96+
DESTINATION ${ConfigPackageLocation})
97+
# Copie des fichiers QtPython3_v2Config.cmake et QtPython3_v2ConfigVersion.cmake dans prefix/lib/QtPython3_v2/cmake :
98+
install (FILES ${CMAKE_PACKAGE_CONFIG_FILE} ${CMAKE_PACKAGE_VERSION_FILE} DESTINATION ${ConfigPackageLocation})

0 commit comments

Comments
 (0)