diff --git a/kcardgame/binding-example/CMakeLists.txt b/kcardgame/binding-example/CMakeLists.txt
index 2a440fff..6ca7b061 100644
--- a/kcardgame/binding-example/CMakeLists.txt
+++ b/kcardgame/binding-example/CMakeLists.txt
@@ -3,7 +3,34 @@ cmake_minimum_required(VERSION 3.12)
cmake_policy(VERSION 3.12)
find_package(ECM 5 REQUIRED CONFIG)
-find_package(Qt5 COMPONENTS Core Gui REQUIRED)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
+find_package(Qt5 COMPONENTS Core Gui Svg REQUIRED)
+find_package(KF5 "5.0.0" REQUIRED COMPONENTS
+ Completion
+ Config
+ ConfigWidgets
+ CoreAddons
+ Crash
+ DBusAddons
+ DocTools
+ GuiAddons
+ I18n
+ KIO
+ NewStuff
+ WidgetsAddons
+ XmlGui
+)
+find_package(Shiboken2 "2.0.0" REQUIRED)
+find_package(PySide2 "2.0.0" REQUIRED)
+find_package(KF5KDEGames 4.9.0 REQUIRED)
+include(FeatureSummary)
+include(ECMAddAppIcon)
+include(ECMInstallIcons)
+include(KDEInstallDirs)
+include(KDECompilerSettings NO_POLICY_SCOPE)
+include(KDECMakeSettings)
+include(ECMQtDeclareLoggingCategory)
+include(GenerateExportHeader)
get_target_property(QtCore_location Qt5::Core LOCATION)
get_filename_component(QtCore_libdir ${QtCore_location} DIRECTORY)
@@ -18,7 +45,7 @@ set(bindings_library "Shiboken2QtExample")
set(wrapped_header ${CMAKE_SOURCE_DIR}/bindings.h)
set(typesystem_file ${CMAKE_SOURCE_DIR}/bindings.xml)
set(generated_sources
- ${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/kcarddeck_wrapper_wrapper.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/mykcarddeck_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/shiboken2qtexample_module_wrapper.cpp)
find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
@@ -70,9 +97,27 @@ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH ${shiboken2_module_path} ${CMAKE_CURRENT_SOURCE_DIR} ${QtCore_libdir})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-set(${sample_library}_sources qobjectwithenum.cpp)
+set(${sample_library}_sources kcardgame.cpp
+ "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/kabstractcarddeck.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/kcard.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/libkcardgame/libkcardgame_debug.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/kcarddeck.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/kcardtheme.cpp"
+
+ )
add_library(${sample_library} SHARED ${${sample_library}_sources})
target_link_libraries(${sample_library} Qt5::Core Qt5::Gui)
+target_link_libraries(${sample_library}
+ KF5::Crash
+ KF5::DBusAddons
+ KF5::I18n
+ KF5::KIOCore
+ KF5KDEGames
+)
+target_link_libraries( ${sample_library} KF5::NewStuff KF5::GuiAddons Qt5::Svg KF5::Completion KF5::I18n)
+
+target_link_libraries(${sample_library} Shiboken2::libshiboken)
+target_link_libraries(${sample_library} PySide2::pyside2)
set_property(TARGET ${sample_library} PROPERTY PREFIX "")
get_target_property(qtgui_lib_includes Qt5::Gui INTERFACE_INCLUDE_DIRECTORIES)
@@ -116,6 +161,7 @@ add_library(${bindings_library} MODULE ${${bindings_library}_sources})
target_include_directories(${bindings_library} PRIVATE ${python_include_dir})
target_include_directories(${bindings_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame")
+target_include_directories(${bindings_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/")
target_include_directories(${bindings_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/libkcardgame")
target_include_directories(${bindings_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/include")
target_include_directories(${bindings_library} PRIVATE ${PYSIDE2_DIR}/include/)
@@ -125,6 +171,18 @@ target_include_directories(${bindings_library} PRIVATE "/usr/include/PySide2/QtG
target_include_directories(${bindings_library} PRIVATE ${PYSIDE2_DIR}/include/QtCore)
target_include_directories(${bindings_library} PRIVATE ${shiboken_include_dir})
target_include_directories(${bindings_library} PRIVATE ${CMAKE_SOURCE_DIR})
+target_include_directories(${sample_library} PRIVATE ${python_include_dir})
+target_include_directories(${sample_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame")
+target_include_directories(${sample_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/")
+target_include_directories(${sample_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/libkcardgame")
+target_include_directories(${sample_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/include")
+target_include_directories(${sample_library} PRIVATE ${PYSIDE2_DIR}/include/)
+target_include_directories(${sample_library} PRIVATE "/usr/include/PySide2")
+target_include_directories(${sample_library} PRIVATE "/usr/include/PySide2/QtCore/")
+target_include_directories(${sample_library} PRIVATE "/usr/include/PySide2/QtGui/")
+target_include_directories(${sample_library} PRIVATE ${PYSIDE2_DIR}/include/QtCore)
+target_include_directories(${sample_library} PRIVATE ${shiboken_include_dir})
+target_include_directories(${sample_library} PRIVATE ${CMAKE_SOURCE_DIR})
target_link_libraries(${bindings_library} PRIVATE ${shiboken_shared_libraries})
target_link_libraries(${bindings_library} PRIVATE ${sample_library})
@@ -134,6 +192,7 @@ set_property(TARGET ${bindings_library} PROPERTY PREFIX "")
set_property(TARGET ${bindings_library} PROPERTY OUTPUT_NAME
"${bindings_library}${PYTHON_EXTENSION_SUFFIX}")
+generate_export_header(${sample_library} BASE_NAME libkcardgame)
install(TARGETS ${bindings_library} ${sample_library}
LIBRARY DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}
RUNTIME DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}
diff --git a/kcardgame/binding-example/bindings.xml b/kcardgame/binding-example/bindings.xml
index e2c0c95f..17d305c6 100644
--- a/kcardgame/binding-example/bindings.xml
+++ b/kcardgame/binding-example/bindings.xml
@@ -1,6 +1,9 @@
-
+
+
+
+
diff --git a/kcardgame/binding-example/kcardgame.cpp b/kcardgame/binding-example/kcardgame.cpp
index c34816fb..af3cd160 100644
--- a/kcardgame/binding-example/kcardgame.cpp
+++ b/kcardgame/binding-example/kcardgame.cpp
@@ -1,20 +1,15 @@
/* A file to test imorting C modules for handling arrays to Python */
#include "kcardgame.hpp"
-#include
-#include "KCardDeck"
-#include "KCardTheme"
-class KCardDeck_wrapper
-{
- public:
- KCardDeck * d;
- KCardDeck_wrapper()
+MyKCardDeck::MyKCardDeck()
{
+ int argc = 1;
+ char * argv[2]={"pysol",NULL};
+ app = new QGuiApplication(argc, argv);
d = new KCardDeck( KCardTheme(), nullptr);
}
-QPixmap *get_card_pixmap(int i)
+QPixmap *MyKCardDeck::get_card_pixmap(int i)
{
auto ret = new QPixmap(d->cardPixmap(i, true));
return ret;
-}
};
diff --git a/kcardgame/binding-example/kcardgame.hpp b/kcardgame/binding-example/kcardgame.hpp
index 9ff4447c..04038eed 100644
--- a/kcardgame/binding-example/kcardgame.hpp
+++ b/kcardgame/binding-example/kcardgame.hpp
@@ -1,18 +1,16 @@
#pragma once
#include
+#include
+#include
#include "KCardDeck"
#include "KCardTheme"
-class KCardDeck_wrapper
+class Q_DECL_EXPORT MyKCardDeck: public QObject
{
+ Q_OBJECT
public:
+ QGuiApplication* app;
KCardDeck * d;
- KCardDeck_wrapper()
- {
- d = new KCardDeck( KCardTheme(), nullptr);
- }
-QPixmap *get_card_pixmap(int i)
-{
- auto ret = new QPixmap(d->cardPixmap(i, true));
- return ret;
-}
+ explicit MyKCardDeck();
+public slots:
+Q_DECL_EXPORT QPixmap *get_card_pixmap(int i);
};
diff --git a/pysollib/ui/tktile/svg.py b/pysollib/ui/tktile/svg.py
index 6bbec4aa..2d0b51b4 100644
--- a/pysollib/ui/tktile/svg.py
+++ b/pysollib/ui/tktile/svg.py
@@ -5,11 +5,14 @@
# https://stackoverflow.com/questions/22583035
# Thanks!
-import cairo
+from PySide2.QtGui import QPixmap # noqa: F401
-from gi import require_version
-require_version('Rsvg', '2.0')
-from gi.repository import Rsvg # noqa: E402
+from Shiboken2QtExample import MyKCardDeck
+
+import cairo
+# from gi import require_version
+# require_version('Rsvg', '2.0')
+# from gi.repository import Rsvg # noqa: E402
import pysnooper # noqa: E402
@@ -21,7 +24,8 @@ class SVGManager:
"""docstring for SVGManager"""
def __init__(self, filename):
self.filename = filename
- self.svg = Rsvg.Handle().new_from_file(filename)
+ # self.svg = Rsvg.Handle().new_from_file(filename)
+ self.d = MyKCardDeck()
# Taken from https://stackoverflow.com/questions/44471795
# Under MIT License - thanks.
@@ -39,6 +43,7 @@ class SVGManager:
return img
def render_fragment(self, id_, width, height):
+ return Image.fromqpixmap(self.d.get_card_pixmap(6))
id__ = '#' + id_
"""docstring for render_"""
dims = self.svg.get_dimensions_sub(id__)[1]