-// Copyright (C) 2014-2019 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2023 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
QStringList aObjectNames;
foreach (ObjectPtr aObj, theObjects) {
if (aObj->data()->isValid())
- aObjectNames << QString::fromStdString(aObj->data()->name());
+ aObjectNames << QString::fromStdWString(aObj->data()->name());
}
if (aObjectNames.count() == 0)
return QString();
bool canRemoveOrRename(QWidget* theParent, const std::set<FeaturePtr>& theFeatures)
{
bool aResult = true;
- std::string aNotActivatedNames;
+ std::wstring aNotActivatedNames;
if (!ModelAPI_Tools::allDocumentsActivated(aNotActivatedNames)) {
bool aFoundPartSetObject = ModuleBase_Tools::hasModuleDocumentFeature(theFeatures);
if (aFoundPartSetObject) {
const char* aKeyStr = "Selected objects can be used in Part documents which are not loaded: "
"%1. Whould you like to continue?";
QMessageBox::StandardButton aRes = QMessageBox::warning(theParent, QObject::tr("Warning"),
- QObject::tr(aKeyStr).arg(aNotActivatedNames.c_str()),
+ QObject::tr(aKeyStr).arg(QString::fromStdWString(aNotActivatedNames)),
QMessageBox::No | QMessageBox::Yes, QMessageBox::No);
aResult = aRes == QMessageBox::Yes;
}
return true;
}
+//******************************************************************
+bool isValidName(const QString& theName)
+{
+ QChar aChar;
+ for (int i = 0; i < theName.size(); i++) {
+ aChar = theName[i];
+ if (!aChar.isLetterOrNumber()) {
+ if ((aChar != "_") && (!aChar.isSpace()))
+ return false;
+ }
+ }
+ return true;
+}
+
//******************************************************************
bool canRename(const ObjectPtr& theObject, const QString& theName)
{
double aValue;
ResultParameterPtr aParam;
if (ModelAPI_Tools::findVariable(theObject->document(),
- FeaturePtr(), qPrintable(theName), aValue, aParam)) {
+ FeaturePtr(), theName.toStdWString(), aValue, aParam)) {
const char* aKeyStr = "Selected parameter can not be renamed to: %1. "
"There is a parameter with the same name. Its value is: %2.";
QString aErrMsg(QObject::tr(aKeyStr).arg(theName).arg(aValue));
}
}
else {
+ if (!isValidName(theName))
+ return false;
+
DocumentPtr aDoc = theObject->document();
ObjectPtr aObj =
- aDoc->objectByName(aType, theName.toStdString());
+ aDoc->objectByName(aType, theName.toStdWString());
if (aObj.get() && theObject != aObj) {
QString aErrMsg(QObject::tr("Name %2 already exists in %1.").
// TODO if there is this case
}
- QString aName = anObject->data()->name().c_str();
+ QString aName = QString::fromStdWString(anObject->data()->name());
if (aContext.get()) {
GeomShapePtr aSubShape(new GeomAPI_Shape());
TopoDS_Shape aShape = ModuleBase_Tools::getSelectedShape(thePrs);
- aSubShape->setImpl(new TopoDS_Shape(aShape));
- if (!aSubShape->isEqual(aContext)) {
- QString aTypeName;
- switch (aShape.ShapeType()) {
- case TopAbs_COMPOUND:
- aTypeName = "compound";
- break;
- case TopAbs_COMPSOLID:
- aTypeName = "compsolid";
- break;
- case TopAbs_SOLID:
- aTypeName = "solid";
- break;
- case TopAbs_SHELL:
- aTypeName = "shell";
- break;
- case TopAbs_FACE:
- aTypeName = "face";
- break;
- case TopAbs_WIRE:
- aTypeName = "wire";
- break;
- case TopAbs_EDGE:
- aTypeName = "edge";
- break;
- case TopAbs_VERTEX:
- aTypeName = "vertex";
- break;
- case TopAbs_SHAPE:
- aTypeName = "shape";
- break;
+ if (!aShape.IsNull()) {
+ aSubShape->setImpl(new TopoDS_Shape(aShape));
+ if (!aSubShape->isEqual(aContext)) {
+ QString aTypeName;
+ switch (aShape.ShapeType()) {
+ case TopAbs_COMPOUND:
+ aTypeName = "compound";
+ break;
+ case TopAbs_COMPSOLID:
+ aTypeName = "compsolid";
+ break;
+ case TopAbs_SOLID:
+ aTypeName = "solid";
+ break;
+ case TopAbs_SHELL:
+ aTypeName = "shell";
+ break;
+ case TopAbs_FACE:
+ aTypeName = "face";
+ break;
+ case TopAbs_WIRE:
+ aTypeName = "wire";
+ break;
+ case TopAbs_EDGE:
+ aTypeName = "edge";
+ break;
+ case TopAbs_VERTEX:
+ aTypeName = "vertex";
+ break;
+ case TopAbs_SHAPE:
+ aTypeName = "shape";
+ break;
+ }
+ int aId = GeomAlgoAPI_CompoundBuilder::id(aContext, aSubShape);
+ aName += QString("/%1_%2").arg(aTypeName).arg(aId);
}
- int aId = GeomAlgoAPI_CompoundBuilder::id(aContext, aSubShape);
- aName += QString("/%1_%2").arg(aTypeName).arg(aId);
}
}
return aName;