Salome HOME
Merge branch 'CPPHighAPI'
[modules/shaper.git] / src / SketcherPrs / SketcherPrs_DimensionStyleListener.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        SketcherPrs_DimensionStyleListener.cpp
4 // Created:     31 March 2016
5 // Author:      Natalia ERMOLAEVA
6
7 #include "SketcherPrs_DimensionStyleListener.h"
8 #include "SketcherPrs_Tools.h"
9
10 #include <Events_Loop.h>
11
12 SketcherPrs_DimensionStyleListener::SketcherPrs_DimensionStyleListener()
13 {
14   Events_Loop* aLoop = Events_Loop::loop();
15   const Events_ID kDocCreatedEvent =
16                 SketcherPrs_ParameterStyleMessage::eventId();
17   aLoop->registerListener(this, kDocCreatedEvent, NULL, false);
18 }
19
20 SketcherPrs_DimensionStyleListener::~SketcherPrs_DimensionStyleListener()
21 {
22   Events_Loop* aLoop = Events_Loop::loop();
23   aLoop->removeListener(this);
24 }
25
26 void SketcherPrs_DimensionStyleListener::processEvent(const std::shared_ptr<Events_Message>& theMessage)
27 {
28   const Events_ID kParameterStyleEvent = SketcherPrs_ParameterStyleMessage::eventId();
29   if (theMessage->eventID() == kParameterStyleEvent) {
30     std::shared_ptr<SketcherPrs_ParameterStyleMessage> aMessage = std::dynamic_pointer_cast<
31                                             SketcherPrs_ParameterStyleMessage>(theMessage);
32     myStyle = aMessage->style();
33   }
34 }
35
36 void SketcherPrs_DimensionStyleListener::updateDimensions(AIS_Dimension* theDimension,
37                                         const AttributeDoublePtr& theAttributeValue)
38 {
39   if (!theDimension || !theAttributeValue.get())
40     return;
41   updateDimensions(theDimension, theAttributeValue->usedParameters().size() > 0,
42                    theAttributeValue->text());
43 }
44
45 void SketcherPrs_DimensionStyleListener::updateDimensions(AIS_Dimension* theDimension,
46                                                           const bool theHasParameters,
47                                                           const std::string& theValue)
48 {
49   if (!theDimension)
50     return;
51
52   if (theHasParameters) {
53     bool isParameterValueStyle = myStyle == SketcherPrs_ParameterStyleMessage::ParameterValue;
54     SketcherPrs_Tools::setDisplaySpecialSymbol(theDimension, isParameterValueStyle);
55     SketcherPrs_Tools::setDisplayParameter(theDimension, theValue, !isParameterValueStyle);
56   }
57   else {
58     SketcherPrs_Tools::setDisplaySpecialSymbol(theDimension, false);
59     SketcherPrs_Tools::setDisplayParameter(theDimension, theValue, false);
60   }
61 }
62