1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
4 * ModuleBase_Operation.cpp
6 * Created on: Apr 2, 2014
10 #include "ModuleBase_Operation.h"
12 #include "ModuleBase_OperationDescription.h"
13 #include "ModuleBase_ModelWidget.h"
14 #include "ModuleBase_ViewerPrs.h"
15 #include "ModuleBase_IPropertyPanel.h"
16 #include "ModuleBase_ISelection.h"
17 #include "ModuleBase_IViewer.h"
19 #include <ModelAPI_AttributeDouble.h>
20 #include <ModelAPI_Document.h>
21 #include <ModelAPI_Feature.h>
22 #include <ModelAPI_Data.h>
23 #include <ModelAPI_Document.h>
24 #include <ModelAPI_Events.h>
25 #include <ModelAPI_Result.h>
26 #include <ModelAPI_Object.h>
27 #include <ModelAPI_Validator.h>
28 #include <ModelAPI_Session.h>
30 #include <GeomAPI_Pnt2d.h>
32 #include <Events_Loop.h>
40 ModuleBase_Operation::ModuleBase_Operation(const QString& theId, QObject* theParent)
45 myDescription = new ModuleBase_OperationDescription(theId);
48 ModuleBase_Operation::~ModuleBase_Operation()
53 const QStringList& ModuleBase_Operation::grantedOperationIds() const
58 void ModuleBase_Operation::setGrantedOperationIds(const QStringList& theList)
60 myGrantedIds = theList;
63 QString ModuleBase_Operation::id() const
65 return getDescription()->operationId();
68 bool ModuleBase_Operation::isValid() const
73 bool ModuleBase_Operation::canBeCommitted() const
78 void ModuleBase_Operation::start()
82 ModelAPI_Session::get()->startOperation(id().toStdString());
88 void ModuleBase_Operation::postpone()
94 void ModuleBase_Operation::resume()
100 void ModuleBase_Operation::abort()
102 // the viewer update should be blocked in order to avoid the features blinking before they are
104 //std::shared_ptr<Events_Message> aMsg = std::shared_ptr<Events_Message>(
105 // new Events_Message(Events_Loop::eventByName(EVENT_UPDATE_VIEWER_BLOCKED)));
106 //Events_Loop::loop()->send(aMsg);
108 ModelAPI_Session::get()->abortOperation();
111 // the viewer update should be unblocked in order to avoid the features blinking before they are
113 //aMsg = std::shared_ptr<Events_Message>(
114 // new Events_Message(Events_Loop::eventByName(EVENT_UPDATE_VIEWER_UNBLOCKED)));
115 //Events_Loop::loop()->send(aMsg);
120 bool ModuleBase_Operation::commit()
122 if (canBeCommitted()) {
123 SessionPtr aMgr = ModelAPI_Session::get();
126 aMgr->finishOperation();
132 afterCommitOperation();
138 void ModuleBase_Operation::onValuesChanged()
143 void ModuleBase_Operation::setPropertyPanel(ModuleBase_IPropertyPanel* theProp)
145 myPropertyPanel = theProp;
148 bool ModuleBase_Operation::isGranted(QString theId) const
150 return myGrantedIds.contains(theId);