void PropertyEditor::updatetEditorMode(const App::Property& prop) { // check if the parent object is selected std::string editor = prop.getEditorName(); if (editor.empty()) return; bool hidden = prop.testStatus(App::Property::Hidden); bool readOnly = prop.testStatus(App::Property::ReadOnly); int column = 1; int numRows = propertyModel->rowCount(); for (int i=0; i<numRows; i++) { QModelIndex item = propertyModel->index(i, column); PropertyItem* propItem = static_cast<PropertyItem*>(item.internalPointer()); if (propItem && propItem->hasProperty(&prop)) { setRowHidden (i, QModelIndex(), hidden); propItem->updateData(); if (item.isValid()) { updateItemEditor(!readOnly, column, item); dataChanged(item, item); } break; } } }
PyObject* PropertyContainerPy::getEditorMode(PyObject *args) { char* name; if (!PyArg_ParseTuple(args, "s", &name)) // convert args: Python->C return NULL; // NULL triggers exception App::Property* prop = getPropertyContainerPtr()->getPropertyByName(name); Py::List ret; if (prop) { short Type = prop->getType(); if ((prop->testStatus(Property::ReadOnly)) || (Type & Prop_ReadOnly)) ret.append(Py::String("ReadOnly")); if ((prop->testStatus(Property::Hidden)) || (Type & Prop_Hidden)) ret.append(Py::String("Hidden")); } return Py::new_reference_to(ret); }
void PropertyView::slotAppendDynamicProperty(const App::Property& prop) { App::PropertyContainer* parent = prop.getContainer(); if (parent->isHidden(&prop) || prop.testStatus(App::Property::Hidden)) return; if (parent && parent->isDerivedFrom(App::DocumentObject::getClassTypeId())) { propertyEditorData->appendProperty(prop); } else if (parent && parent->isDerivedFrom(Gui::ViewProvider::getClassTypeId())) { propertyEditorView->appendProperty(prop); } }