Salome HOME
Issue #805 In the sketch presentation, show both the parameter and its value: minor...
[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_Error.h>
11 #include <Events_Loop.h>
12
13 SketcherPrs_DimensionStyleListener::SketcherPrs_DimensionStyleListener()
14 {
15   Events_Loop* aLoop = Events_Loop::loop();
16   const Events_ID kDocCreatedEvent =
17                 SketcherPrs_ParameterStyleMessage::eventId();
18   aLoop->registerListener(this, kDocCreatedEvent, NULL, false);
19 }
20
21 SketcherPrs_DimensionStyleListener::~SketcherPrs_DimensionStyleListener()
22 {
23   Events_Loop* aLoop = Events_Loop::loop();
24   aLoop->removeListener(this);
25 }
26
27 void SketcherPrs_DimensionStyleListener::processEvent(const std::shared_ptr<Events_Message>& theMessage)
28 {
29   const Events_ID kParameterStyleEvent = SketcherPrs_ParameterStyleMessage::eventId();
30   if (theMessage->eventID() == kParameterStyleEvent) {
31     std::shared_ptr<SketcherPrs_ParameterStyleMessage> aMessage = std::dynamic_pointer_cast<
32                                             SketcherPrs_ParameterStyleMessage>(theMessage);
33     myStyle = aMessage->style();
34   }
35 }
36
37 void SketcherPrs_DimensionStyleListener::updateDimensions(AIS_Dimension* theDimension,
38                                         const AttributeDoublePtr& theAttributeValue)
39 {
40   if (!theDimension || !theAttributeValue.get())
41     return;
42
43   bool aHasParameters = theAttributeValue->usedParameters().size() > 0;
44   if (aHasParameters) {
45     bool isParameterValueStyle = myStyle == SketcherPrs_ParameterStyleMessage::ParameterValue;
46     SketcherPrs_Tools::setDisplaySpecialSymbol(theDimension, isParameterValueStyle);
47     SketcherPrs_Tools::setDisplayParameter(theDimension, theAttributeValue->text(), !isParameterValueStyle);
48   }
49   else {
50     SketcherPrs_Tools::setDisplaySpecialSymbol(theDimension, false);
51     SketcherPrs_Tools::setDisplayParameter(theDimension, theAttributeValue->text(), false);
52   }
53 }