Py::Object DocumentPy::getActiveObject(void) const { App::DocumentObject *object = getDocumentPtr()->getDocument()->getActiveObject(); if (object) { ViewProvider *viewObj = getDocumentPtr()->getViewProvider(object); return Py::Object(viewObj->getPyObject(), true); } else { return Py::None(); } }
PyObject* DocumentPy::getInEdit(PyObject *args) { if (!PyArg_ParseTuple(args, "")) return NULL; ViewProvider* vp = getDocumentPtr()->getInEdit(); if (vp) { return vp->getPyObject(); } Py_Return; }
PyObject* DocumentPy::activeObject(PyObject *args) { if (!PyArg_ParseTuple(args, "")) // convert args: Python->C return NULL; // NULL triggers exception PY_TRY { App::DocumentObject *pcFtr = getDocumentPtr()->getDocument()->getActiveObject(); if (pcFtr) { ViewProvider *pcView = getDocumentPtr()->getViewProvider(pcFtr); return pcView->getPyObject(); } else { Py_Return; } } PY_CATCH; }
PyObject* DocumentPy::getObject(PyObject *args) { char *sName; if (!PyArg_ParseTuple(args, "s",&sName)) // convert args: Python->C return NULL; // NULL triggers exception PY_TRY { ViewProvider *pcView = getDocumentPtr()->getViewProviderByName(sName); if (pcView) return pcView->getPyObject(); else { Py_Return; } } PY_CATCH; }
PyObject *DocumentPy::getCustomAttributes(const char* attr) const { // Note: Here we want to return only a document object if its // name matches 'attr'. However, it is possible to have an object // with the same name as an attribute. If so, we return 0 as other- // wise it wouldn't be possible to address this attribute any more. // The object must then be addressed by the getObject() method directly. if (this->ob_type->tp_dict == NULL) { if (PyType_Ready(this->ob_type) < 0) return 0; } PyObject* item = PyDict_GetItemString(this->ob_type->tp_dict, attr); if (item) return 0; // search for an object with this name ViewProvider* obj = getDocumentPtr()->getViewProviderByName(attr); return (obj ? obj->getPyObject() : 0); }