X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PropertyPanel.cpp;h=4760cffb5a5fe2c8b32bd739a84306e51d5d2dbd;hb=8f09d362a50ccbc085841c24af2e755121e458ba;hp=0e5fcdf6008302f0de157cacc66a63239eea714c;hpb=70b63231279a083e2c9c0281b1ad28dd6d4fba82;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PropertyPanel.cpp b/src/XGUI/XGUI_PropertyPanel.cpp index 0e5fcdf60..4760cffb5 100644 --- a/src/XGUI/XGUI_PropertyPanel.cpp +++ b/src/XGUI/XGUI_PropertyPanel.cpp @@ -34,6 +34,7 @@ XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) : ModuleBase_IPropertyPanel(theParent), myActiveWidget(NULL), + myPreselectionWidget(NULL), myPanelPage(NULL) { this->setWindowTitle(tr("Property Panel")); @@ -55,6 +56,8 @@ XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) ModuleBase_Tools::zeroMargins(aBtnLay); aMainLayout->addWidget(aFrm, aPanelRow++, kPanelColumn); + myHeaderWidget = aFrm; + QStringList aBtnNames; aBtnNames << QString(PROP_PANEL_HELP) << QString(PROP_PANEL_OK) @@ -90,13 +93,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) { @@ -132,7 +135,8 @@ void XGUI_PropertyPanel::updateContentWidget(FeaturePtr theFeature) if (theFeature->isAction() || !theFeature->data()) return; foreach(ModuleBase_ModelWidget* eachWidget, myWidgets) { - eachWidget->setFeature(theFeature); + if (!eachWidget->feature().get()) + eachWidget->setFeature(theFeature); eachWidget->restoreValue(); } // the repaint is used here to immediately react in GUI to the values change. @@ -159,9 +163,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::activateNextWidget() @@ -172,23 +176,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) @@ -223,3 +228,13 @@ void XGUI_PropertyPanel::setupActions(XGUI_ActionsMgr* theMgr) aBtn->setDefaultAction(anAct); } } + +ModuleBase_ModelWidget* XGUI_PropertyPanel::preselectionWidget() const +{ + return myPreselectionWidget; +} + +void XGUI_PropertyPanel::setPreselectionWidget(ModuleBase_ModelWidget* theWidget) +{ + myPreselectionWidget = theWidget; +}