From 07db7dd262d4726228b6b8724bde76e322f205a0 Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Fri, 31 Jul 2020 18:42:18 +0200 Subject: [PATCH] [Spreadsheet] Expose SpreadsheetView::getSheet to Python --- src/Mod/Spreadsheet/Gui/CMakeLists.txt | 9 ++++++ src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp | 7 ++++- src/Mod/Spreadsheet/Gui/SpreadsheetViewPy.xml | 23 ++++++++++++++ .../Spreadsheet/Gui/SpreadsheetViewPyImp.cpp | 31 +++++++++++++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/Mod/Spreadsheet/Gui/SpreadsheetViewPy.xml create mode 100644 src/Mod/Spreadsheet/Gui/SpreadsheetViewPyImp.cpp diff --git a/src/Mod/Spreadsheet/Gui/CMakeLists.txt b/src/Mod/Spreadsheet/Gui/CMakeLists.txt index 26f707ada8..cfaf5cba91 100644 --- a/src/Mod/Spreadsheet/Gui/CMakeLists.txt +++ b/src/Mod/Spreadsheet/Gui/CMakeLists.txt @@ -8,6 +8,13 @@ include_directories( ${XercesC_INCLUDE_DIRS} ) +generate_from_xml(SpreadsheetViewPy) + +# The XML files +set(SpreadsheetGui_XML_SRCS + SpreadsheetViewPy.xml +) + set(SpreadsheetGui_LIBS Spreadsheet FreeCADGui @@ -54,6 +61,7 @@ endif() SET(SpreadsheetGui_SRCS ${SpreadsheetGui_QRC_SRCS} + ${SpreadsheetGui_XML_SRCS} AppSpreadsheetGui.cpp Command.cpp LineEdit.h @@ -63,6 +71,7 @@ SET(SpreadsheetGui_SRCS Resources/Spreadsheet.qrc SpreadsheetView.cpp SpreadsheetView.h + SpreadsheetViewPyImp.cpp SpreadsheetDelegate.h SpreadsheetDelegate.cpp SheetTableView.cpp diff --git a/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp b/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp index cac8a3a8f6..1bd97d7af6 100644 --- a/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp +++ b/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp @@ -52,6 +52,7 @@ #include "qtcolorpicker.h" #include "SpreadsheetView.h" +#include "SpreadsheetViewPy.h" #include "SpreadsheetDelegate.h" #include "ui_Sheet.h" @@ -444,7 +445,11 @@ QModelIndex SheetView::currentIndex() const PyObject *SheetView::getPyObject() { - return Gui::MDIView::getPyObject(); + if (!pythonObject) + pythonObject = new SpreadsheetViewPy(this); + + Py_INCREF(pythonObject); + return pythonObject; } void SheetView::deleteSelf() diff --git a/src/Mod/Spreadsheet/Gui/SpreadsheetViewPy.xml b/src/Mod/Spreadsheet/Gui/SpreadsheetViewPy.xml new file mode 100644 index 0000000000..618ddfa7b4 --- /dev/null +++ b/src/Mod/Spreadsheet/Gui/SpreadsheetViewPy.xml @@ -0,0 +1,23 @@ + + + + + + SpreadsheetView object + + + + returns the sheet being displayed + + + + + diff --git a/src/Mod/Spreadsheet/Gui/SpreadsheetViewPyImp.cpp b/src/Mod/Spreadsheet/Gui/SpreadsheetViewPyImp.cpp new file mode 100644 index 0000000000..d4a6c0e9e1 --- /dev/null +++ b/src/Mod/Spreadsheet/Gui/SpreadsheetViewPyImp.cpp @@ -0,0 +1,31 @@ +#include "PreCompiled.h" + +#include "SpreadsheetViewPy.h" +#include "SpreadsheetViewPy.cpp" + +#include + +using namespace SpreadsheetGui; + +PyObject* SpreadsheetViewPy::getSheet(PyObject *args) +{ + if (!PyArg_ParseTuple(args, "")) + return nullptr; + return new Spreadsheet::SheetPy(getSheetViewPtr()->getSheet()); +} + +// returns a string which represents the object e.g. when printed in python +std::string SpreadsheetViewPy::representation(void) const +{ + return std::string(""); +} + +PyObject *SpreadsheetViewPy::getCustomAttributes(const char* /*attr*/) const +{ + return 0; +} + +int SpreadsheetViewPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) +{ + return 0; +}