Salome HOME
Merge remote-tracking branch 'remotes/origin/master' into BR_coding_rules
[modules/shaper.git] / src / Model / Model_AttributeInteger.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        Model_AttributeInteger.cpp
4 // Created:     03 sep 2014
5 // Author:      sbh
6
7 #include <Model_AttributeInteger.h>
8
9 #include <ModelAPI_Data.h>
10 #include <ModelAPI_Events.h>
11 #include <Model_Expression.h>
12 #include <ModelAPI_Object.h>
13
14 Model_AttributeInteger::Model_AttributeInteger(TDF_Label& theLabel)
15 {
16   // to the same label to support the backward compatibility
17   myExpression.reset(new Model_ExpressionInteger(theLabel));
18   myIsInitialized = myExpression->isInitialized();
19 }
20
21 void Model_AttributeInteger::reinit()
22 {
23   myExpression->reinit();
24   myIsInitialized = myExpression->isInitialized();
25 }
26
27 void Model_AttributeInteger::setCalculatedValue(const int theValue)
28 {
29   if (!myIsInitialized || value() != theValue) {
30     myExpression->setValue(theValue);
31     owner()->data()->sendAttributeUpdated(this);
32   }
33 }
34
35 void Model_AttributeInteger::setValue(const int theValue)
36 {
37   setCalculatedValue(text().empty() ? theValue : value());
38 }
39
40 int Model_AttributeInteger::value()
41 {
42   return myExpression->value();
43 }
44
45 void Model_AttributeInteger::setText(const std::string& theValue)
46 {
47   if (text() != theValue) {
48     myExpression->setText(theValue);
49     // Send it to evaluator to convert text to integer and store in the attribute
50     ModelAPI_AttributeEvalMessage::send(owner()->data()->attribute(id()), this);
51     owner()->data()->sendAttributeUpdated(this);
52   }
53 }
54
55 std::string Model_AttributeInteger::text()
56 {
57   return myExpression->text();
58 }
59
60 void Model_AttributeInteger::setExpressionInvalid(const bool theFlag)
61 {
62   myExpression->setInvalid(theFlag);
63 }
64
65 bool Model_AttributeInteger::expressionInvalid()
66 {
67   return myExpression->isInvalid();
68 }
69
70 void Model_AttributeInteger::setExpressionError(const std::string& theError)
71 {
72   if (expressionError() != theError)
73     myExpression->setError(theError);
74 }
75
76 std::string Model_AttributeInteger::expressionError()
77 {
78   return myExpression->error();
79 }
80
81 void Model_AttributeInteger::setUsedParameters(const std::set<std::string>& theUsedParameters)
82 {
83   myExpression->setUsedParameters(theUsedParameters);
84 }
85
86 std::set<std::string> Model_AttributeInteger::usedParameters() const
87 {
88   return myExpression->usedParameters();
89 }