Salome HOME
6d5bebb51d407360637a5da29f8c84e87f4cfc8c
[modules/shaper.git] / src / ModelAPI / ModelAPI_Events.cpp
1 // Copyright (C) 2014-2023  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 /// Creates an empty message
192 ModelAPI_ImportParametersMessage::ModelAPI_ImportParametersMessage(const Events_ID theID,
193                                                                    const void* theSender)
194   :Events_Message(theID, theSender)
195 {
196
197 }
198
199 ModelAPI_ImportParametersMessage::~ModelAPI_ImportParametersMessage()
200 {
201 }
202
203 std::string ModelAPI_ImportParametersMessage::filename() const
204 {
205   return myFilename;
206 }
207
208 void ModelAPI_ImportParametersMessage::setFilename(std::string theFilename)
209 {
210   myFilename = theFilename;
211 }
212
213 ModelAPI_BuildEvalMessage::ModelAPI_BuildEvalMessage(
214   const Events_ID theID, const void* theSender)
215   : Events_Message(theID, theSender), myIsProcessed(false)
216 {}
217
218 ModelAPI_BuildEvalMessage::~ModelAPI_BuildEvalMessage()
219 {}
220
221 FeaturePtr ModelAPI_BuildEvalMessage::parameter() const
222 {
223   return myParam;
224 }
225
226 void ModelAPI_BuildEvalMessage::setParameter(FeaturePtr theParam)
227 {
228   myParam = theParam;
229 }
230
231 void ModelAPI_BuildEvalMessage::setResults(
232             const std::list<std::shared_ptr<ModelAPI_ResultParameter> >& theParamsList,
233             const std::string& theError)
234 {
235   myParamsList = theParamsList;
236   myError = theError;
237   myIsProcessed = true;
238 }
239
240 const std::list<std::shared_ptr<ModelAPI_ResultParameter> >&
241   ModelAPI_BuildEvalMessage::params() const
242 {
243   return myParamsList;
244 }
245
246 bool ModelAPI_BuildEvalMessage::isProcessed()
247 {
248   return myIsProcessed;
249 }
250
251 const std::string& ModelAPI_BuildEvalMessage::error() const
252 {
253   return myError;
254 }
255
256 ModelAPI_ComputePositionsMessage::ModelAPI_ComputePositionsMessage(
257   const Events_ID theID, const void* theSender)
258   : Events_Message(theID, theSender)
259 {}
260
261 ModelAPI_ComputePositionsMessage::~ModelAPI_ComputePositionsMessage()
262 {}
263
264 const std::wstring& ModelAPI_ComputePositionsMessage::expression() const
265 {
266   return myExpression;
267 }
268
269 const std::wstring& ModelAPI_ComputePositionsMessage::parameter() const
270 {
271   return myParamName;
272 }
273
274 void ModelAPI_ComputePositionsMessage::set(
275   const std::wstring& theExpression, const std::wstring& theParameter)
276 {
277   myExpression = theExpression;
278   myParamName = theParameter;
279 }
280
281 void ModelAPI_ComputePositionsMessage::setPositions(
282   const std::list<std::pair<int, int> >& thePositions)
283 {
284   myPositions = thePositions;
285 }
286
287 const std::list<std::pair<int, int> >& ModelAPI_ComputePositionsMessage::positions() const
288 {
289   return myPositions;
290 }
291
292
293 ModelAPI_ObjectRenamedMessage::ModelAPI_ObjectRenamedMessage(const Events_ID theID,
294                                                              const void* theSender)
295 : Events_Message(theID, theSender)
296 {}
297
298 ModelAPI_ObjectRenamedMessage::~ModelAPI_ObjectRenamedMessage()
299 {}
300
301 void ModelAPI_ObjectRenamedMessage::send(ObjectPtr theObject,
302                                          const std::wstring& theOldName,
303                                          const std::wstring& theNewName,
304                                          const void* theSender)
305 {
306   std::shared_ptr<ModelAPI_ObjectRenamedMessage> aMessage(
307     new ModelAPI_ObjectRenamedMessage(eventId(), theSender));
308   aMessage->setObject(theObject);
309   aMessage->setOldName(theOldName);
310   aMessage->setNewName(theNewName);
311   Events_Loop::loop()->send(aMessage);
312 }
313
314 ObjectPtr ModelAPI_ObjectRenamedMessage::object() const
315 {
316   return myObject;
317 }
318
319 void ModelAPI_ObjectRenamedMessage::setObject(ObjectPtr theObject)
320 {
321   myObject = theObject;
322 }
323
324 std::wstring ModelAPI_ObjectRenamedMessage::oldName() const
325 {
326   return myOldName;
327 }
328
329 void ModelAPI_ObjectRenamedMessage::setOldName(const std::wstring& theOldName)
330 {
331   myOldName = theOldName;
332 }
333
334 std::wstring ModelAPI_ObjectRenamedMessage::newName() const
335 {
336   return myNewName;
337 }
338
339 void ModelAPI_ObjectRenamedMessage::setNewName(const std::wstring& theNewName)
340 {
341   myNewName = theNewName;
342 }
343
344 ModelAPI_ReplaceParameterMessage::ModelAPI_ReplaceParameterMessage(const Events_ID theID,
345                                                                    const void* theSender)
346 : Events_Message(theID, theSender)
347 {}
348
349 ModelAPI_ReplaceParameterMessage::~ModelAPI_ReplaceParameterMessage()
350 {}
351
352 void ModelAPI_ReplaceParameterMessage::send(ObjectPtr theObject,
353                                             const void* theSender)
354 {
355   std::shared_ptr<ModelAPI_ReplaceParameterMessage> aMessage(
356       new ModelAPI_ReplaceParameterMessage(eventId(), theSender));
357   aMessage->setObject(theObject);
358   Events_Loop::loop()->send(aMessage);
359 }
360
361 ObjectPtr ModelAPI_ReplaceParameterMessage::object() const
362 {
363   return myObject;
364 }
365
366 void ModelAPI_ReplaceParameterMessage::setObject(ObjectPtr theObject)
367 {
368   myObject = theObject;
369 }
370
371
372 // =====   ModelAPI_SolverFailedMessage   =====
373 ModelAPI_SolverFailedMessage::ModelAPI_SolverFailedMessage(const Events_ID theID,
374                                                            const void* theSender)
375   : Events_Message(theID, theSender),
376     myDOF(-1)
377 {}
378
379 ModelAPI_SolverFailedMessage::~ModelAPI_SolverFailedMessage()
380 {}
381
382 void ModelAPI_SolverFailedMessage::setObjects(const std::set<ObjectPtr>& theObjects)
383 {
384   myObjects = theObjects;
385 }
386
387 const std::set<ObjectPtr>& ModelAPI_SolverFailedMessage::objects() const
388 {
389   return myObjects;
390 }
391
392
393 // =====   ModelAPI_ObjectMovedMessage   =====
394 ModelAPI_ObjectMovedMessage::ModelAPI_ObjectMovedMessage(const void* theSender)
395   : Events_Message(Events_Loop::eventByName(EVENT_OBJECT_MOVED), theSender)
396 {}
397
398 void ModelAPI_ObjectMovedMessage::setMovedObject(const ObjectPtr& theMovedObject)
399 {
400   myMovedObject = theMovedObject;
401   myMovedAttribute = AttributePtr();
402 }
403
404 void ModelAPI_ObjectMovedMessage::setMovedAttribute(const AttributePtr& theMovedAttribute,
405                                                     const int thePointIndex)
406 {
407   myMovedAttribute = theMovedAttribute;
408   myMovedObject = ObjectPtr();
409   myMovedPointIndex = thePointIndex;
410 }
411
412 void ModelAPI_ObjectMovedMessage::setOriginalPosition(double theX, double theY)
413 {
414   myOriginalPosition = std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(theX, theY));
415 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
416   std::cout << "setOriginalPosition: " << myOriginalPosition->x() << ", "
417                                        << myOriginalPosition->y() << std::endl;
418 #endif
419 }
420
421 void ModelAPI_ObjectMovedMessage::setOriginalPosition(
422     const std::shared_ptr<GeomAPI_Pnt2d>& thePoint)
423 {
424   myOriginalPosition = thePoint;
425 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
426   std::cout << "setOriginalPosition: " << myOriginalPosition->x() << ", "
427                                        << myOriginalPosition->y() << std::endl;
428 #endif
429 }
430
431 void ModelAPI_ObjectMovedMessage::setCurrentPosition(double theX, double theY)
432 {
433   myCurrentPosition = std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(theX, theY));
434 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
435   std::cout << "setCurrentPosition: " << myCurrentPosition->x() << ", " << myCurrentPosition->y()
436             << ", myCurrentPosition - myOriginalPosition: "
437             << myCurrentPosition->x() - myOriginalPosition->x() << ", "
438             << myCurrentPosition->y() - myOriginalPosition->y() << std::endl;
439 #endif
440 }
441
442 void ModelAPI_ObjectMovedMessage::setCurrentPosition(
443     const std::shared_ptr<GeomAPI_Pnt2d>& thePoint)
444 {
445   myCurrentPosition = thePoint;
446 #ifdef DEBUG_OBJECT_MOVED_MESSAGE
447   std::cout << "setCurrentPosition: " << myCurrentPosition->x() << ", " << myCurrentPosition->y()
448             << ", myCurrentPosition - myOriginalPosition: "
449             << myCurrentPosition->x() - myOriginalPosition->x() << ", "
450             << myCurrentPosition->y() - myOriginalPosition->y() << std::endl;
451 #endif
452 }
453
454
455 // =====   ModelAPI_ShapesFailedMessage   =====
456 ModelAPI_ShapesFailedMessage::ModelAPI_ShapesFailedMessage(const Events_ID theID,
457                                                                const void* theSender)
458   : Events_Message(theID, theSender)
459 {}
460
461 ModelAPI_ShapesFailedMessage::~ModelAPI_ShapesFailedMessage()
462 {}
463
464 void ModelAPI_ShapesFailedMessage::setShapes(const ListOfShape& theShapes)
465 {
466   myShapes = theShapes;
467 }
468
469 const ListOfShape& ModelAPI_ShapesFailedMessage::shapes() const
470 {
471   return myShapes;
472 }
473
474 /// Creates an empty message
475 ModelAPI_CheckConstraintsMessage::ModelAPI_CheckConstraintsMessage(
476   const Events_ID theID, const void* theSender)
477   :Events_Message(theID, theSender)
478 {
479 }
480
481 ModelAPI_CheckConstraintsMessage::~ModelAPI_CheckConstraintsMessage()
482 {
483 }
484
485 const std::set<ObjectPtr>& ModelAPI_CheckConstraintsMessage::constraints() const
486 {
487   return myConstraints;
488 }
489
490 void ModelAPI_CheckConstraintsMessage::setConstraints(const std::set<ObjectPtr>& theConstraints)
491 {
492   myConstraints = theConstraints;
493 }
494
495
496 // =====   ModelAPI_FeaturesLicenseValidMessage   =====
497 ModelAPI_FeaturesLicenseValidMessage::ModelAPI_FeaturesLicenseValidMessage(
498     const Events_ID theID, const void* theSender)
499   : Events_Message(theID, theSender)
500 {}
501
502 ModelAPI_FeaturesLicenseValidMessage::~ModelAPI_FeaturesLicenseValidMessage()
503 {}
504
505 void ModelAPI_FeaturesLicenseValidMessage::setFeatures(const std::set<std::string>& theFeatures)
506 {
507   myFeatures = theFeatures;
508 }
509
510 const std::set<std::string>& ModelAPI_FeaturesLicenseValidMessage::features() const
511 {
512   return myFeatures;
513 }