add method to get view providers of d view via Python
This commit is contained in:
@@ -176,6 +176,7 @@ void View3DInventorPy::init_type()
|
||||
"'addFinishCallback','addStartCallback','addMotionCallback','addValueChangedCallback'\n");
|
||||
add_varargs_method("setActiveObject", &View3DInventorPy::setActiveObject, "setActiveObject(name,object)\nadd or set a new active object");
|
||||
add_varargs_method("getActiveObject", &View3DInventorPy::getActiveObject, "getActiveObject(name)\nreturns the active object for the given type");
|
||||
add_varargs_method("getViewProvidersOfType", &View3DInventorPy::getViewProvidersOfType, "getViewProvidersOfType(name)\nreturns a list of view providers for the given type");
|
||||
add_varargs_method("redraw", &View3DInventorPy::redraw, "redraw(): renders the scene on screen (useful for animations)");
|
||||
|
||||
}
|
||||
@@ -2163,40 +2164,54 @@ Py::Object View3DInventorPy::removeDraggerCallback(const Py::Tuple& args)
|
||||
|
||||
Py::Object View3DInventorPy::setActiveObject(const Py::Tuple& args)
|
||||
{
|
||||
PyObject* docObject = 0;
|
||||
char* name;
|
||||
|
||||
//allow reset of active object by setting "None"
|
||||
if( args.length() == 2 && args.back() == Py::None() ) {
|
||||
PyArg_Parse(args.front().ptr(), "s", &name);
|
||||
_view->setActiveObject(NULL, name);
|
||||
return Py::None();
|
||||
}
|
||||
|
||||
if (!PyArg_ParseTuple(args.ptr(), "sO!", &name, &App::DocumentObjectPy::Type, &docObject))
|
||||
throw Py::Exception();
|
||||
|
||||
PyObject* docObject = 0;
|
||||
char* name;
|
||||
|
||||
if (docObject){
|
||||
App::DocumentObject* obj = static_cast<App::DocumentObjectPy*>(docObject)->getDocumentObjectPtr();
|
||||
_view->setActiveObject(obj, name);
|
||||
}
|
||||
return Py::None();
|
||||
//allow reset of active object by setting "None"
|
||||
if (args.length() == 2 && args.back() == Py::None()) {
|
||||
PyArg_Parse(args.front().ptr(), "s", &name);
|
||||
_view->setActiveObject(NULL, name);
|
||||
return Py::None();
|
||||
}
|
||||
|
||||
if (!PyArg_ParseTuple(args.ptr(), "sO!", &name, &App::DocumentObjectPy::Type, &docObject))
|
||||
throw Py::Exception();
|
||||
|
||||
if (docObject){
|
||||
App::DocumentObject* obj = static_cast<App::DocumentObjectPy*>(docObject)->getDocumentObjectPtr();
|
||||
_view->setActiveObject(obj, name);
|
||||
}
|
||||
return Py::None();
|
||||
}
|
||||
|
||||
Py::Object View3DInventorPy::getActiveObject(const Py::Tuple& args)
|
||||
{
|
||||
char* name;
|
||||
if (!PyArg_ParseTuple(args.ptr(), "s", &name))
|
||||
throw Py::Exception();
|
||||
|
||||
throw Py::Exception();
|
||||
|
||||
App::DocumentObject* obj = _view->getActiveObject<App::DocumentObject*>(name);
|
||||
if(!obj)
|
||||
return Py::None();
|
||||
|
||||
|
||||
return Py::Object(obj->getPyObject());
|
||||
}
|
||||
|
||||
Py::Object View3DInventorPy::getViewProvidersOfType(const Py::Tuple& args)
|
||||
{
|
||||
char* name;
|
||||
if (!PyArg_ParseTuple(args.ptr(), "s", &name))
|
||||
throw Py::Exception();
|
||||
|
||||
std::vector<ViewProvider*> vps = _view->getViewer()->getViewProvidersOfType(Base::Type::fromName(name));
|
||||
Py::List list;
|
||||
for (std::vector<ViewProvider*>::iterator it = vps.begin(); it != vps.end(); ++it) {
|
||||
list.append(Py::asObject((*it)->getPyObject()));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
Py::Object View3DInventorPy::redraw(const Py::Tuple& args)
|
||||
{
|
||||
if (!PyArg_ParseTuple(args.ptr(), ""))
|
||||
|
||||
@@ -105,6 +105,7 @@ public:
|
||||
Py::Object removeDraggerCallback(const Py::Tuple&);
|
||||
Py::Object setActiveObject(const Py::Tuple&);
|
||||
Py::Object getActiveObject(const Py::Tuple&);
|
||||
Py::Object getViewProvidersOfType(const Py::Tuple&);
|
||||
Py::Object redraw(const Py::Tuple&);
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user