comparison Framework/Scene2DViewport/MeasureCommands.cpp @ 1020:ac88989817e3 toa2019093001

TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor + added DeleteMeasureCommand + moved the various concrete measuring tool-related classes to their pre-assigned file locations (everything was crammed into MeasureCommands.* files up to this commit) + added double-click handler to GuiAdapter (for TOA implementation of "delete measuring tool on double-click")
author Benjamin Golinvaux <bgo@osimis.io>
date Mon, 30 Sep 2019 10:41:06 +0200
parents c71ef52602a0
children 01631b65837c
comparison
equal deleted inserted replaced
1019:29f5f2031310 1020:ac88989817e3
37 GetMeasureTool()->Enable(); 37 GetMeasureTool()->Enable();
38 GetController()->AddMeasureTool(GetMeasureTool()); 38 GetController()->AddMeasureTool(GetMeasureTool());
39 } 39 }
40 40
41 CreateMeasureCommand::CreateMeasureCommand(boost::weak_ptr<ViewportController> controllerW) 41 CreateMeasureCommand::CreateMeasureCommand(boost::weak_ptr<ViewportController> controllerW)
42 : TrackerCommand(controllerW) 42 : MeasureCommand(controllerW)
43 { 43 {
44 44
45 } 45 }
46 46
47 CreateMeasureCommand::~CreateMeasureCommand() 47 CreateMeasureCommand::~CreateMeasureCommand()
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 void DeleteMeasureCommand::Redo()
54 {
55 // simply disable the measure tool upon undo
56 GetMeasureTool()->Disable();
57 GetController()->RemoveMeasureTool(GetMeasureTool());
58 }
59
60 void DeleteMeasureCommand::Undo()
61 {
62 GetMeasureTool()->Enable();
63 GetController()->AddMeasureTool(GetMeasureTool());
64 }
65
66 DeleteMeasureCommand::~DeleteMeasureCommand()
67 {
68 // deleting the command should not change the model state
69 // we thus leave it as is
70 }
71
72 DeleteMeasureCommand::DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::weak_ptr<ViewportController> controllerW)
73 : MeasureCommand(controllerW)
74 , measureTool_(measureTool)
75 , mementoOriginal_(measureTool->GetMemento())
76 , mementoModified_(measureTool->GetMemento())
77 {
78 GetMeasureTool()->Disable();
79 GetController()->RemoveMeasureTool(GetMeasureTool());
80 }
81
53 EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::weak_ptr<ViewportController> controllerW) 82 EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::weak_ptr<ViewportController> controllerW)
54 : TrackerCommand(controllerW) 83 : MeasureCommand(controllerW)
55 , mementoOriginal_(measureTool->GetMemento()) 84 , mementoOriginal_(measureTool->GetMemento())
56 , mementoModified_(measureTool->GetMemento()) 85 , mementoModified_(measureTool->GetMemento())
57 { 86 {
58 87
59 } 88 }
72 void EditMeasureCommand::Redo() 101 void EditMeasureCommand::Redo()
73 { 102 {
74 GetMeasureTool()->SetMemento(mementoModified_); 103 GetMeasureTool()->SetMemento(mementoModified_);
75 } 104 }
76 105
77 CreateLineMeasureCommand::CreateLineMeasureCommand( 106 boost::shared_ptr<ViewportController> MeasureCommand::GetController()
78 MessageBroker& broker,
79 boost::weak_ptr<ViewportController> controllerW,
80 ScenePoint2D point)
81 : CreateMeasureCommand(controllerW)
82 , measureTool_(
83 boost::make_shared<LineMeasureTool>(boost::ref(broker), controllerW))
84 {
85 GetController()->AddMeasureTool(measureTool_);
86 measureTool_->Set(point, point);
87 }
88
89 void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos)
90 {
91 measureTool_->SetEnd(scenePos);
92 }
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
117 CreateAngleMeasureCommand::CreateAngleMeasureCommand(
118 MessageBroker& broker,
119 boost::weak_ptr<ViewportController> controllerW,
120 ScenePoint2D point)
121 : CreateMeasureCommand(controllerW)
122 , measureTool_(
123 boost::make_shared<AngleMeasureTool>(boost::ref(broker), controllerW))
124 {
125 GetController()->AddMeasureTool(measureTool_);
126 measureTool_->SetSide1End(point);
127 measureTool_->SetCenter(point);
128 measureTool_->SetSide2End(point);
129 }
130
131 /** This method sets center*/
132 void CreateAngleMeasureCommand::SetCenter(ScenePoint2D scenePos)
133 {
134 measureTool_->SetCenter(scenePos);
135 }
136
137 /** This method sets end of side 2*/
138 void CreateAngleMeasureCommand::SetSide2End(ScenePoint2D scenePos)
139 {
140 measureTool_->SetSide2End(scenePos);
141 }
142
143 boost::shared_ptr<ViewportController> TrackerCommand::GetController()
144 { 107 {
145 boost::shared_ptr<ViewportController> controller = controllerW_.lock(); 108 boost::shared_ptr<ViewportController> controller = controllerW_.lock();
146 assert(controller); // accessing dead object? 109 assert(controller); // accessing dead object?
147 return controller; 110 return controller;
148 } 111 }
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
179 } 112 }