Salome HOME
CEA : Lot1 - Interpolation
[modules/shaper.git] / src / ModelAPI / ModelAPI_Events.cpp
1 // Copyright (C) 2014-2020  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #include <ModelAPI.h>
21 #include <ModelAPI_Events.h>
22
23 #include <GeomAPI_Pnt2d.h>
24 #include <GeomAPI_Shape.h>
25
26 //#define DEBUG_OBJECT_MOVED_MESSAGE
27 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
28 #include <iostream>
29 #endif
30
31 ModelAPI_ObjectUpdatedMessage::ModelAPI_ObjectUpdatedMessage(const Events_ID theID,
32                                                              const void* theSender)
33     : Events_MessageGroup(theID, theSender)
34 {}
35
36 ModelAPI_ObjectUpdatedMessage::~ModelAPI_ObjectUpdatedMessage()
37 {}
38
39 ModelAPI_ObjectDeletedMessage::ModelAPI_ObjectDeletedMessage(const Events_ID theID,
40                                                              const void* theSender)
41     : Events_MessageGroup(theID, theSender)
42 {}
43
44 ModelAPI_ObjectDeletedMessage::~ModelAPI_ObjectDeletedMessage()
45 {}
46
47 ModelAPI_OrderUpdatedMessage::ModelAPI_OrderUpdatedMessage(const Events_ID theID,
48                                                            const void* theSender)
49     : Events_Message(theID, theSender)
50 {}
51
52 ModelAPI_OrderUpdatedMessage::~ModelAPI_OrderUpdatedMessage()
53 {}
54
55 // used by GUI only
56 // LCOV_EXCL_START
57 ModelAPI_FeatureStateMessage::ModelAPI_FeatureStateMessage(const Events_ID theID,
58                                                            const void* theSender)
59  : Events_Message(theID, theSender)
60 {
61   myCurrentFeature = std::shared_ptr<ModelAPI_Feature>();
62 }
63
64 ModelAPI_FeatureStateMessage::~ModelAPI_FeatureStateMessage()
65 {}
66
67 std::shared_ptr<ModelAPI_Feature> ModelAPI_FeatureStateMessage::feature() const
68 {
69   return myCurrentFeature;
70 }
71
72 void ModelAPI_FeatureStateMessage::setFeature(std::shared_ptr<ModelAPI_Feature>& theFeature)
73 {
74   myCurrentFeature = theFeature;
75 }
76
77 bool ModelAPI_FeatureStateMessage::hasState(const std::string& theKey) const
78 {
79   return myFeatureState.find(theKey) != myFeatureState.end();
80 }
81
82 bool ModelAPI_FeatureStateMessage::state(const  std::string& theFeatureId, bool theDefault) const
83 {
84   if(hasState(theFeatureId)) {
85     return myFeatureState.at(theFeatureId);
86   }
87   return theDefault;
88 }
89
90 void ModelAPI_FeatureStateMessage::setState(const std::string& theFeatureId, bool theValue)
91 {
92   myFeatureState[theFeatureId] = theValue;
93 }
94
95 std::list<std::string> ModelAPI_FeatureStateMessage::features() const
96 {
97   std::list<std::string> result;
98   std::map<std::string, bool>::const_iterator it = myFeatureState.begin();
99   for( ; it != myFeatureState.end(); ++it) {
100     result.push_back(it->first);
101   }
102   return result;
103 }
104 // LCOV_EXCL_STOP
105
106 ModelAPI_DocumentCreatedMessage::ModelAPI_DocumentCreatedMessage(
107   const Events_ID theID, const void* theSender)
108 : Events_Message(theID, theSender)
109 {}
110
111 ModelAPI_DocumentCreatedMessage::~ModelAPI_DocumentCreatedMessage()
112 {}
113
114 DocumentPtr ModelAPI_DocumentCreatedMessage::document() const
115 {
116   return myDocument;
117 }
118
119 void ModelAPI_DocumentCreatedMessage::setDocument(DocumentPtr theDocument)
120 {
121   myDocument = theDocument;
122 }
123
124 ModelAPI_AttributeEvalMessage::ModelAPI_AttributeEvalMessage(
125   const Events_ID theID, const void* theSender)
126 : Events_Message(theID, theSender)
127 {}
128
129 ModelAPI_AttributeEvalMessage::~ModelAPI_AttributeEvalMessage()
130 {}
131
132 AttributePtr ModelAPI_AttributeEvalMessage::attribute() const
133 {
134   return myAttribute;
135 }
136
137 void ModelAPI_AttributeEvalMessage::setAttribute(AttributePtr theAttribute)
138 {
139   myAttribute = theAttribute;
140 }
141
142 ModelAPI_ParameterEvalMessage::ModelAPI_ParameterEvalMessage(
143   const Events_ID theID, const void* theSender)
144   : Events_Message(theID, theSender), myIsProcessed(false)
145 {}
146
147 ModelAPI_ParameterEvalMessage::~ModelAPI_ParameterEvalMessage()
148 {}
149
150 FeaturePtr ModelAPI_ParameterEvalMessage::parameter() const
151 {
152   return myParam;
153 }
154
155 void ModelAPI_ParameterEvalMessage::setParameter(FeaturePtr theParam)
156 {
157   myParam = theParam;
158 }
159
160 void ModelAPI_ParameterEvalMessage::setResults(
161     const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
162     const double theResult, const std::string& theError)
163 {
164   myParamsList = theParamsList;
165   myResult = theResult;
166   myError = theError;
167   myIsProcessed = true;
168 }
169
170 bool ModelAPI_ParameterEvalMessage::isProcessed()
171 {
172   return myIsProcessed;
173 }
174
175 const std::list<std::shared_ptr<ModelAPI_ResultParameter> >&
176   ModelAPI_ParameterEvalMessage::params() const
177 {
178   return myParamsList;
179 }
180
181 const double& ModelAPI_ParameterEvalMessage::result() const
182 {
183   return myResult;
184 }
185
186 const std::string& ModelAPI_ParameterEvalMessage::error() const
187 {
188   return myError;
189 }
190
191 ModelAPI_BuildEvalMessage::ModelAPI_BuildEvalMessage(
192   const Events_ID theID, const void* theSender)
193   : Events_Message(theID, theSender), myIsProcessed(false)
194 {}
195
196 ModelAPI_BuildEvalMessage::~ModelAPI_BuildEvalMessage()
197 {}
198
199 FeaturePtr ModelAPI_BuildEvalMessage::parameter() const
200 {
201   return myParam;
202 }
203
204 void ModelAPI_BuildEvalMessage::setParameter(FeaturePtr theParam)
205 {
206   myParam = theParam;
207 }
208
209 void ModelAPI_BuildEvalMessage::setResults(
210             const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
211             const std::string& theError)
212 {
213   myParamsList = theParamsList;
214   myError = theError;
215   myIsProcessed = true;
216 }
217
218 const std::list<std::shared_ptr<ModelAPI_ResultParameter> >&
219   ModelAPI_BuildEvalMessage::params() const
220 {
221   return myParamsList;
222 }
223
224 bool ModelAPI_BuildEvalMessage::isProcessed()
225 {
226   return myIsProcessed;
227 }
228
229 const std::string& ModelAPI_BuildEvalMessage::error() const
230 {
231   return myError;
232 }
233
234 ModelAPI_ComputePositionsMessage::ModelAPI_ComputePositionsMessage(
235   const Events_ID theID, const void* theSender)
236   : Events_Message(theID, theSender)
237 {}
238
239 ModelAPI_ComputePositionsMessage::~ModelAPI_ComputePositionsMessage()
240 {}
241
242 const std::wstring& ModelAPI_ComputePositionsMessage::expression() const
243 {
244   return myExpression;
245 }
246
247 const std::wstring& ModelAPI_ComputePositionsMessage::parameter() const
248 {
249   return myParamName;
250 }
251
252 void ModelAPI_ComputePositionsMessage::set(
253   const std::wstring& theExpression, const std::wstring& theParameter)
254 {
255   myExpression = theExpression;
256   myParamName = theParameter;
257 }
258
259 void ModelAPI_ComputePositionsMessage::setPositions(
260   const std::list<std::pair<int, int> >& thePositions)
261 {
262   myPositions = thePositions;
263 }
264
265 const std::list<std::pair<int, int> >& ModelAPI_ComputePositionsMessage::positions() const
266 {
267   return myPositions;
268 }
269
270
271 ModelAPI_ObjectRenamedMessage::ModelAPI_ObjectRenamedMessage(const Events_ID theID,
272                                                              const void* theSender)
273 : Events_Message(theID, theSender)
274 {}
275
276 ModelAPI_ObjectRenamedMessage::~ModelAPI_ObjectRenamedMessage()
277 {}
278
279 void ModelAPI_ObjectRenamedMessage::send(ObjectPtr theObject,
280                                          const std::wstring& theOldName,
281                                          const std::wstring& theNewName,
282                                          const void* theSender)
283 {
284   std::shared_ptr<ModelAPI_ObjectRenamedMessage> aMessage(
285     new ModelAPI_ObjectRenamedMessage(eventId(), theSender));
286   aMessage->setObject(theObject);
287   aMessage->setOldName(theOldName);
288   aMessage->setNewName(theNewName);
289   Events_Loop::loop()->send(aMessage);
290 }
291
292 ObjectPtr ModelAPI_ObjectRenamedMessage::object() const
293 {
294   return myObject;
295 }
296
297 void ModelAPI_ObjectRenamedMessage::setObject(ObjectPtr theObject)
298 {
299   myObject = theObject;
300 }
301
302 std::wstring ModelAPI_ObjectRenamedMessage::oldName() const
303 {
304   return myOldName;
305 }
306
307 void ModelAPI_ObjectRenamedMessage::setOldName(const std::wstring& theOldName)
308 {
309   myOldName = theOldName;
310 }
311
312 std::wstring ModelAPI_ObjectRenamedMessage::newName() const
313 {
314   return myNewName;
315 }
316
317 void ModelAPI_ObjectRenamedMessage::setNewName(const std::wstring& theNewName)
318 {
319   myNewName = theNewName;
320 }
321
322 ModelAPI_ReplaceParameterMessage::ModelAPI_ReplaceParameterMessage(const Events_ID theID,
323                                                                    const void* theSender)
324 : Events_Message(theID, theSender)
325 {}
326
327 ModelAPI_ReplaceParameterMessage::~ModelAPI_ReplaceParameterMessage()
328 {}
329
330 void ModelAPI_ReplaceParameterMessage::send(ObjectPtr theObject,
331                                             const void* theSender)
332 {
333   std::shared_ptr<ModelAPI_ReplaceParameterMessage> aMessage(
334       new ModelAPI_ReplaceParameterMessage(eventId(), theSender));
335   aMessage->setObject(theObject);
336   Events_Loop::loop()->send(aMessage);
337 }
338
339 ObjectPtr ModelAPI_ReplaceParameterMessage::object() const
340 {
341   return myObject;
342 }
343
344 void ModelAPI_ReplaceParameterMessage::setObject(ObjectPtr theObject)
345 {
346   myObject = theObject;
347 }
348
349
350 // =====   ModelAPI_SolverFailedMessage   =====
351 ModelAPI_SolverFailedMessage::ModelAPI_SolverFailedMessage(const Events_ID theID,
352                                                            const void* theSender)
353   : Events_Message(theID, theSender),
354     myDOF(-1)
355 {}
356
357 ModelAPI_SolverFailedMessage::~ModelAPI_SolverFailedMessage()
358 {}
359
360 void ModelAPI_SolverFailedMessage::setObjects(const std::set<ObjectPtr>& theObjects)
361 {
362   myObjects = theObjects;
363 }
364
365 const std::set<ObjectPtr>& ModelAPI_SolverFailedMessage::objects() const
366 {
367   return myObjects;
368 }
369
370
371 // =====   ModelAPI_ObjectMovedMessage   =====
372 ModelAPI_ObjectMovedMessage::ModelAPI_ObjectMovedMessage(const void* theSender)
373   : Events_Message(Events_Loop::eventByName(EVENT_OBJECT_MOVED), theSender)
374 {}
375
376 void ModelAPI_ObjectMovedMessage::setMovedObject(const ObjectPtr& theMovedObject)
377 {
378   myMovedObject = theMovedObject;
379   myMovedAttribute = AttributePtr();
380 }
381
382 void ModelAPI_ObjectMovedMessage::setMovedAttribute(const AttributePtr& theMovedAttribute,
383                                                     const int thePointIndex)
384 {
385   myMovedAttribute = theMovedAttribute;
386   myMovedObject = ObjectPtr();
387   myMovedPointIndex = thePointIndex;
388 }
389
390 void ModelAPI_ObjectMovedMessage::setOriginalPosition(double theX, double theY)
391 {
392   myOriginalPosition = std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(theX, theY));
393 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
394   std::cout << "setOriginalPosition: " << myOriginalPosition->x() << ", "
395                                        << myOriginalPosition->y() << std::endl;
396 #endif
397 }
398
399 void ModelAPI_ObjectMovedMessage::setOriginalPosition(
400     const std::shared_ptr<GeomAPI_Pnt2d>& thePoint)
401 {
402   myOriginalPosition = thePoint;
403 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
404   std::cout << "setOriginalPosition: " << myOriginalPosition->x() << ", "
405                                        << myOriginalPosition->y() << std::endl;
406 #endif
407 }
408
409 void ModelAPI_ObjectMovedMessage::setCurrentPosition(double theX, double theY)
410 {
411   myCurrentPosition = std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(theX, theY));
412 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
413   std::cout << "setCurrentPosition: " << myCurrentPosition->x() << ", " << myCurrentPosition->y()
414             << ", myCurrentPosition - myOriginalPosition: "
415             << myCurrentPosition->x() - myOriginalPosition->x() << ", "
416             << myCurrentPosition->y() - myOriginalPosition->y() << std::endl;
417 #endif
418 }
419
420 void ModelAPI_ObjectMovedMessage::setCurrentPosition(
421     const std::shared_ptr<GeomAPI_Pnt2d>& thePoint)
422 {
423   myCurrentPosition = thePoint;
424 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
425   std::cout << "setCurrentPosition: " << myCurrentPosition->x() << ", " << myCurrentPosition->y()
426             << ", myCurrentPosition - myOriginalPosition: "
427             << myCurrentPosition->x() - myOriginalPosition->x() << ", "
428             << myCurrentPosition->y() - myOriginalPosition->y() << std::endl;
429 #endif
430 }
431
432
433 // =====   ModelAPI_ShapesFailedMessage   =====
434 ModelAPI_ShapesFailedMessage::ModelAPI_ShapesFailedMessage(const Events_ID theID,
435                                                                const void* theSender)
436   : Events_Message(theID, theSender)
437 {}
438
439 ModelAPI_ShapesFailedMessage::~ModelAPI_ShapesFailedMessage()
440 {}
441
442 void ModelAPI_ShapesFailedMessage::setShapes(const ListOfShape& theShapes)
443 {
444   myShapes = theShapes;
445 }
446
447 const ListOfShape& ModelAPI_ShapesFailedMessage::shapes() const
448 {
449   return myShapes;
450 }