#include <QGridLayout>
#include <QWidget>
#include <QAction>
+#include <QScrollArea>
#ifdef _DEBUG
#include <iostream>
QStringList aBtnNames;
aBtnNames << QString(PROP_PANEL_HELP)
- << QString(PROP_PANEL_OK)
- << QString(PROP_PANEL_OK_PLUS)
- << QString(PROP_PANEL_CANCEL);
+ << QString(PROP_PANEL_OK)
+ << QString(PROP_PANEL_OK_PLUS)
+ << QString(PROP_PANEL_CANCEL);
foreach(QString eachBtnName, aBtnNames) {
QToolButton* aBtn = new QToolButton(aFrm);
aBtn->setObjectName(eachBtnName);
myPanelPage->clearPage();
myActiveWidget = NULL;
emit propertyPanelDeactivated();
- myOperationMgr->workshop()->selectionActivate()->updateSelectionModes();
- myOperationMgr->workshop()->selectionActivate()->updateSelectionFilters();
+ // VSV: It seems that this code is not necessary:
+ // it is called on propertyPanelDeactivated() event
+ //myOperationMgr->workshop()->selectionActivate()->updateSelectionModes();
+ //myOperationMgr->workshop()->selectionActivate()->updateSelectionFilters();
#ifdef DEBUG_ACTIVE_WIDGET
std::cout << "myActiveWidget = NULL" << std::endl;
#endif
}
}
+
const QList<ModuleBase_ModelWidget*>& XGUI_PropertyPanel::modelWidgets() const
{
return myWidgets;
eachWidget->restoreValue();
}
// the repaint is used here to immediately react in GUI to the values change.
- repaint();
+ update();
}
void XGUI_PropertyPanel::createContentPanel(FeaturePtr theFeature)
if (theFeature->isAction() || !theFeature->data())
return;
+ ModuleBase_Operation* anOperation = myOperationMgr->currentOperation();
if (myWidgets.empty()) {
- ModuleBase_Operation* anOperation = myOperationMgr->currentOperation();
QString aXmlRepr = anOperation->getDescription()->xmlRepresentation();
ModuleBase_WidgetFactory aFactory(aXmlRepr.toStdString(), myOperationMgr->workshop());
- aFactory.createPanel(contentWidget(), theFeature);
- /// Apply button should be update if the feature was modified by the panel
+ ModuleBase_PageBase* aPage = contentWidget();
+ aFactory.createPanel(aPage, theFeature);
+ // update model widgets if exist
+ setModelWidgets(aPage->modelWidgets());
+ // Apply button should be update if the feature was modified by the panel
myOperationMgr->onValidateOperation();
}
- std::shared_ptr<Config_FeatureMessage> aFeatureInfo =
- myOperationMgr->workshop()->featureInfo(theFeature->getKind().c_str());
- if (aFeatureInfo.get())
- findButton(PROP_PANEL_OK_PLUS)->setVisible(aFeatureInfo->isApplyContinue());
+ ModuleBase_OperationFeature* aFeatureOp =
+ dynamic_cast<ModuleBase_OperationFeature*>(anOperation);
+ if (aFeatureOp && (!aFeatureOp->isEditOperation()))
+ updateApplyPlusButton(theFeature);
+ else
+ findButton(PROP_PANEL_OK_PLUS)->setVisible(false);
+}
+
+void XGUI_PropertyPanel::updateApplyPlusButton(FeaturePtr theFeature)
+{
+ if (theFeature.get()) {
+ std::shared_ptr<Config_FeatureMessage> aFeatureInfo =
+ myOperationMgr->workshop()->featureInfo(theFeature->getKind().c_str());
+ if (aFeatureInfo.get()) {
+ findButton(PROP_PANEL_OK_PLUS)->setVisible(aFeatureInfo->isApplyContinue());
+ return;
+ }
+ }
+ findButton(PROP_PANEL_OK_PLUS)->setVisible(false);
}
ModuleBase_ModelWidget* XGUI_PropertyPanel::activeWidget(const bool isUseCustomWidget) const
ModuleBase_ModelWidget* aNewFocusMWidget = ModuleBase_ModelWidget::findModelWidget(this,
aNewFocusWidget);
if (aNewFocusMWidget) {
- if (aFocusMWidget) {
+ if (aFocusMWidget && (aFocusMWidget != aNewFocusMWidget)) {
aFocusMWidget->setHighlighted(false);
}
aNewFocusMWidget->emitFocusInWidget();