+ add methods to get/set scene graph, add parameter to set window title of viewer
This commit is contained in:
parent
f8d21c4b8e
commit
5edeb99828
|
@ -1116,22 +1116,26 @@ PyObject* Application::sShowPreferences(PyObject * /*self*/, PyObject *args,PyOb
|
|||
|
||||
PyObject* Application::sCreateViewer(PyObject * /*self*/, PyObject *args,PyObject * /*kwd*/)
|
||||
{
|
||||
|
||||
int num_of_views = 1;
|
||||
char* title = nullptr;
|
||||
// if one argument (int) is given
|
||||
if (PyArg_ParseTuple(args, "|i", &num_of_views))
|
||||
if (PyArg_ParseTuple(args, "|is", &num_of_views, &title))
|
||||
{
|
||||
if (num_of_views < 0)
|
||||
return NULL;
|
||||
else if (num_of_views==1)
|
||||
{
|
||||
View3DInventor* viewer = new View3DInventor(0, 0);
|
||||
if (title)
|
||||
viewer->setWindowTitle(QString::fromUtf8(title));
|
||||
Gui::getMainWindow()->addWindow(viewer);
|
||||
return viewer->getPyObject();
|
||||
}
|
||||
else
|
||||
{
|
||||
SplitView3DInventor* viewer = new SplitView3DInventor(num_of_views, 0, 0);
|
||||
if (title)
|
||||
viewer->setWindowTitle(QString::fromUtf8(title));
|
||||
Gui::getMainWindow()->addWindow(viewer);
|
||||
return viewer->getPyObject();
|
||||
}
|
||||
|
|
|
@ -57,7 +57,9 @@ void View3DInventorViewerPy::init_type()
|
|||
"the viewer. It can be used to change the event processing. This must however be\n"
|
||||
"done very carefully to not change the user interaction in an unpredictable manner.\n"
|
||||
);
|
||||
|
||||
add_varargs_method("getSceneGraph", &View3DInventorViewerPy::getSceneGraph, "getSceneGraph() -> SoNode");
|
||||
add_varargs_method("setSceneGraph", &View3DInventorViewerPy::setSceneGraph, "setSceneGraph(SoNode)");
|
||||
|
||||
add_varargs_method("seekToPoint",&View3DInventorViewerPy::seekToPoint,"seekToPoint(tuple) -> None\n"
|
||||
"Initiate a seek action towards the 3D intersection of the scene and the\n"
|
||||
"ray from the screen coordinate's point and in the same direction as the\n"
|
||||
|
@ -146,7 +148,6 @@ int View3DInventorViewerPy::setattr(const char * attr, const Py::Object & value)
|
|||
|
||||
Py::Object View3DInventorViewerPy::getSoRenderManager(const Py::Tuple& args)
|
||||
{
|
||||
|
||||
if (!PyArg_ParseTuple(args.ptr(), ""))
|
||||
throw Py::Exception();
|
||||
|
||||
|
@ -161,6 +162,41 @@ Py::Object View3DInventorViewerPy::getSoRenderManager(const Py::Tuple& args)
|
|||
}
|
||||
}
|
||||
|
||||
Py::Object View3DInventorViewerPy::getSceneGraph(const Py::Tuple& args)
|
||||
{
|
||||
if (!PyArg_ParseTuple(args.ptr(), ""))
|
||||
throw Py::Exception();
|
||||
|
||||
try {
|
||||
SoNode* scene = _viewer->getSceneGraph();
|
||||
PyObject* proxy = 0;
|
||||
proxy = Base::Interpreter().createSWIGPointerObj("pivy.coin", "SoSeparator *", (void*)scene, 1);
|
||||
scene->ref();
|
||||
return Py::Object(proxy, true);
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
throw Py::Exception(e.what());
|
||||
}
|
||||
}
|
||||
|
||||
Py::Object View3DInventorViewerPy::setSceneGraph(const Py::Tuple& args)
|
||||
{
|
||||
PyObject* proxy;
|
||||
if (!PyArg_ParseTuple(args.ptr(), "O", &proxy))
|
||||
throw Py::Exception();
|
||||
|
||||
void* ptr = 0;
|
||||
try {
|
||||
Base::Interpreter().convertSWIGPointerObj("pivy.coin", "SoNode *", proxy, &ptr, 0);
|
||||
SoNode* node = static_cast<SoNode*>(ptr);
|
||||
_viewer->setSceneGraph(node);
|
||||
return Py::None();
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
throw Py::Exception(e.what());
|
||||
}
|
||||
}
|
||||
|
||||
Py::Object View3DInventorViewerPy::getSoEventManager(const Py::Tuple& args)
|
||||
{
|
||||
if (!PyArg_ParseTuple(args.ptr(), ""))
|
||||
|
@ -177,7 +213,6 @@ Py::Object View3DInventorViewerPy::getSoEventManager(const Py::Tuple& args)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
Py::Object View3DInventorViewerPy::seekToPoint(const Py::Tuple& args)
|
||||
{
|
||||
PyObject* object;
|
||||
|
|
|
@ -55,6 +55,8 @@ public:
|
|||
//exposed methods
|
||||
Py::Object getSoEventManager(const Py::Tuple&);
|
||||
Py::Object getSoRenderManager(const Py::Tuple&);
|
||||
Py::Object getSceneGraph(const Py::Tuple&);
|
||||
Py::Object setSceneGraph(const Py::Tuple&);
|
||||
|
||||
Py::Object seekToPoint(const Py::Tuple&);
|
||||
Py::Object setFocalDistance(const Py::Tuple& args);
|
||||
|
|
Loading…
Reference in New Issue
Block a user