comparison Framework/Scene2DViewport/MeasureCommands.cpp @ 866:c71ef52602a0 toa2019062501

Added the ability to edit existing measuring tools (demo not updated yet)
author Benjamin Golinvaux <bgo@osimis.io>
date Tue, 25 Jun 2019 17:54:46 +0200
parents e42b491f1fb2
children ac88989817e3
comparison
equal deleted inserted replaced
865:a29c13497557 866:c71ef52602a0
48 { 48 {
49 // deleting the command should not change the model state 49 // deleting the command should not change the model state
50 // we thus leave it as is 50 // we thus leave it as is
51 } 51 }
52 52
53 EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::weak_ptr<ViewportController> controllerW)
54 : TrackerCommand(controllerW)
55 , mementoOriginal_(measureTool->GetMemento())
56 , mementoModified_(measureTool->GetMemento())
57 {
58
59 }
60
61 EditMeasureCommand::~EditMeasureCommand()
62 {
63
64 }
65
66 void EditMeasureCommand::Undo()
67 {
68 // simply disable the measure tool upon undo
69 GetMeasureTool()->SetMemento(mementoOriginal_);
70 }
71
72 void EditMeasureCommand::Redo()
73 {
74 GetMeasureTool()->SetMemento(mementoModified_);
75 }
76
53 CreateLineMeasureCommand::CreateLineMeasureCommand( 77 CreateLineMeasureCommand::CreateLineMeasureCommand(
54 MessageBroker& broker, 78 MessageBroker& broker,
55 boost::weak_ptr<ViewportController> controllerW, 79 boost::weak_ptr<ViewportController> controllerW,
56 ScenePoint2D point) 80 ScenePoint2D point)
57 : CreateMeasureCommand(controllerW) 81 : CreateMeasureCommand(controllerW)
65 void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos) 89 void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos)
66 { 90 {
67 measureTool_->SetEnd(scenePos); 91 measureTool_->SetEnd(scenePos);
68 } 92 }
69 93
94 EditLineMeasureCommand::EditLineMeasureCommand(
95 boost::shared_ptr<LineMeasureTool> measureTool,
96 MessageBroker& broker,
97 boost::weak_ptr<ViewportController> controllerW)
98 : EditMeasureCommand(measureTool,controllerW)
99 , measureTool_(measureTool)
100 {
101 }
102
103
104 void EditLineMeasureCommand::SetStart(ScenePoint2D scenePos)
105 {
106 measureTool_->SetStart(scenePos);
107 mementoModified_ = measureTool_->GetMemento();
108 }
109
110
111 void EditLineMeasureCommand::SetEnd(ScenePoint2D scenePos)
112 {
113 measureTool_->SetEnd(scenePos);
114 mementoModified_ = measureTool_->GetMemento();
115 }
116
70 CreateAngleMeasureCommand::CreateAngleMeasureCommand( 117 CreateAngleMeasureCommand::CreateAngleMeasureCommand(
71 MessageBroker& broker, 118 MessageBroker& broker,
72 boost::weak_ptr<ViewportController> controllerW, 119 boost::weak_ptr<ViewportController> controllerW,
73 ScenePoint2D point) 120 ScenePoint2D point)
74 : CreateMeasureCommand(controllerW) 121 : CreateMeasureCommand(controllerW)
97 { 144 {
98 boost::shared_ptr<ViewportController> controller = controllerW_.lock(); 145 boost::shared_ptr<ViewportController> controller = controllerW_.lock();
99 assert(controller); // accessing dead object? 146 assert(controller); // accessing dead object?
100 return controller; 147 return controller;
101 } 148 }
149
150 EditAngleMeasureCommand::EditAngleMeasureCommand(
151 boost::shared_ptr<AngleMeasureTool> measureTool,
152 MessageBroker& broker,
153 boost::weak_ptr<ViewportController> controllerW)
154 : EditMeasureCommand(measureTool, controllerW)
155 , measureTool_(measureTool)
156 {
157 }
158
159 void EditAngleMeasureCommand::SetCenter(ScenePoint2D scenePos)
160 {
161 measureTool_->SetCenter(scenePos);
162 mementoModified_ = measureTool_->GetMemento();
163 }
164
165
166 void EditAngleMeasureCommand::SetSide1End(ScenePoint2D scenePos)
167 {
168 measureTool_->SetSide1End(scenePos);
169 mementoModified_ = measureTool_->GetMemento();
170 }
171
172
173 void EditAngleMeasureCommand::SetSide2End(ScenePoint2D scenePos)
174 {
175 measureTool_->SetSide2End(scenePos);
176 mementoModified_ = measureTool_->GetMemento();
177 }
178
102 } 179 }