X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetSwitch.cpp;h=405ddc1984038896cfa15fe9f562e27aa432a559;hb=5c51b3b5025a77e6bb9ceccb29145b153beb5b00;hp=3024f116616dc303d4c14d46d7b73fe19e18c7fc;hpb=622014f62af50bfd219fb242df168760849e2006;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetSwitch.cpp b/src/ModuleBase/ModuleBase_WidgetSwitch.cpp index 3024f1166..405ddc198 100644 --- a/src/ModuleBase/ModuleBase_WidgetSwitch.cpp +++ b/src/ModuleBase/ModuleBase_WidgetSwitch.cpp @@ -1,125 +1,88 @@ -/* - * ModuleBase_WidgetSwitch.cpp - * - * Created on: Apr 16, 2014 - * Author: sbh - */ +// Copyright (C) 2014-2019 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 -ModuleBase_WidgetSwitch::ModuleBase_WidgetSwitch(QWidget* parent) -: QFrame(parent) +ModuleBase_WidgetSwitch::ModuleBase_WidgetSwitch(QWidget* theParent, + const Config_WidgetAPI* theData) +: ModuleBase_PagedContainer(theParent, theData) { - myMainLay = new QVBoxLayout(this); - myMainLay->setContentsMargins(2, 4, 2, 2); + myRemeberChoice = false; + QVBoxLayout* aMainLay = new QVBoxLayout(this); + //aMainLay->setContentsMargins(2, 4, 2, 2); + ModuleBase_Tools::adjustMargins(aMainLay); myCombo = new QComboBox(this); myCombo->hide(); - myMainLay->addWidget(myCombo); - this->setFrameShape(QFrame::StyledPanel); - connect(myCombo, SIGNAL(currentIndexChanged(int)), - this, SLOT(setCurrentIndex(int))); - connect(myCombo, SIGNAL(currentIndexChanged(int)), - this, SIGNAL(currentPageChanged(int))); + myPagesLayout = new QStackedLayout(this); + aMainLay->addWidget(myCombo); + aMainLay->addLayout(myPagesLayout, 1); + setLayout(aMainLay); + connect(myCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onPageChanged())); + connect(myCombo, SIGNAL(activated(int)), myPagesLayout, SLOT(setCurrentIndex(int))); } ModuleBase_WidgetSwitch::~ModuleBase_WidgetSwitch() { } -int ModuleBase_WidgetSwitch::addPage(QWidget* theWidget, const QString& theName) -{ - return insertPage(count(), theWidget, theName); -} - -int ModuleBase_WidgetSwitch::count() const -{ - return myCombo->count(); -} - -int ModuleBase_WidgetSwitch::currentIndex() const -{ - return myCombo->currentIndex(); -} - -QWidget* ModuleBase_WidgetSwitch::currentWidget() const -{ - int idx = currentIndex(); - return myCases[idx]; -} -int ModuleBase_WidgetSwitch::indexOf(QWidget* theWidget) const +int ModuleBase_WidgetSwitch::addPage(ModuleBase_PageBase* thePage, const QString& theName, + const QString& theCaseId, + const QPixmap& theIcon, + const QString& theTooltip) { - return myCases.indexOf(theWidget); -} - -int ModuleBase_WidgetSwitch::insertPage(int theIndex, QWidget* theWidget, const QString& theName) -{ - int index = theIndex < count() ? theIndex : count(); - if(count() == 0) + int aSuperCount = + ModuleBase_PagedContainer::addPage(thePage, theName, theCaseId, theIcon, theTooltip); + myCombo->addItem(theName); + int aResultCount = myCombo->count(); + if (aResultCount == 2) myCombo->show(); - myCombo->insertItem(index, theName); - myCases.insert(index, theWidget); - myMainLay->addWidget(theWidget); - setCurrentIndex(theIndex); - return index; -} - -bool ModuleBase_WidgetSwitch::isPageEnabled(int index) const -{ - return myCases[index]->isEnabled(); -} - -QString ModuleBase_WidgetSwitch::pageText(int index) const -{ - return myCombo->itemText(index); -} - -QString ModuleBase_WidgetSwitch::pageToolTip(int index) const -{ - return myCases[index]->toolTip(); -} - -void ModuleBase_WidgetSwitch::removePage(int index) -{ - myCombo->removeItem(index); - myCases.removeAt(index); - if (count() == 0) { - myCombo->hide(); - } + QFrame* aFrame = dynamic_cast(thePage); + aFrame->setFrameShape(QFrame::Box); + aFrame->setFrameStyle(QFrame::Sunken); + myPagesLayout->addWidget(aFrame); + return aResultCount; } -void ModuleBase_WidgetSwitch::setPageEnabled(int index, bool enabled) +int ModuleBase_WidgetSwitch::currentPageIndex() const { - myCases[index]->setEnabled(enabled); + int aComboIndex = myCombo->currentIndex(); + return aComboIndex; } -void ModuleBase_WidgetSwitch::setPageName(int index, const QString& theName) -{ - myCombo->setItemText(index, theName); -} - -void ModuleBase_WidgetSwitch::setPageToolTip(int index, const QString& toolTip) -{ - myCases[index]->setToolTip(toolTip); -} - -void ModuleBase_WidgetSwitch::setCurrentIndex(int index) -{ - myCombo->setCurrentIndex(index); - refresh(); -} -void ModuleBase_WidgetSwitch::refresh() +void ModuleBase_WidgetSwitch::setCurrentPageIndex(int theIndex) { - foreach(QWidget* eachWidget, myCases) { - eachWidget->setVisible(false); - } - if(currentIndex() >= myCases.count()) - return; - myCases[currentIndex()]->setVisible(true); + bool isComboSignalsBlocked = myCombo->blockSignals(true); + bool isPagesLayoutSignalsBlocked = myPagesLayout->blockSignals(true); + myCombo->setCurrentIndex(theIndex); + myPagesLayout->setCurrentIndex(theIndex); + myCombo->blockSignals(isComboSignalsBlocked); + myPagesLayout->blockSignals(isPagesLayoutSignalsBlocked); }