X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetLabel.cpp;h=baadf603782534c947b2116abd54f3cd5b808057;hb=06e7f5859095193fc7f498bd89a7d28009794f53;hp=d5ffd015b3b01b931aa31c3a9b31cd23468d638e;hpb=38afbd899a8645c83e17f2c24a17a2b7414911b4;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetLabel.cpp b/src/ModuleBase/ModuleBase_WidgetLabel.cpp index d5ffd015b..baadf6037 100644 --- a/src/ModuleBase/ModuleBase_WidgetLabel.cpp +++ b/src/ModuleBase/ModuleBase_WidgetLabel.cpp @@ -1,25 +1,73 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: ModuleBase_WidgetLabel.cpp -// Created: 03 Dec 2014 -// Author: Vitaly SMETANNIKOV +// 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 +// 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 "ModuleBase_WidgetLabel.h" #include +#include +#include +#include + +#include +#include +#include #include +#include ModuleBase_WidgetLabel::ModuleBase_WidgetLabel(QWidget* theParent, - const Config_WidgetAPI* theData, - const std::string& theParentId) - : ModuleBase_ModelWidget(theParent, theData, theParentId) + const Config_WidgetAPI* theData) +: ModuleBase_ModelWidget(theParent, theData) { - QString aText = QString::fromStdString(theData->getProperty("title")); + QString aText = translate(theData->getProperty("title")); + + myPrefix = theData->getProperty(ATTR_LABEL); + + bool aIsHtml = theData->getBooleanAttribute(ATTR_HTML_STYLE, false); + + QString aLabelIcon = QString::fromStdString(theData->getProperty("icon")); myLabel = new QLabel(aText, theParent); + if (!aLabelIcon.isEmpty()) { + myLabel->setPixmap(ModuleBase_IconFactory::loadPixmap(aLabelIcon)); + myLabel->setAlignment(Qt::AlignHCenter | Qt::AlignTop); + } else { + myLabel->setAlignment(Qt::AlignLeft | Qt::AlignTop); + } myLabel->setWordWrap(true); myLabel->setIndent(5); + myLabel->setContentsMargins(0,0,0,4); + if (aIsHtml) + myLabel->setTextFormat(Qt::RichText); + + QVBoxLayout* aLayout = new QVBoxLayout(this); + ModuleBase_Tools::zeroMargins(aLayout); + aLayout->addWidget(myLabel); + setLayout(aLayout); + + std::string aStyleSheet = theData->getProperty(ATTR_STYLE_SHEET); + if (!aStyleSheet.empty()) + myLabel->setStyleSheet(QString("QLabel {%1}").arg(aStyleSheet.c_str())); + + aStyleSheet = theData->getProperty(ATTR_IS_SELECTABLE); + if ( aStyleSheet == "true") + myLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); } ModuleBase_WidgetLabel::~ModuleBase_WidgetLabel() @@ -31,7 +79,37 @@ QList ModuleBase_WidgetLabel::getControls() const return QList(); } -QWidget* ModuleBase_WidgetLabel::getControl() const +bool ModuleBase_WidgetLabel::restoreValueCustom() +{ + DataPtr aData = myFeature->data(); + AttributeStringPtr aStrAttr = aData->string(attributeID()); + if (aStrAttr.get()) { + QString aText; + if (aStrAttr.get()) { + if (aStrAttr->isUValue()) { // already translated text + char16_t* aStr = aStrAttr->valueU(); + std::wstring aWStr((wchar_t*)aStr); + static const int aBufSize = 1000; + static char aMBStr[aBufSize]; + wcstombs(aMBStr, aWStr.c_str(), aBufSize); + std::string aCodec = Config_Translator::codec(""); + aText = QTextCodec::codecForName(aCodec.c_str())->toUnicode(aMBStr); + } else { + std::string aMsg = aStrAttr->value(); + aText = ModuleBase_Tools::translate(myFeature->getKind(), aMsg); + } + } + if (myPrefix == "") { + myLabel->setText(aText); + } else { + myLabel->setText(ModuleBase_Tools::translate(myFeature->getKind(), myPrefix) + aText); + } + } + return true; +} + +bool ModuleBase_WidgetLabel::focusTo() { - return myLabel; + restoreValue(); + return false; }