// Author: Vitaly Smetannikov
#include "ModuleBase_Tools.h"
+#include <ModuleBase_ParamSpinBox.h>
+
+#include <ModelAPI_Result.h>
+#include <ModelAPI_Data.h>
+#include <ModelAPI_Attribute.h>
+#include <ModelAPI_AttributeRefAttr.h>
+#include <ModelAPI_ResultParameter.h>
+
+#include <GeomDataAPI_Point2D.h>
+#include <Events_Error.h>
+
#include <QWidget>
#include <QLayout>
#include <QPainter>
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);
theSpin->blockSignals(isBlocked);
}
+QString objectInfo(const ObjectPtr& theObj, const bool isUseAttributesInfo)
+{
+ ResultPtr aRes = std::dynamic_pointer_cast<ModelAPI_Result>(theObj);
+ FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(theObj);
+ QString aFeatureStr = "feature";
+ if(aRes.get()) {
+ aFeatureStr.append("(Result)");
+ 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());
+ if (isUseAttributesInfo) {
+ std::list<AttributePtr> anAttrs = aFeature->data()->attributes("");
+ std::list<AttributePtr>::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<GeomDataAPI_Point2D> aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
+ 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<QString, TopAbs_ShapeEnum> 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<ModelAPI_Feature>(aObj);
+ ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aObj);
+ ResultParameterPtr aConstruction = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aResult);
+
+ hasResult = (aResult.get() != NULL);
+ hasFeature = (aFeature.get() != NULL);
+ hasParameter = (aConstruction.get() != NULL);
+ if (hasFeature && hasResult && hasParameter)
+ break;
+ }
+}
+
+
}