X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PropertyPanel.cpp;h=5b26e4e6a8f62b7937613382b6bfcceb36a598b0;hb=3ce4e2cad0e6802282a5a1d10c49c041e8a9f287;hp=54933b4b243af44dd2a25f1495654c8b5ec086b3;hpb=bc7b73d2b779266ac1628194e317e7936e927a2e;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PropertyPanel.cpp b/src/XGUI/XGUI_PropertyPanel.cpp index 54933b4b2..5b26e4e6a 100644 --- a/src/XGUI/XGUI_PropertyPanel.cpp +++ b/src/XGUI/XGUI_PropertyPanel.cpp @@ -5,8 +5,8 @@ * Author: sbh */ -#include #include +#include #include #include @@ -22,7 +22,8 @@ #include #endif -XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) +XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) : +QDockWidget(theParent) { this->setWindowTitle(tr("Property Panel")); QAction* aViewAct = this->toggleViewAction(); @@ -71,17 +72,8 @@ XGUI_PropertyPanel::~XGUI_PropertyPanel() void XGUI_PropertyPanel::cleanContent() { - myWidgets.clear(); - - QLayoutItem* aItem = myMainLayout->takeAt(myMainLayout->count() - 1); - delete aItem; - - myMainLayout->removeWidget(myCustomWidget); - delete myCustomWidget; - - myCustomWidget = new QWidget(widget()); - myMainLayout->addWidget(myCustomWidget); - myMainLayout->addStretch(1); + myWidgets.clear(); + qDeleteAll(myCustomWidget->children()); } void XGUI_PropertyPanel::setModelWidgets(const QList& theWidgets) @@ -97,10 +89,13 @@ void XGUI_PropertyPanel::setModelWidgets(const QList& t connect(*anIt, SIGNAL(focusOutWidget(ModuleBase_ModelWidget*)), this, SLOT(onActivateNextWidget(ModuleBase_ModelWidget*))); + //connect(*anIt, SIGNAL(activated(ModuleBase_ModelWidget*)), + // this, SIGNAL(widgetActivated(ModuleBase_ModelWidget*))); + ModuleBase_WidgetPoint2D* aPointWidget = dynamic_cast(*anIt); if (aPointWidget) - connect(aPointWidget, SIGNAL(storedPoint2D(FeaturePtr, const std::string&)), - this, SIGNAL(storedPoint2D(FeaturePtr, const std::string&))); + connect(aPointWidget, SIGNAL(storedPoint2D(ObjectPtr, const std::string&)), + this, SIGNAL(storedPoint2D(ObjectPtr, const std::string&))); } ModuleBase_ModelWidget* aLastWidget = theWidgets.last(); if (aLastWidget) { @@ -115,13 +110,15 @@ void XGUI_PropertyPanel::setModelWidgets(const QList& t setTabOrder(anOkBtn, aCancelBtn); } } - ModuleBase_ModelWidget* aWidget = theWidgets.first(); - if (aWidget) { - activateWidget(aWidget); - } + onActivateNextWidget(0); } } +const QList& XGUI_PropertyPanel::modelWidgets() const +{ + return myWidgets; +} + bool XGUI_PropertyPanel::eventFilter(QObject *theObject, QEvent *theEvent) { QPushButton* anOkBtn = findChild(XGUI::PROP_PANEL_OK); @@ -147,53 +144,26 @@ QWidget* XGUI_PropertyPanel::contentWidget() void XGUI_PropertyPanel::updateContentWidget(FeaturePtr theFeature) { foreach(ModuleBase_ModelWidget* eachWidget, myWidgets) { - eachWidget->restoreValue(theFeature); + eachWidget->setFeature(theFeature); + eachWidget->restoreValue(); } // the repaint is used here to immediatelly react in GUI to the values change. repaint(); } -void XGUI_PropertyPanel::onFocusActivated(const std::string& theAttributeName) -{ - if (theAttributeName == XGUI::PROP_PANEL_OK) { - QPushButton* aBtn = findChild(XGUI::PROP_PANEL_OK); - aBtn->setFocus(); - } - if (theAttributeName == XGUI::PROP_PANEL_CANCEL) { - QPushButton* aBtn = findChild(XGUI::PROP_PANEL_CANCEL); - aBtn->setFocus(); - } - else { - foreach(ModuleBase_ModelWidget* eachWidget, myWidgets) { - if (eachWidget->canFocusTo(theAttributeName)) { - eachWidget->focusTo(); - break; - } - } - } -} - void XGUI_PropertyPanel::onActivateNextWidget(ModuleBase_ModelWidget* theWidget) { ModuleBase_ModelWidget* aNextWidget = 0; - QList::const_iterator anIt = myWidgets.begin(), aLast = myWidgets.end(); - for (;anIt != aLast; anIt++) - { - if ((*anIt) == theWidget) { - anIt++; - if (anIt != aLast) + bool isFoundWidget = false; + for (;anIt != aLast && !aNextWidget; anIt++) { + if (isFoundWidget || !theWidget) { + if ((*anIt)->focusTo()) { aNextWidget = *anIt; - break; + } } + isFoundWidget = (*anIt) == theWidget; } - activateWidget(aNextWidget); -} - -void XGUI_PropertyPanel::activateWidget(ModuleBase_ModelWidget* theWidget) -{ - if (theWidget) - theWidget->focusTo(); - emit widgetActivated(theWidget); + emit widgetActivated(aNextWidget); }