diff --git a/src/Gui/SplitView3DInventor.cpp b/src/Gui/SplitView3DInventor.cpp
index 5b7bfe831..5526c879d 100644
--- a/src/Gui/SplitView3DInventor.cpp
+++ b/src/Gui/SplitView3DInventor.cpp
@@ -367,6 +367,227 @@ void AbstractSplitView::setOverrideCursor(const QCursor& aCursor)
//_viewer->getWidget()->setCursor(aCursor);
}
+PyObject *AbstractSplitView::getPyObject(void)
+{
+ static bool init = false;
+ if (!init) {
+ init = true;
+ AbstractSplitViewPy::init_type();
+ }
+
+ return new AbstractSplitViewPy(this);
+}
+
+void AbstractSplitView::setPyObject(PyObject *)
+{
+ throw Base::AttributeError("Attribute is read-only");
+}
+
+// ------------------------------------------------------
+
+void AbstractSplitViewPy::init_type()
+{
+ behaviors().name("AbstractSplitViewPy");
+ behaviors().doc("Python binding class for the Inventor viewer class");
+ // you must have overwritten the virtual functions
+ behaviors().supportRepr();
+
+ add_varargs_method("fitAll",&AbstractSplitViewPy::fitAll,"fitAll()");
+ add_varargs_method("viewBottom",&AbstractSplitViewPy::viewBottom,"viewBottom()");
+ add_varargs_method("viewFront",&AbstractSplitViewPy::viewFront,"viewFront()");
+ add_varargs_method("viewLeft",&AbstractSplitViewPy::viewLeft,"viewLeft()");
+ add_varargs_method("viewRear",&AbstractSplitViewPy::viewRear,"viewRear()");
+ add_varargs_method("viewRight",&AbstractSplitViewPy::viewRight,"viewRight()");
+ add_varargs_method("viewTop",&AbstractSplitViewPy::viewTop,"viewTop()");
+ add_varargs_method("viewAxometric",&AbstractSplitViewPy::viewAxometric,"viewAxometric()");
+}
+
+AbstractSplitViewPy::AbstractSplitViewPy(AbstractSplitView *vi)
+ : _view(vi)
+{
+}
+
+AbstractSplitViewPy::~AbstractSplitViewPy()
+{
+}
+
+Py::Object AbstractSplitViewPy::repr()
+{
+ std::string s;
+ std::ostringstream s_out;
+ if (!_view)
+ throw Py::RuntimeError("Cannot print representation of deleted object");
+ s_out << "AbstractSplitView";
+ return Py::String(s_out.str());
+}
+
+Py::Object AbstractSplitViewPy::fitAll(const Py::Tuple& args)
+{
+ if (!PyArg_ParseTuple(args.ptr(), ""))
+ throw Py::Exception();
+
+ try {
+ _view->onMsg("ViewFit", 0);
+ }
+ catch (const Base::Exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch (const std::exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch(...) {
+ throw Py::Exception("Unknown C++ exception");
+ }
+ return Py::None();
+}
+
+Py::Object AbstractSplitViewPy::viewBottom(const Py::Tuple& args)
+{
+ if (!PyArg_ParseTuple(args.ptr(), ""))
+ throw Py::Exception();
+
+ try {
+ _view->onMsg("ViewBottom", 0);
+ }
+ catch (const Base::Exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch (const std::exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch(...) {
+ throw Py::Exception("Unknown C++ exception");
+ }
+
+ return Py::None();
+}
+
+Py::Object AbstractSplitViewPy::viewFront(const Py::Tuple& args)
+{
+ if (!PyArg_ParseTuple(args.ptr(), ""))
+ throw Py::Exception();
+
+ try {
+ _view->onMsg("ViewFront", 0);
+ }
+ catch (const Base::Exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch (const std::exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch(...) {
+ throw Py::Exception("Unknown C++ exception");
+ }
+
+ return Py::None();
+}
+
+Py::Object AbstractSplitViewPy::viewLeft(const Py::Tuple& args)
+{
+ if (!PyArg_ParseTuple(args.ptr(), ""))
+ throw Py::Exception();
+
+ try {
+ _view->onMsg("ViewLeft", 0);
+ }
+ catch (const Base::Exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch (const std::exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch(...) {
+ throw Py::Exception("Unknown C++ exception");
+ }
+
+ return Py::None();
+}
+
+Py::Object AbstractSplitViewPy::viewRear(const Py::Tuple& args)
+{
+ if (!PyArg_ParseTuple(args.ptr(), ""))
+ throw Py::Exception();
+
+ try {
+ _view->onMsg("ViewRear", 0);
+ }
+ catch (const Base::Exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch (const std::exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch(...) {
+ throw Py::Exception("Unknown C++ exception");
+ }
+
+ return Py::None();
+}
+
+Py::Object AbstractSplitViewPy::viewRight(const Py::Tuple& args)
+{
+ if (!PyArg_ParseTuple(args.ptr(), ""))
+ throw Py::Exception();
+
+ try {
+ _view->onMsg("ViewRight", 0);
+ }
+ catch (const Base::Exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch (const std::exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch(...) {
+ throw Py::Exception("Unknown C++ exception");
+ }
+
+ return Py::None();
+}
+
+Py::Object AbstractSplitViewPy::viewTop(const Py::Tuple& args)
+{
+ if (!PyArg_ParseTuple(args.ptr(), ""))
+ throw Py::Exception();
+
+ try {
+ _view->onMsg("ViewTop", 0);
+ }
+ catch (const Base::Exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch (const std::exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch(...) {
+ throw Py::Exception("Unknown C++ exception");
+ }
+
+ return Py::None();
+}
+
+Py::Object AbstractSplitViewPy::viewAxometric(const Py::Tuple& args)
+{
+ if (!PyArg_ParseTuple(args.ptr(), ""))
+ throw Py::Exception();
+
+ try {
+ _view->onMsg("ViewAxo", 0);
+ }
+ catch (const Base::Exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch (const std::exception& e) {
+ throw Py::Exception(e.what());
+ }
+ catch(...) {
+ throw Py::Exception("Unknown C++ exception");
+ }
+
+ return Py::None();
+}
+
// ------------------------------------------------------
TYPESYSTEM_SOURCE_ABSTRACT(Gui::SplitView3DInventor, Gui::AbstractSplitView);
diff --git a/src/Gui/SplitView3DInventor.h b/src/Gui/SplitView3DInventor.h
index bb01c7627..d32afd000 100644
--- a/src/Gui/SplitView3DInventor.h
+++ b/src/Gui/SplitView3DInventor.h
@@ -27,6 +27,7 @@
#include "MDIView.h"
#include
+#include
#include
namespace Gui {
@@ -54,9 +55,11 @@ public:
virtual void deleteSelf();
View3DInventorViewer *getViewer(unsigned int) const;
-
void setOverrideCursor(const QCursor&);
+ PyObject *getPyObject(void);
+ void setPyObject(PyObject *);
+
protected:
void setupSettings();
@@ -66,6 +69,29 @@ protected:
std::vector _viewer;
};
+class AbstractSplitViewPy : public Py::PythonExtension
+{
+public:
+ static void init_type(void); // announce properties and methods
+
+ AbstractSplitViewPy(AbstractSplitView *vi);
+ ~AbstractSplitViewPy();
+
+ Py::Object repr();
+
+ Py::Object fitAll(const Py::Tuple&);
+ Py::Object viewBottom(const Py::Tuple&);
+ Py::Object viewFront(const Py::Tuple&);
+ Py::Object viewLeft(const Py::Tuple&);
+ Py::Object viewRear(const Py::Tuple&);
+ Py::Object viewRight(const Py::Tuple&);
+ Py::Object viewTop(const Py::Tuple&);
+ Py::Object viewAxometric(const Py::Tuple&);
+
+private:
+ AbstractSplitView* _view;
+};
+
/** The SplitView3DInventor class allows to create a window with two or more Inventor views.
* \author Werner Mayer
*/