X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_AttributeString.cpp;h=c1af6e36d47bbc80923bc2b0faace4440ed64344;hb=4afb998c2356f5f6a415f6d7183b4427f97f3616;hp=2b97d891a5c396da5249affb7ef4cba2ebe829de;hpb=a94fc319f2aa64b43c9a73b5ff7063923648faec;p=modules%2Fshaper.git diff --git a/src/Model/Model_AttributeString.cpp b/src/Model/Model_AttributeString.cpp index 2b97d891a..c1af6e36d 100644 --- a/src/Model/Model_AttributeString.cpp +++ b/src/Model/Model_AttributeString.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2021 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,10 +12,9 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include @@ -24,12 +23,16 @@ #include #include +#include #include #include #include #include +// on myLabel if the Unicode string was stored +static const Standard_GUID kUVALUE_IDENTIFIER("04cac509-b2fc-4887-b442-d2a86f2fd7bd"); + void Model_AttributeString::setValue(const std::string& theValue) { TCollection_ExtendedString aValue(theValue.c_str()); @@ -37,6 +40,19 @@ void Model_AttributeString::setValue(const std::string& theValue) if (myString.IsNull()) myString = TDataStd_Name::Set(myLab, TCollection_ExtendedString()); myString->Set(aValue); + myLab.ForgetAttribute(kUVALUE_IDENTIFIER); + owner()->data()->sendAttributeUpdated(this); + } +} + +void Model_AttributeString::setValue(const std::wstring& theValue) +{ + TCollection_ExtendedString aValue(theValue.c_str()); + if (!myIsInitialized || myString->Get() != aValue) { + if (myString.IsNull()) + myString = TDataStd_Name::Set(myLab, TCollection_ExtendedString()); + myString->Set(aValue); + TDataStd_UAttribute::Set(myLab, kUVALUE_IDENTIFIER); owner()->data()->sendAttributeUpdated(this); } } @@ -48,6 +64,19 @@ std::string Model_AttributeString::value() return TCollection_AsciiString(myString->Get()).ToCString(); } +char16_t* Model_AttributeString::valueU() +{ + if (myString.IsNull()) { // not initialized + static TCollection_ExtendedString anEmpty; + return (char16_t*)(anEmpty.ToExtString()); + } + return (char16_t*)(myString->Get().ToExtString()); +} + +bool Model_AttributeString::isUValue() const { + return !myLab.IsNull() && myLab.IsAttribute(kUVALUE_IDENTIFIER); +} + Model_AttributeString::Model_AttributeString(TDF_Label& theLabel) { myLab = theLabel;