From 48f4277477483e8bf85d3aa8157fa3d90145c56c Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 12 Nov 2021 22:53:42 -0600 Subject: [PATCH] Spreadsheet: Expose currentIndex to Python --- src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp | 5 ++++ src/Mod/Spreadsheet/Gui/SpreadsheetView.h | 2 ++ .../Spreadsheet/Gui/SpreadsheetViewPyImp.cpp | 1 + .../Gui/ViewProviderSpreadsheetPy.xml | 15 +++++++++--- .../Gui/ViewProviderSpreadsheetPyImp.cpp | 23 ++++++++++++++++++- 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp b/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp index 84d58d7c8c..1eca8136bf 100644 --- a/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp +++ b/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp @@ -439,6 +439,11 @@ QModelIndex SheetView::currentIndex() const return ui->cells->currentIndex(); } +void SpreadsheetGui::SheetView::setCurrentIndex(App::CellAddress cell) const +{ + ui->cells->setCurrentIndex(model->index(cell.row(), cell.col())); +} + PyObject *SheetView::getPyObject() { if (!pythonObject) diff --git a/src/Mod/Spreadsheet/Gui/SpreadsheetView.h b/src/Mod/Spreadsheet/Gui/SpreadsheetView.h index 524bc70f5c..60b5fc98da 100644 --- a/src/Mod/Spreadsheet/Gui/SpreadsheetView.h +++ b/src/Mod/Spreadsheet/Gui/SpreadsheetView.h @@ -79,6 +79,8 @@ public: QModelIndex currentIndex() const; + void setCurrentIndex(App::CellAddress cell) const; + void deleteSelection(); PyObject *getPyObject(void); diff --git a/src/Mod/Spreadsheet/Gui/SpreadsheetViewPyImp.cpp b/src/Mod/Spreadsheet/Gui/SpreadsheetViewPyImp.cpp index d4a6c0e9e1..08b47d8e5d 100644 --- a/src/Mod/Spreadsheet/Gui/SpreadsheetViewPyImp.cpp +++ b/src/Mod/Spreadsheet/Gui/SpreadsheetViewPyImp.cpp @@ -2,6 +2,7 @@ #include "SpreadsheetViewPy.h" #include "SpreadsheetViewPy.cpp" +#include "ui_Sheet.h" #include diff --git a/src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheetPy.xml b/src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheetPy.xml index 0b21aeecdf..e1054e446f 100644 --- a/src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheetPy.xml +++ b/src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheetPy.xml @@ -27,10 +27,19 @@ - -select(index, flags): Select the specified cell using the given QItemSelectionModel.SelectionFlag set + select(index, flags): Select the specified cell using the given QItemSelectionModel.SelectionFlag set select(topLeft, bottomRight, flags): Select the specified range using the given QItemSelectionModel.SelectionFlag set + + + Get the current active cell + + + + + Set the current active cell + + - + \ No newline at end of file diff --git a/src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheetPyImp.cpp b/src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheetPyImp.cpp index 06cc7e1b39..632d00e82f 100644 --- a/src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheetPyImp.cpp +++ b/src/Mod/Spreadsheet/Gui/ViewProviderSpreadsheetPyImp.cpp @@ -48,7 +48,6 @@ PyObject* ViewProviderSpreadsheetPy::select(PyObject* _args) { ViewProviderSheet* vp = this->getViewProviderSheetPtr(); SheetView* sheetView = vp->getView(); - Spreadsheet::Sheet* sheet = sheetView->getSheet(); Py::Sequence args(_args); @@ -73,6 +72,28 @@ PyObject* ViewProviderSpreadsheetPy::select(PyObject* _args) return Py_None; } +PyObject* ViewProviderSpreadsheetPy::currentIndex(PyObject* _args) +{ + ViewProviderSheet* vp = this->getViewProviderSheetPtr(); + SheetView* sheetView = vp->getView(); + auto index = sheetView->currentIndex(); + PyObject* py_str = PyUnicode_FromString( + App::CellAddress(index.row(), index.column()).toString().c_str()); + return py_str; +} + +PyObject* ViewProviderSpreadsheetPy::setCurrentIndex(PyObject* args) +{ + ViewProviderSheet* vp = this->getViewProviderSheetPtr(); + SheetView* sheetView = vp->getView(); + + const char* cell; + if (PyArg_ParseTuple(args, "s", &cell)) { + sheetView->setCurrentIndex(App::CellAddress(cell)); + } + return Py_None; +} + PyObject *ViewProviderSpreadsheetPy::getCustomAttributes(const char* /*attr*/) const { return nullptr;