+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
// File: ModuleBase_ModelWidget.h
// Created: 25 Apr 2014
// Author: Natalia ERMOLAEVA
#include <Events_Loop.h>
#include <QEvent>
-#include <QWidget>
#include <QGraphicsDropShadowEffect>
#include <QColor>
#include <QLabel>
-ModuleBase_ModelWidget::ModuleBase_ModelWidget(QWidget* theParent, const Config_WidgetAPI* theData,
+ModuleBase_ModelWidget::ModuleBase_ModelWidget(QWidget* theParent,
+ const Config_WidgetAPI* theData,
const std::string& theParentId)
- : QObject(theParent),
- myParentId(theParentId)
+ : QWidget(theParent),
+ myParentId(theParentId),
+ myIsEditing(false)
{
- myIsComputedDefault = false;
- myIsObligatory = theData ? theData->getBooleanAttribute(FEATURE_OBLIGATORY, true) : true;
+ myDefaultValue = theData->getProperty(ATTR_DEFAULT);
+ myIsComputedDefault = theData->getProperty(ATTR_DEFAULT) == DOUBLE_WDG_DEFAULT_COMPUTED;
myAttributeID = theData ? theData->widgetId() : "";
+
+ connect(this, SIGNAL(valuesChanged()), this, SLOT(onWidgetValuesChanged()));
}
bool ModuleBase_ModelWidget::isInitialized(ObjectPtr theObject) const
}
}
+void ModuleBase_ModelWidget::setFeature(const FeaturePtr& theFeature, const bool theToStoreValue)
+{
+ myFeature = theFeature;
+ if (theToStoreValue)
+ storeValue();
+}
+
bool ModuleBase_ModelWidget::focusTo()
{
QList<QWidget*> aControls = getControls();
return true;
}
+void ModuleBase_ModelWidget::activate()
+{
+ // the control value is stored to the mode by the focus in on the widget
+ // we need the value is initialized in order to enable the apply button in the property panel.
+ // It should happens in the creation mode only because all fields are filled in the edition mode
+ if (!isEditingMode()) {
+ AttributePtr anAttribute = myFeature->data()->attribute(myAttributeID);
+ if (anAttribute.get() != NULL && !anAttribute->isInitialized()) {
+ if (isComputedDefault()) {
+ if (myFeature->compute(myAttributeID)) {
+ restoreValue();
+ }
+ }
+ else {
+ storeValue();
+ }
+ }
+ }
+ activateCustom();
+}
void ModuleBase_ModelWidget::updateObject(ObjectPtr theObj) const
{
ModelAPI_EventCreator::get()->sendUpdated(theObj, anEvent);
}
+void ModuleBase_ModelWidget::moveObject(ObjectPtr theObj) const
+{
+ static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_MOVED);
+ ModelAPI_EventCreator::get()->sendUpdated(theObj, anEvent);
+ Events_Loop::loop()->flush(anEvent);
+}
+
bool ModuleBase_ModelWidget::eventFilter(QObject* theObject, QEvent *theEvent)
{
QWidget* aWidget = qobject_cast<QWidget*>(theObject);
return QObject::eventFilter(theObject, theEvent);
}
+
+//**************************************************************
+void ModuleBase_ModelWidget::onWidgetValuesChanged()
+{
+ storeValue();
+}