X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_Tools.cpp;h=5fa98fc5db0d58d8552e91a059219f65cfe97a00;hb=ed67f7abf2985c7225b7862c076257825a421993;hp=a2c393658c6b0a5fd972593781b0df6a60dc9325;hpb=fd4dd622a85a0dd19ff5616391f94e980abc26a1;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_Tools.cpp b/src/ModuleBase/ModuleBase_Tools.cpp index a2c393658..5fa98fc5d 100644 --- a/src/ModuleBase/ModuleBase_Tools.cpp +++ b/src/ModuleBase/ModuleBase_Tools.cpp @@ -5,9 +5,16 @@ // Author: Vitaly Smetannikov #include "ModuleBase_Tools.h" +#include #include #include +#include +#include +#include + +#include +#include #include #include @@ -102,6 +109,13 @@ QPixmap lighter(const QString& theIcon, const int theLighterValue) return QPixmap::fromImage(aResult); } +void setSpinText(ModuleBase_ParamSpinBox* theSpin, const QString& theText) +{ + bool isBlocked = theSpin->blockSignals(true); + theSpin->setText(theText); + theSpin->blockSignals(isBlocked); +} + void setSpinValue(QDoubleSpinBox* theSpin, double theValue) { bool isBlocked = theSpin->blockSignals(true); @@ -109,23 +123,90 @@ void setSpinValue(QDoubleSpinBox* theSpin, double theValue) theSpin->blockSignals(isBlocked); } -QString objectInfo(const ObjectPtr& theObj) +QString objectInfo(const ObjectPtr& theObj, const bool isUseAttributesInfo) { ResultPtr aRes = std::dynamic_pointer_cast(theObj); - FeaturePtr aFeature;// = std::dynamic_pointer_cast(theObj); + FeaturePtr aFeature = std::dynamic_pointer_cast(theObj); QString aFeatureStr = "feature"; if(aRes.get()) { aFeatureStr.append("(Result)"); - //aFeature = ModelAPI_Feature::feature(aRes); + aFeature = ModelAPI_Feature::feature(aRes); } if (aFeature.get()) { aFeatureStr.append(QString(": %1").arg(aFeature->getKind().c_str()).toStdString().c_str()); if (aFeature->data().get() && aFeature->data()->isValid()) - aFeatureStr.append(QString("(name=%1)").arg(aFeature->data()->name().c_str()).toStdString().c_str()); + aFeatureStr.append(QString(", name=%1").arg(aFeature->data()->name().c_str()).toStdString() + .c_str()); + if (isUseAttributesInfo) { + std::list anAttrs = aFeature->data()->attributes(""); + std::list::const_iterator anIt = anAttrs.begin(), aLast = anAttrs.end(); + QStringList aValues; + for(; anIt != aLast; anIt++) { + AttributePtr anAttr = *anIt; + QString aValue = "not defined"; + std::string aType = anAttr->attributeType(); + if (aType == GeomDataAPI_Point2D::typeId()) { + std::shared_ptr aPoint = std::dynamic_pointer_cast( + anAttr); + if (aPoint.get()) + aValue = QString("(%1, %2)").arg(aPoint->x()).arg(aPoint->y()); + } + else if (aType == ModelAPI_AttributeRefAttr::typeId()) { + } + + aValues.push_back(QString("%1: %2").arg(anAttr->id().c_str()).arg(aValue).toStdString().c_str()); + } + if (!aValues.empty()) + aFeatureStr.append(QString(", attributes: %1").arg(aValues.join(", ").toStdString().c_str())); + } } + return aFeatureStr; } +typedef QMap ShapeTypes; +static ShapeTypes MyShapeTypes; + +TopAbs_ShapeEnum shapeType(const QString& theType) +{ + if (MyShapeTypes.count() == 0) { + MyShapeTypes["face"] = TopAbs_FACE; + MyShapeTypes["faces"] = TopAbs_FACE; + MyShapeTypes["vertex"] = TopAbs_VERTEX; + MyShapeTypes["vertices"] = TopAbs_VERTEX; + MyShapeTypes["wire"] = TopAbs_WIRE; + MyShapeTypes["edge"] = TopAbs_EDGE; + MyShapeTypes["edges"] = TopAbs_EDGE; + MyShapeTypes["shell"] = TopAbs_SHELL; + MyShapeTypes["solid"] = TopAbs_SOLID; + MyShapeTypes["solids"] = TopAbs_SOLID; + } + QString aType = theType.toLower(); + if (MyShapeTypes.contains(aType)) + return MyShapeTypes[aType]; + Events_Error::send("Shape type defined in XML is not implemented!"); + return TopAbs_SHAPE; +} + +void checkObjects(const QObjectPtrList& theObjects, bool& hasResult, bool& hasFeature, bool& hasParameter) +{ + hasResult = false; + hasFeature = false; + hasParameter = false; + foreach(ObjectPtr aObj, theObjects) { + FeaturePtr aFeature = std::dynamic_pointer_cast(aObj); + ResultPtr aResult = std::dynamic_pointer_cast(aObj); + ResultParameterPtr aConstruction = std::dynamic_pointer_cast(aResult); + + hasResult = (aResult.get() != NULL); + hasFeature = (aFeature.get() != NULL); + hasParameter = (aConstruction.get() != NULL); + if (hasFeature && hasResult && hasParameter) + break; + } +} + + }