X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetSwitch.cpp;h=b17759e5a3b45fd3a3a6234053c55b8b3de4eefe;hb=38dd97c8f7a3605ec6c362c3aefdefa3ee2675be;hp=e1571cab161848fa45b510b48aa75cbc410ca996;hpb=3874b57fe5aba25ff5aee2a07654fc23c1ee8eb0;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetSwitch.cpp b/src/ModuleBase/ModuleBase_WidgetSwitch.cpp index e1571cab1..b17759e5a 100644 --- a/src/ModuleBase/ModuleBase_WidgetSwitch.cpp +++ b/src/ModuleBase/ModuleBase_WidgetSwitch.cpp @@ -8,119 +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) +: ModuleBase_PagedContainer(theParent, theData) { - 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 -{ - 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 ) { - 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; -} - -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); }