+
+bool ModelAPI_Feature::isMacro() const
+{
+ return false;
+}
+
+bool ModelAPI_Feature::setDisabled(const bool theFlag)
+{
+ if (myIsDisabled != theFlag) {
+ myIsDisabled = theFlag;
+ if (myIsDisabled) {
+ removeResults(0, false); // flush will be in setCurrentFeature
+ } else {
+ // enable all disabled previously results
+ std::list<std::shared_ptr<ModelAPI_Result> >::iterator aResIter = myResults.begin();
+ for(; aResIter != myResults.end(); aResIter++) {
+ (*aResIter)->setDisabled(*aResIter, false);
+ }
+ }
+ return true;
+ }
+ return false;
+}
+
+bool ModelAPI_Feature::isDisabled()
+{
+ return myIsDisabled;
+}
+
+bool ModelAPI_Feature::setStable(const bool theFlag)
+{
+ if (myIsStable != theFlag) {
+ myIsStable = theFlag;
+ // send an event about the stability change (editing is started/finished)
+ static Events_Loop* aLoop = Events_Loop::loop();
+ static Events_ID EVENT_STAB = aLoop->eventByName(EVENT_STABILITY_CHANGED);
+ std::shared_ptr<Events_Message> aMessage(new Events_Message(EVENT_STAB, this));
+ aLoop->send(aMessage, false);
+ return true;
+ }
+ return false;
+}
+
+bool ModelAPI_Feature::isStable()
+{
+ return myIsStable;
+}
+
+bool ModelAPI_Feature::isPreviewNeeded() const
+{
+ return true;
+}
+
+void ModelAPI_Feature::init()
+{
+ myIsDisabled = false;
+ myIsStable = true;
+}