X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PropertyPanel.cpp;h=26ea5d021e587ad4a7a5820c1b3373a5e38bdb2f;hb=6ac73f31213a0faadd92eed42e4e27d1b0820eaf;hp=1779431f5511a3dc204568139f8b334c7e9f72eb;hpb=5ba89a77cdb9638a6d298c2aa5233d26576d9ed0;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PropertyPanel.cpp b/src/XGUI/XGUI_PropertyPanel.cpp index 1779431f5..26ea5d021 100644 --- a/src/XGUI/XGUI_PropertyPanel.cpp +++ b/src/XGUI/XGUI_PropertyPanel.cpp @@ -12,6 +12,8 @@ //#include #include #include +#include +#include #include #include @@ -31,7 +33,8 @@ XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) : ModuleBase_IPropertyPanel(theParent), - myActiveWidget(NULL) + myActiveWidget(NULL), + myPanelPage(NULL) { this->setWindowTitle(tr("Property Panel")); QAction* aViewAct = this->toggleViewAction(); @@ -39,10 +42,10 @@ XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) setStyleSheet("::title { position: relative; padding-left: 5px; text-align: left center }"); QWidget* aContent = new QWidget(this); - myMainLayout = new QGridLayout(aContent); + QGridLayout* aMainLayout = new QGridLayout(aContent); const int kPanelColumn = 0; int aPanelRow = 0; - myMainLayout->setContentsMargins(3, 3, 3, 3); + aMainLayout->setContentsMargins(3, 3, 3, 3); this->setWidget(aContent); QFrame* aFrm = new QFrame(aContent); @@ -50,7 +53,7 @@ XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) aFrm->setFrameShape(QFrame::Panel); QHBoxLayout* aBtnLay = new QHBoxLayout(aFrm); ModuleBase_Tools::zeroMargins(aBtnLay); - myMainLayout->addWidget(aFrm, aPanelRow++, kPanelColumn); + aMainLayout->addWidget(aFrm, aPanelRow++, kPanelColumn); QStringList aBtnNames; aBtnNames << QString(PROP_PANEL_HELP) @@ -64,10 +67,9 @@ XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) } aBtnLay->insertStretch(1, 1); - myCustomWidget = new QWidget(aContent); - myCustomWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); - myMainLayout->addWidget(myCustomWidget, aPanelRow, kPanelColumn); - setStretchEnabled(true); + myPanelPage = new ModuleBase_PageWidget(aContent); + myPanelPage->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); + aMainLayout->addWidget(myPanelPage, aPanelRow, kPanelColumn); } XGUI_PropertyPanel::~XGUI_PropertyPanel() @@ -79,7 +81,7 @@ void XGUI_PropertyPanel::cleanContent() if (myActiveWidget) myActiveWidget->deactivate(); myWidgets.clear(); - qDeleteAll(myCustomWidget->children()); + myPanelPage->clearPage(); myActiveWidget = NULL; setWindowTitle(tr("Property Panel")); } @@ -88,13 +90,13 @@ void XGUI_PropertyPanel::setModelWidgets(const QList& t { myWidgets = theWidgets; if (theWidgets.empty()) return; - QList::const_iterator anIt = theWidgets.begin(); - for (; anIt != theWidgets.end(); anIt++) { - connect(*anIt, SIGNAL(keyReleased(QKeyEvent*)), this, SIGNAL(keyReleased(QKeyEvent*))); - connect(*anIt, SIGNAL(focusOutWidget(ModuleBase_ModelWidget*)), - this, SLOT(activateNextWidget(ModuleBase_ModelWidget*))); - connect(*anIt, SIGNAL(focusInWidget(ModuleBase_ModelWidget*)), - this, SLOT(activateWidget(ModuleBase_ModelWidget*))); + foreach (ModuleBase_ModelWidget* aWidget, theWidgets) { + connect(aWidget, SIGNAL(focusInWidget(ModuleBase_ModelWidget*)), + this, SLOT(activateWidget(ModuleBase_ModelWidget*))); + connect(aWidget, SIGNAL(focusOutWidget(ModuleBase_ModelWidget*)), + this, SLOT(activateNextWidget(ModuleBase_ModelWidget*))); + connect(aWidget, SIGNAL(keyReleased(QKeyEvent*)), + this, SIGNAL(keyReleased(QKeyEvent*))); } ModuleBase_ModelWidget* aLastWidget = theWidgets.last(); if (aLastWidget) { @@ -116,9 +118,10 @@ const QList& XGUI_PropertyPanel::modelWidgets() const return myWidgets; } -QWidget* XGUI_PropertyPanel::contentWidget() +ModuleBase_PageBase* XGUI_PropertyPanel::contentWidget() { - return myCustomWidget; + + return static_cast(myPanelPage); } void XGUI_PropertyPanel::updateContentWidget(FeaturePtr theFeature) @@ -128,8 +131,7 @@ void XGUI_PropertyPanel::updateContentWidget(FeaturePtr theFeature) return; if (theFeature->isAction() || !theFeature->data()) return; - foreach(ModuleBase_ModelWidget* eachWidget, myWidgets) - { + foreach(ModuleBase_ModelWidget* eachWidget, myWidgets) { eachWidget->setFeature(theFeature); eachWidget->restoreValue(); } @@ -157,17 +159,9 @@ void XGUI_PropertyPanel::activateNextWidget(ModuleBase_ModelWidget* theWidget) } // Normaly focusTo is enough to activate widget // here is a special case on mouse click in the viewer - //if(aNextWidget == NULL) { + if(aNextWidget == NULL) { activateWidget(aNextWidget); - //} -} - -void XGUI_PropertyPanel::setStretchEnabled(bool isEnabled) -{ - int aStretchIdx = myMainLayout->rowCount() - 1; - if (aStretchIdx < 0) - return; - myMainLayout->setRowStretch(aStretchIdx, isEnabled ? 1 : 0); + } } void XGUI_PropertyPanel::activateNextWidget() @@ -178,23 +172,24 @@ void XGUI_PropertyPanel::activateNextWidget() void XGUI_PropertyPanel::activateWidget(ModuleBase_ModelWidget* theWidget) { // Avoid activation of already actve widget. It could happen on focusIn event many times - if (theWidget == myActiveWidget) + if (theWidget == myActiveWidget) { return; + } if(myActiveWidget) { myActiveWidget->deactivate(); myActiveWidget->setHighlighted(false); } if(theWidget) { - if (theWidget) - emit beforeWidgetActivated(theWidget); - theWidget->activate(); + emit beforeWidgetActivated(theWidget); theWidget->setHighlighted(true); + theWidget->activate(); } myActiveWidget = theWidget; - if (myActiveWidget) + if (myActiveWidget) { emit widgetActivated(theWidget); - else if (!isEditingMode()) + } else if (!isEditingMode()) { emit noMoreWidgets(); + } } void XGUI_PropertyPanel::setCancelEnabled(bool theEnabled)