mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-05 00:02:29 -04:00
progress with the svg.
This commit is contained in:
parent
5a02d487d2
commit
cfc2b047b4
5 changed files with 89 additions and 29 deletions
|
@ -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}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<typesystem package="Shiboken2QtExample">
|
||||
<load-typesystem name="typesystem_core.xml" generate="no"/>
|
||||
<object-type name="KCardDeck_wrapper">
|
||||
<load-typesystem name="typesystem_gui.xml" generate="no"/>
|
||||
<object-type name="MyKCardDeck">
|
||||
<modify-function signature="get_card_pixmap(int)">
|
||||
</modify-function>
|
||||
</object-type>
|
||||
</typesystem>
|
||||
|
|
|
@ -1,20 +1,15 @@
|
|||
/* A file to test imorting C modules for handling arrays to Python */
|
||||
|
||||
#include "kcardgame.hpp"
|
||||
#include <QPixmap>
|
||||
#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;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
#pragma once
|
||||
#include <QPixmap>
|
||||
#include <QObject>
|
||||
#include <QGuiApplication>
|
||||
#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);
|
||||
};
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Add table
Reference in a new issue