X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetSwitch.cpp;h=00ea700462e9aacd0a5f24d75d85b38e3fc35ffc;hb=061a63480f6840b6d945f7744b3b972e2d4cb25d;hp=3024f116616dc303d4c14d46d7b73fe19e18c7fc;hpb=0951dd3a93f5370e1b42aef86cccbe0aaa8df0a6;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetSwitch.cpp b/src/ModuleBase/ModuleBase_WidgetSwitch.cpp index 3024f1166..00ea70046 100644 --- a/src/ModuleBase/ModuleBase_WidgetSwitch.cpp +++ b/src/ModuleBase/ModuleBase_WidgetSwitch.cpp @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + /* * ModuleBase_WidgetSwitch.cpp * @@ -6,120 +8,68 @@ */ #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, + const std::string& theParentId) +: ModuleBase_PagedContainer(theParent, theData, theParentId) { - myMainLay = new QVBoxLayout(this); - myMainLay->setContentsMargins(2, 4, 2, 2); + 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 +int ModuleBase_WidgetSwitch::addPage(ModuleBase_PageBase* thePage, const QString& theName, + const QString& theCaseId, + const QPixmap& theIcon ) { - return myCombo->currentIndex(); -} - -QWidget* ModuleBase_WidgetSwitch::currentWidget() const -{ - int idx = currentIndex(); - return myCases[idx]; -} - -int ModuleBase_WidgetSwitch::indexOf(QWidget* theWidget) const -{ - 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); + 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; + QFrame* aFrame = dynamic_cast(thePage); + aFrame->setFrameShape(QFrame::Box); + aFrame->setFrameStyle(QFrame::Sunken); + myPagesLayout->addWidget(aFrame); + return aResultCount; } -bool ModuleBase_WidgetSwitch::isPageEnabled(int index) const +int ModuleBase_WidgetSwitch::currentPageIndex() const { - return myCases[index]->isEnabled(); + int aComboIndex = myCombo->currentIndex(); + return aComboIndex; } -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(); - } -} - -void ModuleBase_WidgetSwitch::setPageEnabled(int index, bool enabled) -{ - myCases[index]->setEnabled(enabled); -} - -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); }