X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetExprEditor.cpp;h=721ace1e0eb663b98ff45d8232b6fff25feb1c1a;hb=88ee9b2b81cf93a6324336b57e30cc8a3a487499;hp=4c37116b2a9fb15487402461c43ca7bdb0d283cf;hpb=1b93f1881c5fec599aa79707f93c84dd9c287bc0;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetExprEditor.cpp b/src/ModuleBase/ModuleBase_WidgetExprEditor.cpp index 4c37116b2..721ace1e0 100644 --- a/src/ModuleBase/ModuleBase_WidgetExprEditor.cpp +++ b/src/ModuleBase/ModuleBase_WidgetExprEditor.cpp @@ -1,15 +1,27 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -/* - * ModuleBase_WidgetExprEditor.cpp - * - * Created on: Aug 28, 2014 - * Author: sbh - */ +// Copyright (C) 2014-2022 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 +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// 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 +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include #include +#include + #include #include #include @@ -31,12 +43,14 @@ #include #include #include +#include +#include #include #include ExpressionEditor::ExpressionEditor(QWidget* theParent) -: QPlainTextEdit(theParent), myCompletedAndSelected(false), myIsModified(false) +: QPlainTextEdit(theParent), myCompletedAndSelected(false) { myCompleter = new QCompleter(this); myCompleter->setWidget(this); @@ -90,9 +104,7 @@ void ExpressionEditor::performCompletion() QTextCursor aCursor = textCursor(); aCursor.select(QTextCursor::WordUnderCursor); const QString aPrefix = aCursor.selectedText(); - if (!aPrefix.isEmpty() && aPrefix.at(aPrefix.length() - 1).isLetter()) { - performCompletion(aPrefix); - } + performCompletion(aPrefix); } void ExpressionEditor::performCompletion(const QString& theCompletionPrefix) @@ -114,8 +126,6 @@ void ExpressionEditor::performCompletion(const QString& theCompletionPrefix) void ExpressionEditor::keyPressEvent(QKeyEvent* theEvent) { - bool anIsModified = myIsModified; - if (myCompletedAndSelected && handledCompletedAndSelected(theEvent)) return; myCompletedAndSelected = false; @@ -137,7 +147,7 @@ void ExpressionEditor::keyPressEvent(QKeyEvent* theEvent) switch (theEvent->key()) { case Qt::Key_Enter: case Qt::Key_Return: - emit keyReleased(theEvent); + emit keyReleased(this, theEvent); // do not react to the Enter key, the property panel processes it return; break; @@ -173,16 +183,6 @@ QString ExpressionEditor::placeHolderText() const return myPlaceHolderText; } -bool ExpressionEditor::isModified() const -{ - return myIsModified; -} - -void ExpressionEditor::clearModified() -{ - myIsModified = false; -} - void ExpressionEditor::paintEvent( QPaintEvent* theEvent ) { QPlainTextEdit::paintEvent( theEvent ); @@ -206,7 +206,8 @@ void ExpressionEditor::paintEvent( QPaintEvent* theEvent ) QPen anOldpen = aPainter.pen(); aPainter.setPen( aColor ); lineRect.adjust(minLB, 0, 0, 0); - QString elidedText = aFontMetrics.elidedText( myPlaceHolderText, Qt::ElideRight, lineRect.width() ); + QString elidedText = + aFontMetrics.elidedText( myPlaceHolderText, Qt::ElideRight, lineRect.width() ); aPainter.drawText( lineRect, va, elidedText ); aPainter.setPen( anOldpen ); } @@ -214,16 +215,14 @@ void ExpressionEditor::paintEvent( QPaintEvent* theEvent ) void ExpressionEditor::onTextChanged() { - myIsModified = true; emit valueModified(); } ModuleBase_WidgetExprEditor::ModuleBase_WidgetExprEditor( QWidget* theParent, const Config_WidgetAPI* theData, - const std::string& theParentId, const std::string& thePlaceHolder ) - : ModuleBase_ModelWidget(theParent, theData, theParentId) +: ModuleBase_ModelWidget(theParent, theData) { QVBoxLayout* aMainLay = new QVBoxLayout(this); ModuleBase_Tools::adjustMargins(aMainLay); @@ -236,32 +235,42 @@ ModuleBase_WidgetExprEditor::ModuleBase_WidgetExprEditor( QWidget* theParent, aMainLay->addWidget(myResultLabel); myEditor = new ExpressionEditor(this); myEditor->setMinimumHeight(20); - myEditor->setPlaceHolderText( QString::fromStdString( thePlaceHolder ) ); + myEditor->setPlaceHolderText( translate( thePlaceHolder ) ); aMainLay->addWidget(myEditor); this->setLayout(aMainLay); connect(myEditor, SIGNAL(valueModified()), this, SIGNAL(valuesModified())); - connect(myEditor, SIGNAL(keyReleased(QKeyEvent*)), this, SIGNAL(keyReleased(QKeyEvent*))); + connect(myEditor, SIGNAL(keyReleased(QObject*, QKeyEvent*)), + this, SIGNAL(keyReleased(QObject*, QKeyEvent*))); } ModuleBase_WidgetExprEditor::~ModuleBase_WidgetExprEditor() { } +void ModuleBase_WidgetExprEditor::activateCustom() +{ + ModuleBase_ModelWidget::activateCustom(); + + QStringList aParameters; + ModuleBase_Tools::getParameters(aParameters); + myEditor->setCompletionList(aParameters); +} + void ModuleBase_WidgetExprEditor::initializeValueByActivate() { } -bool ModuleBase_WidgetExprEditor::storeValueCustom() const +bool ModuleBase_WidgetExprEditor::storeValueCustom() { - // A rare case when plugin was not loaded. + // A rare case when plugin was not loaded. if(!myFeature) return false; DataPtr aData = myFeature->data(); AttributeStringPtr aStringAttr = aData->string(attributeID()); QString aWidgetValue = myEditor->toPlainText(); - aStringAttr->setValue(aWidgetValue.toStdString()); + aStringAttr->setValue(aWidgetValue.toStdWString()); updateObject(myFeature); // Try to get the value @@ -287,7 +296,7 @@ bool ModuleBase_WidgetExprEditor::storeValueCustom() const bool ModuleBase_WidgetExprEditor::restoreValueCustom() { - // A rare case when plugin was not loaded. + // A rare case when plugin was not loaded. if(!myFeature) return false; DataPtr aData = myFeature->data(); @@ -296,8 +305,12 @@ bool ModuleBase_WidgetExprEditor::restoreValueCustom() bool isBlocked = myEditor->blockSignals(true); QTextCursor aCursor = myEditor->textCursor(); int pos = aCursor.position(); - std::string aRestoredStr = aStringAttr->value(); - myEditor->setPlainText(QString::fromStdString(aRestoredStr)); + QString aRestoredStr; + if (aStringAttr->isUValue()) + aRestoredStr = QString::fromStdWString(Locale::Convert::toWString(aStringAttr->valueU())); + else + aRestoredStr = QString::fromStdString(aStringAttr->value()); + myEditor->setPlainText(aRestoredStr); aCursor.setPosition(pos); myEditor->setTextCursor(aCursor); myEditor->blockSignals(isBlocked); @@ -314,10 +327,9 @@ QList ModuleBase_WidgetExprEditor::getControls() const bool ModuleBase_WidgetExprEditor::processEnter() { - bool isModified = myEditor->isModified(); + bool isModified = getValueState() == ModifiedInPP; if (isModified) { emit valuesChanged(); - myEditor->clearModified(); myEditor->selectAll(); } return isModified;