From 2e2a58950a192e717ecbf4ca2b5b4a36f8c2335a Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 24 Mar 2017 14:56:32 +0000 Subject: [PATCH] Integrate pyside2/shiboken2 to be able to bind Qt to python * On linux we make it optional since it's too large a project to add as a build step via ExternalProject_add. --- qrenderdoc/CMakeLists.txt | 26 +++ qrenderdoc/Code/pyrenderdoc/PythonContext.cpp | 150 +++++++++++++++++- qrenderdoc/Code/pyrenderdoc/PythonContext.h | 23 ++- qrenderdoc/FindPySide2.cmake | 27 ++++ qrenderdoc/qrenderdoc.pro | 13 ++ qrenderdoc/qrenderdoc_local.vcxproj | 93 ++++++++--- 6 files changed, 305 insertions(+), 27 deletions(-) create mode 100644 qrenderdoc/FindPySide2.cmake diff --git a/qrenderdoc/CMakeLists.txt b/qrenderdoc/CMakeLists.txt index 48f0e8b64..cb959a9d4 100644 --- a/qrenderdoc/CMakeLists.txt +++ b/qrenderdoc/CMakeLists.txt @@ -75,6 +75,11 @@ ExternalProject_Add(custom_swig BUILD_COMMAND $(MAKE) > /dev/null 2>&1 INSTALL_COMMAND $(MAKE) install > /dev/null 2>&1) +# Lastly find PySide 2, optionally, for Qt5 Python bindings +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}") + +find_package(PySide2) + # Output our configuration for qmake. We output this to a separate file so that # the user can then open the qrenderdoc.pro in qt creator and be able to build # with these configuration entries propagated for e.g. linking against libraries @@ -102,6 +107,27 @@ file(WRITE "\n" "OSX_ICONFILE=${CMAKE_CURRENT_BINARY_DIR}/RenderDoc.icns\n") +if(PYSIDE2_FOUND) + # Add configuration for PySide2 + file(APPEND + ${CMAKE_BINARY_DIR}/qrenderdoc/qrenderdoc_cmake.pri + "DEFINES+=PYSIDE2_ENABLED=1\n" + "DEFINES+=PYSIDE2_SYS_PATH=${PYSIDE2_PYTHON_PATH}\n" + "INCLUDEPATH+=${PYSIDE2_INCLUDE_DIR}/PySide2\n" + "INCLUDEPATH+=${PYSIDE2_INCLUDE_DIR}/PySide2/QtCore\n" + "INCLUDEPATH+=${PYSIDE2_INCLUDE_DIR}/PySide2/QtGui\n" + "INCLUDEPATH+=${PYSIDE2_INCLUDE_DIR}/PySide2/QtWidgets\n" + "INCLUDEPATH+=${PYSIDE2_INCLUDE_DIR}/shiboken2\n" + "LIBS+=-L${PYSIDE2_LIBRARY_DIR}\n" + "LIBS+=-lshiboken2\n") +else() + message(STATUS "PySide2 not found - Qt will not be accessible in python scripting") + + file(APPEND + ${CMAKE_BINARY_DIR}/qrenderdoc/qrenderdoc_cmake.pri + "DEFINES+=PYSIDE2_ENABLED=0\n") +endif() + # generate the SWIG interface file add_custom_command(OUTPUT renderdoc_python.cxx renderdoc.py COMMAND ${CMAKE_BINARY_DIR}/bin/swig -v -Wextra -Werror -O -c++ -python -modern -modernargs -enumclass -fastunpack -py3 -builtin -I${CMAKE_SOURCE_DIR}/renderdoc/api/replay -outdir ${CMAKE_CURRENT_BINARY_DIR} -o ${CMAKE_CURRENT_BINARY_DIR}/renderdoc_python.cxx ${CMAKE_CURRENT_SOURCE_DIR}/Code/pyrenderdoc/renderdoc.i diff --git a/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp b/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp index 2c6d4f114..aa46df46a 100644 --- a/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp +++ b/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp @@ -26,6 +26,19 @@ #include #include +#if PYSIDE2_ENABLED +// PySide Qt integration, must be included before Qt headers +// warning C4522: 'Shiboken::AutoDecRef': multiple assignment operators specified +#pragma warning(disable : 4522) +#include +#include +#include + +PyTypeObject **SbkPySide2_QtCoreTypes = NULL; +PyTypeObject **SbkPySide2_QtGuiTypes = NULL; +PyTypeObject **SbkPySide2_QtWidgetsTypes = NULL; +#endif + #include #include #include @@ -201,6 +214,48 @@ void PythonContext::GlobalInit() output->context = NULL; } +// if we need to append to sys.path to locate PySide2, do that now +#if defined(PYSIDE2_SYS_PATH) + { + PyObject *syspath = PyObject_GetAttrString(sysobj, "path"); + +#ifndef STRINGIZE +#define STRINGIZE2(a) #a +#define STRINGIZE(a) STRINGIZE2(a) +#endif + + PyObject *str = PyUnicode_FromString(STRINGIZE(PYSIDE2_SYS_PATH)); + + PyList_Append(syspath, str); + + Py_DecRef(str); + Py_DecRef(syspath); + } +#endif + +// set up PySide +#if PYSIDE2_ENABLED + { + Shiboken::AutoDecRef core(Shiboken::Module::import("PySide2.QtCore")); + if(!core.isNull()) + SbkPySide2_QtCoreTypes = Shiboken::Module::getTypes(core); + else + qCritical() << "Failed to load PySide2.QtCore"; + + Shiboken::AutoDecRef gui(Shiboken::Module::import("PySide2.QtGui")); + if(!gui.isNull()) + SbkPySide2_QtGuiTypes = Shiboken::Module::getTypes(gui); + else + qCritical() << "Failed to load PySide2.QtGui"; + + Shiboken::AutoDecRef widgets(Shiboken::Module::import("PySide2.QtWidgets")); + if(!widgets.isNull()) + SbkPySide2_QtWidgetsTypes = Shiboken::Module::getTypes(widgets); + else + qCritical() << "Failed to load PySide2.QtWidgets"; + } +#endif + // release GIL so that python work can now happen on any thread PyEval_SaveThread(); } @@ -405,6 +460,14 @@ void PythonContext::executeFile(const QString &filename) void PythonContext::setGlobal(const char *varName, const char *typeName, void *object) { + if(!initialised()) + { + emit exception( + "SystemError", + "Python integration failed to initialise, see diagnostic log for more information.", {}); + return; + } + PyGILState_STATE gil = PyGILState_Ensure(); PyObject *obj = PassObjectToPython(typeName, object); @@ -416,11 +479,94 @@ void PythonContext::setGlobal(const char *varName, const char *typeName, void *o PyGILState_Release(gil); + if(ret != 0) + { + emit exception("RuntimeError", + QString("Failed to set variable '%1' of type '%2'").arg(varName).arg(typeName), + {}); + return; + } + + setPyGlobal(varName, obj); +} + +template <> +void PythonContext::setGlobal(const char *varName, PyObject *object) +{ + setPyGlobal(varName, object); +} + +template <> +void PythonContext::setGlobal(const char *varName, QObject *object) +{ + setQtGlobal(varName, object); +} + +template <> +void PythonContext::setGlobal(const char *varName, QWidget *object) +{ + setQtGlobal(varName, object); +} + +void PythonContext::setQtGlobal_internal(const char *varName, const char *typeName, QObject *object) +{ +#if PYSIDE2_ENABLED + if(!initialised()) + { + emit exception( + "SystemError", + "Python integration failed to initialise, see diagnostic log for more information.", {}); + return; + } + + if(!SbkPySide2_QtCoreTypes || !SbkPySide2_QtGuiTypes || !SbkPySide2_QtWidgetsTypes) + { + emit exception("SystemError", + "PySide Qt library didn't load, see diagnostic log for more information.", {}); + return; + } + + PyObject *obj = + Shiboken::Object::newObject(reinterpret_cast(Shiboken::SbkType()), + object, false, false, typeName); + + if(!obj) + { + emit exception("RuntimeError", + QString("Failed to set variable '%1' of type '%2'").arg(varName).arg(typeName), + {}); + return; + } + + setPyGlobal(varName, obj); +#else + emit exception("SystemError", "PySide2 was not enabled at build-time, cannot set Qt variable.", {}); +#endif +} + +void PythonContext::setPyGlobal(const char *varName, PyObject *obj) +{ + if(!initialised()) + { + emit exception( + "SystemError", + "Python integration failed to initialise, see diagnostic log for more information.", {}); + return; + } + + int ret = -1; + + PyGILState_STATE gil = PyGILState_Ensure(); + + if(obj) + ret = PyDict_SetItemString(context_namespace, varName, obj); + + PyGILState_Release(gil); + if(ret == 0) return; - emit exception("RuntimeError", - QString("Failed to set variable '%1' of type '%2'").arg(varName).arg(typeName), {}); + emit exception("RuntimeError", QString("Failed to set variable '%1'").arg(varName), {}); } PyObject *PythonContext::outstream_write(PyObject *self, PyObject *args) diff --git a/qrenderdoc/Code/pyrenderdoc/PythonContext.h b/qrenderdoc/Code/pyrenderdoc/PythonContext.h index 65bad7d77..6d074364e 100644 --- a/qrenderdoc/Code/pyrenderdoc/PythonContext.h +++ b/qrenderdoc/Code/pyrenderdoc/PythonContext.h @@ -26,6 +26,8 @@ #include #include +#include +#include #include "renderdoc_replay.h" class QThread; @@ -54,6 +56,13 @@ public: setGlobal(varName, baseTypeName.data(), (void *)object); } + template + void setQtGlobal(const char *varName, QtObjectType *object) + { + // forward non-template part on + setQtGlobal_internal(varName, typeid(*const_cast(object)).name(), object); + } + QString currentFile() { return location.file; } int currentLine() { return location.line; } signals: @@ -66,6 +75,7 @@ public slots: void executeString(const QString &filename, const QString &source); void executeFile(const QString &filename); void setGlobal(const char *varName, const char *typeName, void *object); + void setPyGlobal(const char *varName, PyObject *object); private: // this is the dict for __main__ after importing our modules, which is copied for each actual @@ -84,8 +94,19 @@ private: int line = 0; } location; + void setQtGlobal_internal(const char *varName, const char *typeName, QObject *object); + // Python callbacks static PyObject *outstream_write(PyObject *self, PyObject *args); static PyObject *outstream_flush(PyObject *self, PyObject *args); static int traceEvent(PyObject *obj, PyFrameObject *frame, int what, PyObject *arg); -}; \ No newline at end of file +}; + +template <> +void PythonContext::setGlobal(const char *varName, PyObject *object); + +template <> +void PythonContext::setGlobal(const char *varName, QObject *object); + +template <> +void PythonContext::setGlobal(const char *varName, QWidget *object); \ No newline at end of file diff --git a/qrenderdoc/FindPySide2.cmake b/qrenderdoc/FindPySide2.cmake new file mode 100644 index 000000000..204974e5f --- /dev/null +++ b/qrenderdoc/FindPySide2.cmake @@ -0,0 +1,27 @@ +# Find PySide2 +# +# PYSIDE2_INCLUDE_DIR - the folder for include files that contains PySide2/ and shiboken2/ +# PYSIDE2_PYTHON_PATH - the folder to add to python's sys.path to locate the PySide modules +# PYSIDE2_LIBRARY_DIR - the folder containing the libshiboken2.so to link against with -lshiboken2 +# PYSIDE2_FOUND - true if PySide2 was successfully located + +find_library(SHIBOKEN2_LIBRARY + NAMES shiboken2) + +get_filename_component(PYSIDE2_LIBRARY_DIR ${SHIBOKEN2_LIBRARY} DIRECTORY) + +find_path(PYSIDE2_PACKAGE_INIT_PY + NAMES PySide2/__init__.py) + +get_filename_component(PYSIDE2_PACKAGE_DIR "${PYSIDE2_PACKAGE_INIT_PY}" DIRECTORY) +get_filename_component(PYSIDE2_PYTHON_PATH "${PYSIDE2_PACKAGE_DIR}" DIRECTORY) + +find_path(PYSIDE2_INCLUDE_DIR + NAMES PySide2/pyside.h + HINTS ${PYSIDE2_PACKAGE_DIR}/include + ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PySide2 DEFAULT_MSG PYSIDE2_INCLUDE_DIR PYSIDE2_PYTHON_PATH PYSIDE2_LIBRARY_DIR) + +mark_as_advanced(PYSIDE2_INCLUDE_DIR PYSIDE2_PYTHON_PATH PYSIDE2_LIBRARY_DIR) diff --git a/qrenderdoc/qrenderdoc.pro b/qrenderdoc/qrenderdoc.pro index 9d504d54c..1361b4649 100644 --- a/qrenderdoc/qrenderdoc.pro +++ b/qrenderdoc/qrenderdoc.pro @@ -71,6 +71,19 @@ win32 { LIBS += $$_PRO_FILE_PWD_/3rdparty/python/x64/python36.lib } + # Include and link against PySide2 + DEFINES += PYSIDE2_ENABLED=1 + INCLUDEPATH += $$_PRO_FILE_PWD_/3rdparty/pyside/include/shiboken2 + INCLUDEPATH += $$_PRO_FILE_PWD_/3rdparty/pyside/include/PySide2 + INCLUDEPATH += $$_PRO_FILE_PWD_/3rdparty/pyside/include/PySide2/QtCore + INCLUDEPATH += $$_PRO_FILE_PWD_/3rdparty/pyside/include/PySide2/QtGui + INCLUDEPATH += $$_PRO_FILE_PWD_/3rdparty/pyside/include/PySide2/QtWidgets + !contains(QMAKE_TARGET.arch, x86_64) { + LIBS += $$_PRO_FILE_PWD_/3rdparty/pyside/Win32/shiboken2.lib + } else { + LIBS += $$_PRO_FILE_PWD_/3rdparty/pyside/x64/shiboken2.lib + } + # Link against the core library LIBS += $$DESTDIR/renderdoc.lib diff --git a/qrenderdoc/qrenderdoc_local.vcxproj b/qrenderdoc/qrenderdoc_local.vcxproj index dbcb4a1ff..0aafe182b 100644 --- a/qrenderdoc/qrenderdoc_local.vcxproj +++ b/qrenderdoc/qrenderdoc_local.vcxproj @@ -114,14 +114,14 @@ - $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) + $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\pyside\include\PySide2;3rdparty\pyside\include\PySide2\QtCore;3rdparty\pyside\include\PySide2\QtGui;3rdparty\pyside\include\PySide2\QtWidgets;3rdparty\pyside\include\shiboken2;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) /wd4718 /wd4127 /wd4714 /wd4100 /wd4512 -Zc:strictStrings -Zc:throwingNew -w34189 -w44996 -w44457 %(AdditionalOptions) false ProgramDatabase 4577;%(DisableSpecificWarnings) Sync MaxSpeed - _WINDOWS;RELEASE;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_MESSAGELOGCONTEXT;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;NDEBUG;%(PreprocessorDefinitions) + _WINDOWS;RELEASE;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;PYSIDE2_ENABLED=1;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_MESSAGELOGCONTEXT;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;NDEBUG;%(PreprocessorDefinitions) false @@ -134,8 +134,8 @@ true - python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies) - 3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib;%(AdditionalLibraryDirectories) + shiboken2.lib;python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies) + 3rdparty\pyside\$(Platform);3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib;%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true true @@ -158,14 +158,14 @@ - $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) + $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\pyside\include\PySide2;3rdparty\pyside\include\PySide2\QtCore;3rdparty\pyside\include\PySide2\QtGui;3rdparty\pyside\include\PySide2\QtWidgets;3rdparty\pyside\include\shiboken2;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) /wd4718 /wd4127 /wd4714 /wd4100 /wd4512 -Zc:strictStrings -Zc:throwingNew -w34189 -w44996 -w44457 %(AdditionalOptions) false ProgramDatabase 4577;%(DisableSpecificWarnings) Sync MaxSpeed - _WINDOWS;RELEASE;UNICODE;WIN32;RENDERDOC_PLATFORM_WIN32;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_MESSAGELOGCONTEXT;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;NDEBUG;%(PreprocessorDefinitions) + _WINDOWS;RELEASE;UNICODE;WIN32;RENDERDOC_PLATFORM_WIN32;PYSIDE2_ENABLED=1;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_MESSAGELOGCONTEXT;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;NDEBUG;%(PreprocessorDefinitions) false @@ -178,8 +178,8 @@ true - python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies) - 3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib;%(AdditionalLibraryDirectories) + shiboken2.lib;python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies) + 3rdparty\pyside\$(Platform);3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib;%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true true @@ -202,14 +202,14 @@ - $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) + $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\pyside\include\PySide2;3rdparty\pyside\include\PySide2\QtCore;3rdparty\pyside\include\PySide2\QtGui;3rdparty\pyside\include\PySide2\QtWidgets;3rdparty\pyside\include\shiboken2;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) /wd4718 /wd4127 /wd4714 /wd4100 /wd4512 -Zc:strictStrings -Zc:throwingNew -w34189 -w44996 -w44457 %(AdditionalOptions) false ProgramDatabase 4577;%(DisableSpecificWarnings) Sync Disabled - _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;PYSIDE2_ENABLED=1;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) false MultiThreadedDLL true @@ -220,8 +220,8 @@ true - python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies) - 3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib%(AdditionalLibraryDirectories) + shiboken2.lib;python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies) + 3rdparty\pyside\$(Platform);3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true true @@ -243,14 +243,14 @@ - $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) + $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\pyside\include\PySide2;3rdparty\pyside\include\PySide2\QtCore;3rdparty\pyside\include\PySide2\QtGui;3rdparty\pyside\include\PySide2\QtWidgets;3rdparty\pyside\include\shiboken2;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) /wd4718 /wd4127 /wd4714 /wd4100 /wd4512 -Zc:strictStrings -Zc:throwingNew -w34189 -w44996 -w44457 %(AdditionalOptions) false ProgramDatabase 4577;%(DisableSpecificWarnings) Sync Disabled - _WINDOWS;UNICODE;WIN32;RENDERDOC_PLATFORM_WIN32;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;WIN32;RENDERDOC_PLATFORM_WIN32;PYSIDE2_ENABLED=1;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) false MultiThreadedDLL true @@ -261,8 +261,8 @@ true - python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies) - 3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib%(AdditionalLibraryDirectories) + shiboken2.lib;python36.lib;qtmain.lib;Qt5Widgets.lib;Qt5Gui.lib;Qt5Core.lib;%(AdditionalDependencies) + 3rdparty\pyside\$(Platform);3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true true @@ -284,14 +284,14 @@ - $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) + $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\pyside\include\PySide2;3rdparty\pyside\include\PySide2\QtCore;3rdparty\pyside\include\PySide2\QtGui;3rdparty\pyside\include\PySide2\QtWidgets;3rdparty\pyside\include\shiboken2;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) /wd4718 /wd4127 /wd4714 /wd4100 /wd4512 -Zc:strictStrings -Zc:throwingNew -w34189 -w44996 -w44457 %(AdditionalOptions) false ProgramDatabase 4577;%(DisableSpecificWarnings) Sync Disabled - _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;PYSIDE2_ENABLED=1;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) false MultiThreadedDebugDLL true @@ -302,8 +302,8 @@ true - python36.lib;qtmaind.lib;Qt5Widgetsd.lib;Qt5Guid.lib;Qt5Cored.lib;%(AdditionalDependencies) - 3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib%(AdditionalLibraryDirectories) + shiboken2.lib;python36.lib;qtmaind.lib;Qt5Widgetsd.lib;Qt5Guid.lib;Qt5Cored.lib;%(AdditionalDependencies) + 3rdparty\pyside\$(Platform);3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true true @@ -325,14 +325,14 @@ - $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) + $(ProjectDir);$(IntDir)generated\;$(SolutionDir)\renderdoc\api\replay;3rdparty\python\include;3rdparty\pyside\include\PySide2;3rdparty\pyside\include\PySide2\QtCore;3rdparty\pyside\include\PySide2\QtGui;3rdparty\pyside\include\PySide2\QtWidgets;3rdparty\pyside\include\shiboken2;3rdparty\qt\$(Platform)\include;3rdparty\qt\$(Platform)\include\QtWidgets;3rdparty\qt\$(Platform)\include\QtGui;3rdparty\qt\$(Platform)\include\QtCore;%(AdditionalIncludeDirectories) /wd4718 /wd4127 /wd4714 /wd4100 /wd4512 -Zc:strictStrings -Zc:throwingNew -w34189 -w44996 -w44457 %(AdditionalOptions) false ProgramDatabase 4577;%(DisableSpecificWarnings) Sync Disabled - _WINDOWS;UNICODE;WIN32;RENDERDOC_PLATFORM_WIN32;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + _WINDOWS;UNICODE;WIN32;RENDERDOC_PLATFORM_WIN32;PYSIDE2_ENABLED=1;SCINTILLA_QT=1;MAKING_LIBRARY=1;SCI_LEXER=1;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) false MultiThreadedDebugDLL true @@ -343,8 +343,8 @@ true - python36.lib;qtmaind.lib;Qt5Widgetsd.lib;Qt5Guid.lib;Qt5Cored.lib;%(AdditionalDependencies) - 3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib%(AdditionalLibraryDirectories) + shiboken2.lib;python36.lib;qtmaind.lib;Qt5Widgetsd.lib;Qt5Guid.lib;Qt5Cored.lib;%(AdditionalDependencies) + 3rdparty\pyside\$(Platform);3rdparty\python\$(Platform);3rdparty\qt\$(Platform)\lib%(AdditionalLibraryDirectories) "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) true true @@ -1449,6 +1449,41 @@ PreserveNewest false + + shiboken2.dll + PreserveNewest + false + + + PySide2\pyside2.dll + PreserveNewest + false + + + PySide2\__init__.py + PreserveNewest + false + + + PySide2\_utils.py + PreserveNewest + false + + + PySide2\QtCore.pyd + PreserveNewest + false + + + PySide2\QtGui.pyd + PreserveNewest + false + + + PySide2\QtWidgets.pyd + PreserveNewest + false + qwindows.dll PreserveNewest @@ -1474,6 +1509,11 @@ PreserveNewest false + + Qt5Network.dll + PreserveNewest + false + Qt5Cored.dll PreserveNewest @@ -1494,6 +1534,11 @@ PreserveNewest false + + Qt5Networkd.dll + PreserveNewest + false +