#include <ModuleBase_WidgetValueFeature.h>
#include <ModuleBase_WidgetValue.h>
+#include <ModuleBase_ResultValidators.h>
#include <Config_Keywords.h>
#include <Config_WidgetAPI.h>
#include <ModelAPI_Data.h>
#include <ModelAPI_Object.h>
#include <ModelAPI_AttributeRefAttr.h>
+#include <ModelAPI_Validator.h>
#include <QWidget>
#include <QLineEdit>
#include <QLabel>
ModuleBase_WidgetFeature::ModuleBase_WidgetFeature(QWidget* theParent,
- const Config_WidgetAPI* theData)
-: ModuleBase_ModelWidget(theParent, theData)
+ const Config_WidgetAPI* theData,
+ const std::string& theParentId)
+: ModuleBase_ModelWidget(theParent, theData, theParentId)
{
- QString aKinds = QString::fromStdString(theData->getProperty(FEATURE_KEYSEQUENCE));
- myFeatureKinds = aKinds.split(" ");
+ //QString aKinds = QString::fromStdString(theData->getProperty(FEATURE_KEYSEQUENCE));
+ //myObjectKinds = aKinds.split(" ");
+ //theData->
myContainer = new QWidget(theParent);
QHBoxLayout* aControlLay = new QHBoxLayout(myContainer);
if (theValue) {
ModuleBase_WidgetValueFeature* aFeatureValue =
dynamic_cast<ModuleBase_WidgetValueFeature*>(theValue);
- // TODO
-// if (aFeatureValue)
-// isDone = setFeature(aFeatureValue->feature());
+ if (aFeatureValue)
+ isDone = setObject(aFeatureValue->object());
}
return isDone;
}
-bool ModuleBase_WidgetFeature::setFeature(const FeaturePtr& theFeature)
+bool ModuleBase_WidgetFeature::setObject(const ObjectPtr& theObject)
{
- if (!myFeatureKinds.contains(theFeature->getKind().c_str()))
- return false;
+ PluginManagerPtr aMgr = ModelAPI_PluginManager::get();
+ ModelAPI_ValidatorsFactory* aFactory = aMgr->validators();
+ const ModelAPI_Validator* aValidator = aFactory->validator(parentID(), attributeID());
+ if (aValidator) {
+ const ModuleBase_ResultValidator* aResValidator =
+ dynamic_cast<const ModuleBase_ResultValidator*>(aValidator);
+ if (aResValidator) {
+ if (!aResValidator->isValid(theObject))
+ return false;
+ }
+ }
- myFeature = theFeature;
- myEditor->setText(theFeature ? theFeature->data()->name().c_str() : "");
+ myObject = theObject;
+ myEditor->setText(theObject ? theObject->data()->name().c_str() : "");
emit valuesChanged();
return true;
}
boost::dynamic_pointer_cast<ModelAPI_AttributeRefAttr>(aData->attribute(attributeID()));
ModuleBase_WidgetFeature* that = (ModuleBase_WidgetFeature*) this;
- aRef->setObject(myFeature);
+ aRef->setObject(myObject);
aFeature->execute();
- Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
-
+ updateObject(theObject);
return true;
}
FeaturePtr aFeature = boost::dynamic_pointer_cast<ModelAPI_Feature>(aRef->object());
if (aFeature) {
- myFeature = aFeature;
- myEditor->setText(myFeature ? myFeature->data()->name().c_str() : "");
+ myObject = aFeature;
+ myEditor->setText(myObject ? myObject->data()->name().c_str() : "");
return true;
}
return false;