void PropertyEditor::appendProperty(const App::Property& prop) { // check if the parent object is selected std::string editor = prop.getEditorName(); if (editor.empty()) return; App::PropertyContainer* parent = prop.getContainer(); std::string context = prop.getName(); bool canAddProperty = (!propList.empty()); for (PropertyModel::PropertyList::iterator it = propList.begin(); it != propList.end(); ++it) { if (it->second.empty() || it->second.size() > 1) { canAddProperty = false; break; } else if (it->second.front()->getContainer() != parent) { canAddProperty = false; break; } } if (canAddProperty) { std::vector<App::Property*> list; list.push_back(const_cast<App::Property*>(&prop)); std::pair< std::string, std::vector<App::Property*> > pair = std::make_pair(context, list); propList.push_back(pair); propertyModel->appendProperty(prop); } }
void TaskPrimitiveParameters::objectChanged(const App::DocumentObject& obj, const App::Property& p) { if(&obj == cs && strcmp(p.getName(), "Placement")==0) { vp_prm->getObject()->recompute(); } }
void PropertyModel::buildUp(const std::map<std::string, std::vector<App::Property*> >& props) { // fill up the listview with the properties rootItem->reset(); // sort the properties into their groups std::map<std::string, std::vector<std::vector<App::Property*> > > propGroup; std::map<std::string, std::vector<App::Property*> > ::const_iterator jt; for (jt = props.begin(); jt != props.end(); ++jt) { App::Property* prop = jt->second.front(); const char* group = prop->getGroup(); std::string grp = group ? group : "Base"; propGroup[grp].push_back(jt->second); } std::map<std::string, std::vector<std::vector<App::Property*> > > ::const_iterator kt; for (kt = propGroup.begin(); kt != propGroup.end(); ++kt) { // set group item PropertyItem* group = static_cast<PropertyItem*>(PropertySeparatorItem::create()); group->setParent(rootItem); rootItem->appendChild(group); group->setPropertyName(QString::fromAscii(kt->first.c_str())); // setup the items for the properties std::vector<std::vector<App::Property*> >::const_iterator it; for (it = kt->second.begin(); it != kt->second.end(); ++it) { App::Property* prop = it->front(); QString editor = QString::fromAscii(prop->getEditorName()); if (!editor.isEmpty()) { Base::BaseClass* item = 0; try { item = static_cast<Base::BaseClass*>(Base::Type:: createInstanceByName(prop->getEditorName(),true)); } catch (...) { } if (!item) { qWarning("No property item for type %s found\n", prop->getEditorName()); continue; } if (item->getTypeId().isDerivedFrom(PropertyItem::getClassTypeId())) { PropertyItem* child = (PropertyItem*)item; child->setParent(rootItem); rootItem->appendChild(child); child->setPropertyName(QString::fromAscii(prop->getName())); child->setPropertyData(*it); } } } } reset(); }
void MeshFillHole::slotChangedObject(const App::DocumentObject& Obj, const App::Property& Prop) { if (&Obj == myMesh && strcmp(Prop.getName(),"Mesh") == 0) { myBoundariesGroup->removeAllChildren(); myVertex->point.setNum(0); myNumPoints = 0; myPolygon.clear(); createPolygons(); } }
void DynamicProperty::addDynamicProperties(const PropertyContainer* cont) { std::vector<std::string> names = cont->getDynamicPropertyNames(); for (std::vector<std::string>::iterator it = names.begin(); it != names.end(); ++it) { App::Property* prop = cont->getDynamicPropertyByName(it->c_str()); if (prop) { addDynamicProperty( prop->getTypeId().getName(), prop->getName(), prop->getGroup(), prop->getDocumentation(), prop->getType(), cont->isReadOnly(prop), cont->isHidden(prop)); } } }
void DlgEvaluateMeshImp::slotChangedObject(const App::DocumentObject& Obj, const App::Property& Prop) { // if the current mesh object was modified update everything if (&Obj == d->meshFeature && Prop.getTypeId() == Mesh::PropertyMeshKernel::getClassTypeId()) { removeViewProviders(); cleanInformation(); showInformation(); d->self_intersections.clear(); } else if (Obj.getTypeId().isDerivedFrom(Mesh::Feature::getClassTypeId())) { // if the label has changed update the entry in the list if (Prop.getTypeId() == App::PropertyString::getClassTypeId() && strcmp(Prop.getName(), "Label") == 0) { QString label = QString::fromUtf8(Obj.Label.getValue()); QString name = QString::fromAscii(Obj.getNameInDocument()); int index = meshNameButton->findData(name); meshNameButton->setItemText(index, label); } } }