X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Tools.cpp;h=ea54214ec37c2ab0e1226c8dd43aee2409d89122;hb=06e7f5859095193fc7f498bd89a7d28009794f53;hp=ae2bb898412f6d02e03a09813dec6e30b8ef9058;hpb=e7c32b05a984a6c8fed81a09362cd3cc6c0ed0fb;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Tools.cpp b/src/XGUI/XGUI_Tools.cpp index ae2bb8984..ea54214ec 100644 --- a/src/XGUI/XGUI_Tools.cpp +++ b/src/XGUI/XGUI_Tools.cpp @@ -1,4 +1,4 @@ -// 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 @@ -105,7 +105,7 @@ QString unionOfObjectNames(const QObjectPtrList& theObjects, const QString& theS 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(); @@ -145,14 +145,14 @@ std::string featureInfo(FeaturePtr theFeature) bool canRemoveOrRename(QWidget* theParent, const std::set& 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; } @@ -182,6 +182,20 @@ bool isAscii(const QString& theStr) 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) { @@ -194,7 +208,7 @@ 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)); @@ -205,9 +219,12 @@ bool canRename(const ObjectPtr& theObject, const QString& theName) } } 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."). @@ -246,7 +263,7 @@ QString generateName(const ModuleBase_ViewerPrsPtr& thePrs) // 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);