QPair<QVariant, RPropertyAttributes> RBlockReferenceEntity::getProperty( RPropertyTypeId propertyTypeId, bool humanReadable, bool noAttributes) { if (propertyTypeId == PropertyType) { return qMakePair(QVariant(RS::EntityBlockRef), RPropertyAttributes(RPropertyAttributes::ReadOnly)); } else if (propertyTypeId == PropertyPositionX) { return qMakePair(QVariant(data.position.x), RPropertyAttributes()); } else if (propertyTypeId == PropertyPositionY) { return qMakePair(QVariant(data.position.y), RPropertyAttributes()); } else if (propertyTypeId == PropertyPositionZ) { return qMakePair(QVariant(data.position.z), RPropertyAttributes()); } else if (propertyTypeId == PropertyScaleX) { return qMakePair(QVariant(data.scaleFactors.x), RPropertyAttributes()); } else if (propertyTypeId == PropertyScaleY) { return qMakePair(QVariant(data.scaleFactors.y), RPropertyAttributes()); } else if (propertyTypeId == PropertyScaleZ) { return qMakePair(QVariant(data.scaleFactors.z), RPropertyAttributes()); } else if (propertyTypeId == PropertyRotation) { return qMakePair(QVariant(data.rotation), RPropertyAttributes(RPropertyAttributes::Angle)); } else if (propertyTypeId == PropertyReferencedBlock) { if (humanReadable) { RDocument* document = getData().getDocument(); if (document != NULL) { RPropertyAttributes attr; // TODO if (!noAttributes) { QSet<QString> blockNames = document->getBlockNames(); QSet<QString> filtered; QSet<QString>::iterator it; for (it=blockNames.begin(); it!=blockNames.end(); it++) { if (!(*it).startsWith("*")) { filtered.insert(*it); } } attr.setChoices(filtered); } return qMakePair(QVariant(document->getBlockName( getData().getReferencedBlockId())), attr); } } else { return qMakePair(QVariant(getData().getReferencedBlockId()), RPropertyAttributes()); } } return REntity::getProperty(propertyTypeId, humanReadable, noAttributes); }
QPair<QVariant, RPropertyAttributes> RLeaderEntity::getProperty( RPropertyTypeId& propertyTypeId, bool humanReadable, bool noAttributes) { if (propertyTypeId == PropertyArrowHead) { return qMakePair(QVariant(data.arrowHead), RPropertyAttributes()); } else if (propertyTypeId == PropertyDimLeaderBlock) { if (humanReadable) { RDocument* document = getData().getDocument(); if (document != NULL) { RPropertyAttributes attr; if (!noAttributes) { QSet<QString> blockNames = document->getBlockNames(); QSet<QString> filtered; QSet<QString>::iterator it; for (it=blockNames.begin(); it!=blockNames.end(); it++) { if (!(*it).startsWith("*")) { filtered.insert(*it); } } attr.setChoices(filtered); } return qMakePair(QVariant(document->getBlockName( getData().getDimLeaderBlockId())), attr); } } else { return qMakePair(QVariant(getData().getDimLeaderBlockId()), RPropertyAttributes()); } } else if (propertyTypeId == PropertyVertexNX) { QVariant v; v.setValue(RVector::getXList(data.vertices)); return qMakePair(v, RPropertyAttributes(RPropertyAttributes::List)); } else if (propertyTypeId == PropertyVertexNY) { QVariant v; v.setValue(RVector::getYList(data.vertices)); return qMakePair(v, RPropertyAttributes(RPropertyAttributes::List)); } else if (propertyTypeId == PropertyVertexNZ) { QVariant v; v.setValue(RVector::getZList(data.vertices)); return qMakePair(v, RPropertyAttributes(RPropertyAttributes::List)); } return REntity::getProperty(propertyTypeId, humanReadable, noAttributes); }
QPair<QVariant, RPropertyAttributes> RBlockReferenceEntity::getProperty( RPropertyTypeId& propertyTypeId, bool humanReadable, bool noAttributes) { if (propertyTypeId == PropertyPositionX) { return qMakePair(QVariant(data.position.x), RPropertyAttributes()); } else if (propertyTypeId == PropertyPositionY) { return qMakePair(QVariant(data.position.y), RPropertyAttributes()); } else if (propertyTypeId == PropertyPositionZ) { return qMakePair(QVariant(data.position.z), RPropertyAttributes()); } else if (propertyTypeId == PropertyScaleX) { return qMakePair(QVariant(data.scaleFactors.x), RPropertyAttributes()); } else if (propertyTypeId == PropertyScaleY) { return qMakePair(QVariant(data.scaleFactors.y), RPropertyAttributes()); } else if (propertyTypeId == PropertyScaleZ) { return qMakePair(QVariant(data.scaleFactors.z), RPropertyAttributes()); } else if (propertyTypeId == PropertyRotation) { return qMakePair(QVariant(data.rotation), RPropertyAttributes(RPropertyAttributes::Angle)); } else if (propertyTypeId == PropertyReferencedBlock) { if (humanReadable) { RDocument* document = getData().getDocument(); if (document != NULL) { RPropertyAttributes attr; // TODO if (!noAttributes) { QSet<QString> blockNames = document->getBlockNames(); QSet<QString> filtered; QSet<QString>::iterator it; for (it=blockNames.begin(); it!=blockNames.end(); it++) { if (!(*it).startsWith("*")) { filtered.insert(*it); } } attr.setChoices(filtered); } return qMakePair(QVariant(document->getBlockName( getData().getReferencedBlockId())), attr); } } else { return qMakePair(QVariant(getData().getReferencedBlockId()), RPropertyAttributes()); } } else if (propertyTypeId.isCustom()) { if (propertyTypeId.getCustomPropertyTitle()=="Attributes") { QString tag = propertyTypeId.getCustomPropertyName(); const RDocument* doc = getDocument(); if (doc!=NULL) { QSet<REntity::Id> childIds = doc->queryChildEntities(getId(), RS::EntityAttribute); QSet<REntity::Id>::iterator it; for (it=childIds.begin(); it!=childIds.end(); it++) { REntity::Id childId = *it; QSharedPointer<REntity> child = doc->queryEntityDirect(childId); if (child.isNull()) { continue; } QSet<RPropertyTypeId> childProperties = child->getPropertyTypeIds(); QSet<RPropertyTypeId>::iterator it2; for (it2=childProperties.begin(); it2!=childProperties.end(); it2++) { RPropertyTypeId pid = *it2; QPair<QVariant, RPropertyAttributes> p = child->getProperty(pid); if (p.second.isVisibleToParent() && pid.getCustomPropertyName()==tag) { //ret.insert(RPropertyTypeId(QT_TRANSLATE_NOOP("REntity", "Attributes"), p.first.toString())); return qMakePair(QVariant(p.first), RPropertyAttributes()); } } } } //document->queryChildEntities(getId()); //return qMakePair(QVariant("Dummy"), RPropertyAttributes()); } } return REntity::getProperty(propertyTypeId, humanReadable, noAttributes); }