X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetFactory.cpp;h=07f1fbd4a2a406df6dd585ac1644023ed505eaa6;hb=374a366d81778aa27ed32cc080c0f95bdb03f1c5;hp=3052dae9f594129a2551930805e4e6925edad684;hpb=50aeec65965daa04bb5ef38125363c22067817f5;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetFactory.cpp b/src/ModuleBase/ModuleBase_WidgetFactory.cpp index 3052dae9f..07f1fbd4a 100644 --- a/src/ModuleBase/ModuleBase_WidgetFactory.cpp +++ b/src/ModuleBase/ModuleBase_WidgetFactory.cpp @@ -1,20 +1,33 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -/* - * ModuleBase_WidgetFactory.cpp - * - * Created on: Apr 3, 2014 - * Author: sbh - */ +// 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 +// 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 #include +#include #include +#include #include #include #include @@ -23,17 +36,22 @@ #include #include #include +#include #include +#include #include -#include +#include #include +#include #include #include -#include +#include #include #include #include #include +#include +#include #include #include @@ -59,10 +77,11 @@ #include ModuleBase_WidgetFactory::ModuleBase_WidgetFactory(const std::string& theXmlRepresentation, - ModuleBase_IWorkshop* theWorkshop) + ModuleBase_IWorkshop* theWorkshop, + const std::string theAttributePrefix) : myWorkshop(theWorkshop) { - myWidgetApi = new Config_WidgetAPI(theXmlRepresentation); + myWidgetApi = new Config_WidgetAPI(theXmlRepresentation, theAttributePrefix); } ModuleBase_WidgetFactory::~ModuleBase_WidgetFactory() @@ -70,7 +89,7 @@ ModuleBase_WidgetFactory::~ModuleBase_WidgetFactory() delete myWidgetApi; } -void ModuleBase_WidgetFactory::createWidget(ModuleBase_PageBase* thePage) +void ModuleBase_WidgetFactory::createWidget(ModuleBase_PageBase* thePage, bool alignToTop) { std::string aWType = myWidgetApi->widgetType(); if (aWType == NODE_FEATURE) { @@ -115,15 +134,17 @@ void ModuleBase_WidgetFactory::createWidget(ModuleBase_PageBase* thePage) if (myWidgetApi->toChildWidget()) { do { QString aPageName = qs(myWidgetApi->getProperty(CONTAINER_PAGE_NAME)); + QString aTooltip = qs(myWidgetApi->getProperty(FEATURE_TOOLTIP)); QString aCaseId = qs(myWidgetApi->getProperty(_ID)); ModuleBase_PageBase* aPage = new ModuleBase_PageWidget(aWidget); createWidget(aPage); - if (aWdgType == WDG_SWITCH || aWdgType == WDG_TOOLBOX) { - ModuleBase_PagedContainer* aContainer = qobject_cast(aWidget); + if (aWdgType == WDG_SWITCH || aWdgType == WDG_TOOLBOX || aWdgType == WDG_RADIOBOX) { + ModuleBase_PagedContainer* aContainer = + qobject_cast(aWidget); QString anIconPath = qs( myWidgetApi->getProperty( CONTAINER_PAGE_ICON ) ); - QPixmap anIcon( anIconPath ); - aContainer->addPage( aPage, aPageName, aCaseId, anIcon ); + QPixmap anIcon = ModuleBase_IconFactory::loadPixmap( anIconPath ); + aContainer->addPage( aPage, aPageName, aCaseId, anIcon, aTooltip); } } while (myWidgetApi->toNextWidget()); } @@ -131,7 +152,8 @@ void ModuleBase_WidgetFactory::createWidget(ModuleBase_PageBase* thePage) } } while (myWidgetApi->toNextWidget()); - thePage->alignToTop(); + if (alignToTop) + thePage->alignToTop(); } void ModuleBase_WidgetFactory::createPanel(ModuleBase_PageBase* thePage, @@ -140,8 +162,12 @@ void ModuleBase_WidgetFactory::createPanel(ModuleBase_PageBase* thePage, std::string aPanelName = myWidgetApi->getProperty(PROPERTY_PANEL_ID); if (!aPanelName.empty() && ModuleBase_WidgetCreatorFactory::get()->hasPanelWidget(aPanelName)) { QWidget* aPanel = ModuleBase_WidgetCreatorFactory::get()->createPanelByType(aPanelName, - thePage->pageWidget(), theFeature); - thePage->addWidget(aPanel); + thePage->pageWidget(), theFeature, myWidgetApi); + ModuleBase_ModelWidget* aModelWdg = dynamic_cast(aPanel); + if (aModelWdg) + thePage->addModelWidget(aModelWdg); + else + thePage->addWidget(aPanel); thePage->alignToTop(); } } @@ -164,8 +190,8 @@ void ModuleBase_WidgetFactory::createWidget(ModuleBase_PageBase* thePage, aWidget->setVisible(false); } } + thePage->alignToTop(); } - thePage->alignToTop(); } void ModuleBase_WidgetFactory::getAttributeTitle(const std::string& theAttributeId, @@ -176,8 +202,11 @@ void ModuleBase_WidgetFactory::getAttributeTitle(const std::string& theAttribute if (aFound) { theTitle = QString::fromStdString(myWidgetApi->widgetLabel()).toStdString().c_str(); if (theTitle.empty()) - theTitle = QString::fromStdString(myWidgetApi->getProperty(CONTAINER_PAGE_NAME)).toStdString().c_str(); + theTitle = + QString::fromStdString(myWidgetApi->getProperty(CONTAINER_PAGE_NAME)).toStdString().c_str(); } + else + theTitle = theAttributeId; } void ModuleBase_WidgetFactory::getGreedAttribute(std::string& theAttributeId) @@ -253,14 +282,13 @@ ModuleBase_PageBase* ModuleBase_WidgetFactory::createPageByType(const std::strin if (theType == WDG_GROUP) { QString aGroupName = qs(myWidgetApi->getProperty(CONTAINER_PAGE_NAME)); ModuleBase_PageGroupBox* aPage = new ModuleBase_PageGroupBox(theParent); - aPage->setTitle(aGroupName); + aPage->setTitle(ModuleBase_Tools::translate( + myWidgetApi->myFeatureId, aGroupName.toStdString())); aResult = aPage; } - else if (theType == WDG_CHECK_GROUP) { - QString aGroupName = qs(myWidgetApi->getProperty(CONTAINER_PAGE_NAME)); - ModuleBase_WidgetCheckGroupBox* aPage = new ModuleBase_WidgetCheckGroupBox(theParent, + else if (theType == WDG_OPTIONALBOX) { + ModuleBase_WidgetOptionalBox* aPage = new ModuleBase_WidgetOptionalBox(theParent, myWidgetApi); - aPage->setTitle(aGroupName); aResult = aPage; } if (!aResult) @@ -281,14 +309,18 @@ ModuleBase_ModelWidget* ModuleBase_WidgetFactory::createWidgetByType(const std:: if (theType == WDG_INFO) { result = new ModuleBase_WidgetLabel(theParent, myWidgetApi); - } else if (theType == WDG_ERRORINFO) { - result = new ModuleBase_WidgetErrorLabel(theParent, myWidgetApi); } else if (theType == WDG_DOUBLEVALUE) { result = new ModuleBase_WidgetDoubleValue(theParent, myWidgetApi); + } else if (theType == WDG_UNDOLABEL) { + result = new ModuleBase_WidgetUndoLabel(theParent, myWorkshop, myWidgetApi); + } else if (theType == WDG_DOUBLEVALUELABEL) { + result = new ModuleBase_WidgetLabelValue(theParent, myWidgetApi); } else if (theType == WDG_INTEGERVALUE) { result = new ModuleBase_WidgetIntValue(theParent, myWidgetApi); } else if (theType == WDG_SHAPE_SELECTOR) { result = new ModuleBase_WidgetShapeSelector(theParent, myWorkshop, myWidgetApi); + } else if (theType == WDG_FEATURE_SELECTOR) { + result = new ModuleBase_WidgetFeatureSelector(theParent, myWorkshop, myWidgetApi); } else if (theType == WDG_BOOLVALUE) { result = new ModuleBase_WidgetBoolValue(theParent, myWidgetApi); //} else if (theType == WDG_DOUBLEVALUE_EDITOR) { @@ -300,13 +332,20 @@ ModuleBase_ModelWidget* ModuleBase_WidgetFactory::createWidgetByType(const std:: } else if (theType == WDG_STRINGVALUE) { std::string aPlaceHolder = myWidgetApi->getProperty( WDG_PLACE_HOLDER ); result = new ModuleBase_WidgetLineEdit( theParent, myWidgetApi, aPlaceHolder ); + } else if (theType == WDG_NAMEVALUE) { + std::string aPlaceHolder = myWidgetApi->getProperty( WDG_PLACE_HOLDER ); + result = new ModuleBase_WidgetNameEdit( theParent, myWidgetApi, aPlaceHolder ); } else if (theType == WDG_EXPR_EDITOR) { std::string aPlaceHolder = myWidgetApi->getProperty( WDG_PLACE_HOLDER ); result = new ModuleBase_WidgetExprEditor( theParent, myWidgetApi, aPlaceHolder ); } else if (theType == WDG_MULTISELECTOR) { result = new ModuleBase_WidgetMultiSelector(theParent, myWorkshop, myWidgetApi); + } else if (theType == WDG_CONCEALED_OBJECTS_VIEW) { + result = new ModuleBase_WidgetConcealedObjects(theParent, myWidgetApi); } else if (theType == WDG_TOOLBOX) { result = new ModuleBase_WidgetToolbox(theParent, myWidgetApi); + } else if (theType == WDG_RADIOBOX) { + result = new ModuleBase_WidgetRadiobox(theParent, myWidgetApi); } else if (theType == WDG_SWITCH) { result = new ModuleBase_WidgetSwitch(theParent, myWidgetApi); } else if (theType == WDG_TOOLBOX_BOX || theType == WDG_SWITCH_CASE || @@ -315,6 +354,10 @@ ModuleBase_ModelWidget* ModuleBase_WidgetFactory::createWidgetByType(const std:: result = NULL; } else if (theType == WDG_ACTION) { result = new ModuleBase_WidgetAction(theParent, myWidgetApi); + } else if (theType == WDG_POINT_INPUT) { + result = new ModuleBase_WidgetPointInput(theParent, myWorkshop, myWidgetApi); + } else if (theType == WDG_SELECTION_FILTERS) { + result = new ModuleBase_WidgetSelectionFilter(theParent, myWorkshop, myWidgetApi); } else { result = myWorkshop->module()->createWidgetByType(theType, theParent, myWidgetApi); if (!result)