1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: SketcherPrs_DimensionStyleListener.cpp
4 // Created: 31 March 2016
5 // Author: Natalia ERMOLAEVA
7 #include "SketcherPrs_DimensionStyleListener.h"
8 #include "SketcherPrs_Tools.h"
10 #include <Events_Loop.h>
12 SketcherPrs_DimensionStyleListener::SketcherPrs_DimensionStyleListener()
14 Events_Loop* aLoop = Events_Loop::loop();
15 const Events_ID kDocCreatedEvent =
16 SketcherPrs_ParameterStyleMessage::eventId();
17 aLoop->registerListener(this, kDocCreatedEvent, NULL, false);
20 SketcherPrs_DimensionStyleListener::~SketcherPrs_DimensionStyleListener()
22 Events_Loop* aLoop = Events_Loop::loop();
23 aLoop->removeListener(this);
26 void SketcherPrs_DimensionStyleListener::processEvent(const std::shared_ptr<Events_Message>& theMessage)
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();
36 void SketcherPrs_DimensionStyleListener::updateDimensions(AIS_Dimension* theDimension,
37 const AttributeDoublePtr& theAttributeValue)
39 if (!theDimension || !theAttributeValue.get())
41 updateDimensions(theDimension, theAttributeValue->usedParameters().size() > 0,
42 theAttributeValue->text());
45 void SketcherPrs_DimensionStyleListener::updateDimensions(AIS_Dimension* theDimension,
46 const bool theHasParameters,
47 const std::string& theValue)
52 if (theHasParameters) {
53 bool isParameterValueStyle = myStyle == SketcherPrs_ParameterStyleMessage::ParameterValue;
54 SketcherPrs_Tools::setDisplaySpecialSymbol(theDimension, isParameterValueStyle);
55 SketcherPrs_Tools::setDisplayParameter(theDimension, theValue, !isParameterValueStyle);
58 SketcherPrs_Tools::setDisplaySpecialSymbol(theDimension, false);
59 SketcherPrs_Tools::setDisplayParameter(theDimension, theValue, false);