4 #include <wx/filedlg.h>
6 #include <wx/notebook.h>
9 #include <vtkStaticPointLocator.h>
10 #include <vtkPointData.h>
11 #include <vtkDataArray.h>
13 #include <vtkPoints.h>
15 #include "vtkSphereSource.h"
16 #include "vtkRenderer.h"
17 #include "vtkTextActor3D.h"
19 #include "WidgetShowNPoints.h"
20 #include <creaContoursFactory.h>
23 //----------------------------------------------------------------------
24 //----------------------------------------------------------------------
25 //----------------------------------------------------------------------
26 //----------------------------------------------------------------------
27 //----------------------------------------------------------------------
28 WidgetShowNPoints::WidgetShowNPoints(wxWindow *parent, int type)
29 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
32 aux_mesh_spc.push_back(1);
33 aux_mesh_spc.push_back(1);
34 aux_mesh_spc.push_back(1);
35 aux_mesh_type = 0; // 0:Patch 1:CloseSpline1 2:CloseSpline2
38 // mmodelShowNPoints = new ModelShowNPoints();
42 char * val = getenv( "TEMP" );
45 UndoRedoDir = std::string("");
47 UndoRedoDir = std::string(val)+"\\creatools";
48 std::string cmd1 = "mkdir "+ UndoRedoDir;
49 system( cmd1.c_str() );
50 // Erasing files of more than 1 day old ( -1 )
51 std::string cmd2 = "ForFiles /p \"" + UndoRedoDir + "\" /s /d -1 /c \"cmd /c del @file \"";
52 system( cmd2.c_str() );
54 #elif defined(__GNUC__)
58 UndoRedoDir = "/tmp/creatools";
60 UndoRedoDir = "/tmp/creatools";
63 std::string cmd1 = "mkdir "+ UndoRedoDir;
64 system( cmd1.c_str() );
65 // Erasing files of more than 1 day old ( +1 )
66 std::string cmd= "find "+UndoRedoDir+" -name \"UndoRedo_collection_*.undoredo\" -type f -mtime +1 -delete";
67 system( cmd.c_str() );
74 mActualCollection = 0;
75 ModelShowNPoints* modelShowNPoints = new ModelShowNPoints();
76 lstModelShowNPoints.push_back( modelShowNPoints );
77 lstViewShowNPoints.push_back( new ViewShowNPoints( modelShowNPoints ) );
81 wxPanel* panelParent = this;
82 wxSizer* sizer = NULL;
83 wxSizer* MNPsizer = NULL;
84 wxNotebook* bookSetPoints = NULL;
85 wxNotebook* bookGroupManager = NULL;
86 wxPanel* panel = NULL;
87 wxPanel* panel2 = NULL;
88 txtNrCollections = NULL;
90 cbVisuActualCollection = NULL;
91 bookSetPoints = new wxNotebook(panelParent, -1, wxDefaultPosition, wxDefaultSize, wxNB_TOP );
92 panel = new wxPanel(bookSetPoints);
94 wxSize sizeButton( 50 , -1 );
95 wxSize sizeSlider( 90 , -1 );
100 bookGroupManager = new wxNotebook(panelParent, //bbGetWxParent(),
105 panel2 = new wxPanel(bookGroupManager);
106 cbVisuActualCollection = new wxCheckBox ( panel2,-1, _T("Cur.") , wxDefaultPosition, sizeButton );
107 txtNrCollections = new wxStaticText ( panel2,-1, _T(" 1/1 "));
108 wxButton *btnBackCollection = new wxButton ( panel2, -1, _T("<") , wxDefaultPosition, sizeButton );
109 wxButton *btnNextCollection = new wxButton ( panel2, -1, _T(">") , wxDefaultPosition, sizeButton );
110 wxButton *btnInsertCollectionBefore = new wxButton ( panel2, -1, _T("+<") , wxDefaultPosition, sizeButton );
111 wxButton *btnInsertCollectionAfter = new wxButton ( panel2, -1, _T("+>") , wxDefaultPosition, sizeButton );
112 wxButton *btnDeleteCollection = new wxButton ( panel2, -1, _T("-") , wxDefaultPosition, sizeButton );
113 wxButton *btnResetCollection = new wxButton ( panel2, -1, _T("--") , wxDefaultPosition, sizeButton );
114 wxButton *btnSaveCollection = new wxButton ( panel2, -1, _T("Save") , wxDefaultPosition, sizeButton );
115 wxButton *btnLoadCollection = new wxButton ( panel2, -1, _T("Load") , wxDefaultPosition, sizeButton );
116 wxButton *btnUndo = new wxButton ( panel2, -1, _T("Undo") , wxDefaultPosition, sizeButton );
117 wxButton *btnRedo = new wxButton ( panel2, -1, _T("Redo") , wxDefaultPosition, sizeButton );
119 sCtrlRadio = new wxSpinCtrl( panel2, -1 , wxEmptyString, wxDefaultPosition, sizeButton );
120 sCtrlRadio->SetRange(1,10);
121 sCtrlRadio->SetValue( 6 );
122 sCtrlOpacity= new wxSpinCtrl( panel2, -1 , wxEmptyString, wxDefaultPosition, sizeButton );
123 sCtrlOpacity->SetRange(0,10);
124 sCtrlOpacity->SetValue( 10 );
126 wxFlexGridSizer *sizer1 = new wxFlexGridSizer(1);
127 wxFlexGridSizer *sizer2 = new wxFlexGridSizer(2);
128 wxFlexGridSizer *sizer3 = new wxFlexGridSizer(3);
129 wxFlexGridSizer *sizer4 = new wxFlexGridSizer(3);
130 wxFlexGridSizer *sizer5 = new wxFlexGridSizer(2);
131 wxFlexGridSizer *sizer5a = new wxFlexGridSizer(2);
132 wxFlexGridSizer *sizer6 = new wxFlexGridSizer(2);
133 wxFlexGridSizer *sizer7 = new wxFlexGridSizer(2);
134 wxFlexGridSizer *sizer8 = new wxFlexGridSizer(2);
136 cbVisuActualCollection -> SetToolTip( _T("Current group") );
137 btnInsertCollectionBefore -> SetToolTip( _T("+ Add group before") );
138 btnInsertCollectionAfter -> SetToolTip( _T("+> Add group after") );
139 btnDeleteCollection -> SetToolTip( _T("- Erase group") );
140 btnResetCollection -> SetToolTip( _T("-- Reset : Erase all groups") );
141 sCtrlRadio -> SetToolTip( _T("Radio") );
142 sCtrlOpacity -> SetToolTip( _T("Opacity") );
144 // sdrOpacity = new wxSlider(panel2, -1, 0, 0, 100, wxDefaultPosition, sizeSlider, wxSL_LABELS);
145 // sdrRadio = new wxSlider(panel2, -1, 0, 1, 50, wxDefaultPosition, sizeSlider, wxSL_LABELS);
146 // sdrRadio -> SetToolTip( _T("Radio") );
147 // sdrOpacity -> SetToolTip( _T("Opacity") );
149 Connect(cbVisuActualCollection->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) & WidgetShowNPoints::OnVisuActualCollection );
150 Connect(btnBackCollection->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) & WidgetShowNPoints::OnBackCollection );
151 Connect(btnNextCollection->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) & WidgetShowNPoints::OnNextCollection );
152 Connect(btnInsertCollectionBefore->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) & WidgetShowNPoints::OnInsertCollectionBefore );
153 Connect(btnInsertCollectionAfter->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) & WidgetShowNPoints::OnInsertCollectionAfter );
154 Connect(btnDeleteCollection->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) & WidgetShowNPoints::OnDeleteCollection );
156 // Connect(sdrOpacity->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) & WidgetShowNPoints::UpdatePoints );
157 // Connect(sdrRadio->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) & WidgetShowNPoints::UpdatePoints );
158 Connect( sCtrlRadio->GetId() ,wxEVT_COMMAND_SPINCTRL_UPDATED ,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &WidgetShowNPoints::UpdatePoints);
159 Connect( sCtrlOpacity->GetId() ,wxEVT_COMMAND_SPINCTRL_UPDATED ,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &WidgetShowNPoints::UpdatePoints);
161 Connect(btnSaveCollection->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) & WidgetShowNPoints::OnSaveCollections );
162 Connect(btnLoadCollection->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) & WidgetShowNPoints::OnLoadCollections );
163 Connect(btnResetCollection->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) & WidgetShowNPoints::OnResetCollections );
164 Connect(btnUndo->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnUndo );
165 Connect(btnRedo->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnRedo );
167 sizer2->Add( btnBackCollection );
168 sizer2->Add( btnNextCollection );
169 sizer3->Add( btnInsertCollectionBefore );
170 sizer3->Add( btnInsertCollectionAfter );
171 sizer4->Add( btnLoadCollection );
172 sizer4->Add( btnSaveCollection );
173 // sizer5->Add( txRadio ,wxGROW );
174 // sizer5->Add( sdrRadio ,wxGROW );
175 // sizer5->Add( txOpacity ,wxGROW );
176 // sizer5->Add( sdrOpacity ,wxGROW );
178 sizer5->Add( sCtrlRadio );
179 sizer5->Add( sCtrlOpacity );
181 sizer6->Add( btnDeleteCollection );
182 sizer6->Add( btnResetCollection );
184 sizer7->Add( cbVisuActualCollection );
185 sizer7->Add( txtNrCollections );
187 sizer8->Add( btnUndo );
188 sizer8->Add( btnRedo );
190 sizer1->Add( sizer7 );
191 sizer1->Add( sizer2 );
192 sizer1->Add( sizer3 );
193 sizer1->Add( sizer6 );
194 sizer1->Add( sizer4 );
195 sizer1->Add( sizer5 );
196 sizer1->Add( sizer8 );
198 // sizer1->Add( sizer5 ,wxGROW );
201 panel2->SetSizer( MNPsizer );
202 panel2->SetAutoLayout(true);
204 bookGroupManager->AddPage(panel2 , _T("Groups") );
207 if ( (mtype==0) || (mtype==3) || (mtype==4) )
210 // askPointLabel = new wxStaticText(panel, -1, _T("Label:")); // JPR
211 textCtrl = new wxTextCtrl(panel, -1, wxEmptyString , wxDefaultPosition, sizeButton);
212 wxButton *btnBackPoint = new wxButton( panel, -1, _T("<") , wxDefaultPosition, sizeButton );
213 wxButton *btnNextPoint = new wxButton( panel, -1, _T(">") , wxDefaultPosition, sizeButton );
214 wxButton *btnAddPoint = new wxButton( panel, -1, _T("+") , wxDefaultPosition, sizeButton );
215 wxButton *btnInsertPoint = new wxButton( panel, -1, _T("(+)") , wxDefaultPosition, sizeButton );
216 cbAutoAddPoints = new wxCheckBox(panel,-1, _T("Auto") , wxDefaultPosition, sizeButton );
217 wxButton *btnMovePointUp = new wxButton( panel, -1, _T("<-") , wxDefaultPosition, sizeButton );
218 wxButton *btnMovePointDown = new wxButton( panel, -1, _T("->") , wxDefaultPosition, sizeButton );
219 wxButton *btnSetPositionPoint = new wxButton( panel, -1, _T("Set") , wxDefaultPosition, sizeButton );
220 cbTrackPoint = new wxCheckBox(panel,-1, _T("Tra.") , wxDefaultPosition, sizeButton );
221 wxButton *btnRenamePoint = new wxButton( panel, -1, _T("Ren.") , wxDefaultPosition, sizeButton );
222 wxButton *btnErasePoint = new wxButton( panel, -1, _T("-") , wxDefaultPosition, sizeButton );
223 // wxButton *btnEraseLastPoint = new wxButton( panel, -1, _T("- lst") , wxDefaultPosition, sizeButton );
224 wxButton *btnDeleteAllPoints = new wxButton( panel, -1, _T("--") , wxDefaultPosition, sizeButton );
225 wxButton *btnUndo = NULL;
226 wxButton *btnRedo = NULL;
227 wxButton *btnSavePoints = NULL;
228 wxButton *btnLoadPoints = NULL;
229 btnBackPoint -> SetToolTip( _T("Select befor point") );
230 btnNextPoint -> SetToolTip( _T("Select next point") );
231 cbAutoAddPoints -> SetToolTip( _T("Auto Add point") );
232 btnAddPoint -> SetToolTip( _T("+ Add point") );
233 btnInsertPoint -> SetToolTip( _T("(+) Insert point") );
234 btnMovePointUp -> SetToolTip( _T("Move point Up in the normal direction") );
235 btnMovePointDown -> SetToolTip( _T("Move point Down in the normal direction") );
236 btnRenamePoint -> SetToolTip( _T("Rename label for each point") );
237 textCtrl -> SetToolTip( _T("Point label") );
238 btnErasePoint -> SetToolTip( _T("- Erase point") );
239 // btnEraseLastPoint -> SetToolTip( _T("- lst Erase last point") );
240 btnDeleteAllPoints -> SetToolTip( _T("-- Erase all points") );
243 btnUndo = new wxButton( panel, -1, _T("Undo") , wxDefaultPosition, sizeButton );
244 btnRedo = new wxButton( panel, -1, _T("Redo") , wxDefaultPosition, sizeButton );
245 btnSavePoints = new wxButton( panel, -1, _T("Save") , wxDefaultPosition, sizeButton );
246 btnLoadPoints = new wxButton( panel, -1, _T("Load") , wxDefaultPosition, sizeButton );
247 Connect(btnSavePoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnSavePoints );
248 Connect(btnLoadPoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnLoadPoints );
249 Connect(btnUndo->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnUndo );
250 Connect(btnRedo->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnRedo );
252 txtNrPoints = new wxStaticText(panel,-1, _T(" -/-"));
253 wxStaticText* txOpacity;
254 wxStaticText* txRadio;
255 if ( (mtype==0) || (mtype==3) )
257 //NTU: Sliders for opacity and radio change
258 // txOpacity = new wxStaticText(panel, -1, wxString(_T(" Points Opacity ")));
259 // sdrOpacity = new wxSlider(panel, -1, 0, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
260 // txRadio = new wxStaticText(panel, -1, wxString(_T(" Points Radius ")));
261 // sdrRadio = new wxSlider(panel, -1, 0, 1, 50, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
262 // //NTU: Slider events
263 // Connect(sdrOpacity->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &WidgetShowNPoints::UpdatePoints);
264 // Connect(sdrRadio->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &WidgetShowNPoints::UpdatePoints);
266 sCtrlRadio = new wxSpinCtrl( panel, -1 , wxEmptyString, wxDefaultPosition, sizeButton );
267 sCtrlRadio->SetRange(1,10);
268 sCtrlRadio->SetValue( 6 );
269 sCtrlOpacity= new wxSpinCtrl( panel, -1 , wxEmptyString, wxDefaultPosition, sizeButton );
270 sCtrlOpacity->SetRange(0,10);
271 sCtrlOpacity->SetValue( 10 );
272 Connect( sCtrlRadio->GetId() ,wxEVT_COMMAND_SPINCTRL_UPDATED,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &WidgetShowNPoints::UpdatePoints);
273 Connect( sCtrlOpacity->GetId() ,wxEVT_COMMAND_SPINCTRL_UPDATED,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &WidgetShowNPoints::UpdatePoints);
277 Connect(cbAutoAddPoints->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &WidgetShowNPoints::OnAutoAddPoints );
278 Connect(btnBackPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnBackPoint );
279 Connect(btnNextPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnNextPoint );
280 Connect(btnAddPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnAddPoint );
281 Connect(btnInsertPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnInsertPoint );
282 Connect(btnMovePointUp->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnMovePointUp );
283 Connect(btnMovePointDown->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnMovePointDown );
284 Connect(btnSetPositionPoint->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnSetPoint );
285 Connect(btnRenamePoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnRenamePoint );
286 // Connect(btnEraseLastPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnEraseLastPoint );
287 Connect(btnErasePoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnErasePoint );
288 Connect(btnDeleteAllPoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnDeleteAllPoints );
289 Connect(cbTrackPoint->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &WidgetShowNPoints::OnTrackPoint );
290 wxFlexGridSizer *sizer0 = new wxFlexGridSizer(1);
291 wxFlexGridSizer *sizer1 = new wxFlexGridSizer(2);
292 wxFlexGridSizer *sizer2 = new wxFlexGridSizer(3);
293 wxFlexGridSizer *sizer3 = new wxFlexGridSizer(2);
294 wxFlexGridSizer *sizer4 = new wxFlexGridSizer(3);
295 // wxFlexGridSizer *sizer5 = new wxFlexGridSizer(2);
296 wxFlexGridSizer *sizer6 = new wxFlexGridSizer(2);
297 wxFlexGridSizer *sizer7 = new wxFlexGridSizer(2);
298 wxFlexGridSizer *sizer8 = new wxFlexGridSizer(2);
299 sizer1->Add( textCtrl );
300 sizer1->Add( btnRenamePoint );
301 sizer2->Add( btnAddPoint );
302 sizer2->Add( btnInsertPoint );
303 // sizer2->Add( cbAutoAddPoints );
304 sizer3->Add( btnSetPositionPoint );
305 sizer3->Add( cbTrackPoint );
306 sizer4->Add( btnErasePoint );
307 // sizer4->Add( btnEraseLastPoint );
308 sizer4->Add( btnDeleteAllPoints );
309 // sizer5->Add( btnUndo );
310 // sizer5->Add( btnRedo );
311 sizer6->Add( btnBackPoint );
312 sizer6->Add( btnNextPoint );
313 sizer7->Add( btnMovePointUp );
314 sizer7->Add( btnMovePointDown );
315 sizer8->Add( cbAutoAddPoints );
316 sizer8->Add( txtNrPoints );
317 // sizer0->Add(askPointLabel); // JPR
325 // sizer0->Add(sizer5);
326 if ( (mtype==0) || (mtype==3) )
328 wxFlexGridSizer *sizer5 = new wxFlexGridSizer(2);
329 // sizer5->Add(txRadio);
330 // sizer5->Add(sdrRadio,1,wxGROW );
331 // sizer5->Add(txOpacity);
332 // sizer5->Add(sdrOpacity,1,wxGROW );
333 sizer5->Add( sCtrlRadio );
334 sizer5->Add( sCtrlOpacity );
339 wxFlexGridSizer *sizer5 = new wxFlexGridSizer(2);
340 wxFlexGridSizer *sizer6 = new wxFlexGridSizer(2);
341 sizer6->Add( btnSavePoints );
342 sizer6->Add( btnLoadPoints );
343 sizer5->Add( btnUndo );
344 sizer5->Add( btnRedo );
345 sizer0->Add( sizer6 );
346 sizer0->Add( sizer5 );
354 wxButton *btnSetPositionPoint = new wxButton( panel, -1, _T("Set nearest point"));
355 txtNrPoints = new wxStaticText(panel,-1, _T("-/-"));
357 //NTU: Sliders for opacity and radio change
358 // sdrRadio = new wxSlider(panel, -1, 0, 1, 50, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
359 // sdrOpacity = new wxSlider(panel, -1, 0, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
360 // Connect(sdrOpacity->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &WidgetShowNPoints::UpdatePoints);
361 // Connect(sdrRadio->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &WidgetShowNPoints::UpdatePoints);
362 wxStaticText* txOpacity = new wxStaticText(panel, -1, wxString(_T(" Points Opacity ")));
363 wxStaticText* txRadio = new wxStaticText(panel, -1, wxString(_T(" Points Radio ")));
365 sCtrlRadio = new wxSpinCtrl( panel, -1 , wxEmptyString, wxDefaultPosition, sizeButton );
366 sCtrlRadio->SetRange(1,10);
367 sCtrlRadio->SetValue( 6 );
368 sCtrlOpacity= new wxSpinCtrl( panel, -1 , wxEmptyString, wxDefaultPosition, sizeButton );
369 sCtrlOpacity->SetRange(0,10);
370 sCtrlOpacity->SetValue( 10 );
371 Connect( sCtrlRadio->GetId() ,wxEVT_COMMAND_SPINCTRL_UPDATED,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &WidgetShowNPoints::UpdatePoints);
372 Connect( sCtrlOpacity->GetId() ,wxEVT_COMMAND_SPINCTRL_UPDATED,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &WidgetShowNPoints::UpdatePoints);
373 Connect(btnSetPositionPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnSetPoint);
374 wxFlexGridSizer *sizer1 = new wxFlexGridSizer(1);
375 sizer1->Add(btnSetPositionPoint);
376 sizer1->Add(txtNrPoints);
377 sizer1->Add(txRadio);
378 //sizer1->Add(sdrRadio,1,wxGROW );
379 //sizer1->Add(sdrOpacity,1,wxGROW );
380 sizer1->Add(sCtrlRadio );
381 sizer1->Add(sCtrlOpacity);
387 askPointLabel = new wxStaticText(panel, -1, _T("\nPOINT CONTROLS:")); // JPR
388 wxButton *btnAddPoint = new wxButton(panel , -1, _T(" Add Point "));
389 wxButton *btnDeleteAllPoints = new wxButton(panel , -1, _T(" Delete All "));
390 wxStaticText *spacer = new wxStaticText(panel, -1, _T("\n")); // JPR
391 textCtrl = new wxTextCtrl(panel, -1);
392 Connect(btnAddPoint->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) & WidgetShowNPoints::OnAddPoint);
393 Connect(btnDeleteAllPoints->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) & WidgetShowNPoints::OnDeleteAllPoints);
394 wxFlexGridSizer *sizer1 = new wxFlexGridSizer(1);
395 sizer1->Add(askPointLabel);
396 sizer1->Add(btnAddPoint);
397 sizer1->Add(btnDeleteAllPoints);
399 sizer1->Add(textCtrl);
400 // sdrOpacity = new wxSlider();
401 // sdrRadio = new wxSlider();
402 txtNrPoints = new wxStaticText(panel, -1, _T("\n\n\n"));
404 } // bbGetInputType 2
406 panel->SetSizer(sizer);
407 panel->SetAutoLayout(true);
409 bookSetPoints->AddPage(panel , _T("Points") );
411 if ((mtype >= 0) && (mtype <= 3) )
415 wxFlexGridSizer *sizerParent = new wxFlexGridSizer(1);
416 sizerParent->Add( bookSetPoints );
417 panelParent->SetSizer( sizerParent );
418 panelParent->SetAutoLayout(true);
419 panelParent->Layout();
421 } // if mtype 0 1 2 3
425 if ((sizer!=NULL) && (MNPsizer!=NULL))
427 wxFlexGridSizer *sizerG = new wxFlexGridSizer(2);
428 sizerG->Add(bookGroupManager);
429 sizerG->Add(bookSetPoints);
430 panelParent->SetSizer(sizerG);
431 panelParent->SetAutoLayout(true);
432 panelParent->Layout();
437 //------------------------------------------------------------------------
438 WidgetShowNPoints::~WidgetShowNPoints()
442 //------------------------------------------------------------------------
443 ModelShowNPoints* WidgetShowNPoints::GetModelShowNPoints()
446 // return mmodelShowNPoints;
447 return lstModelShowNPoints[ mActualCollection ];
450 //------------------------------------------------------------------------
451 ModelShowNPoints* WidgetShowNPoints::GetModelShowNPoints(int id)
453 if(id >= 0 && id < lstModelShowNPoints.size())
455 return lstModelShowNPoints[ id ];
460 //------------------------------------------------------------------------
461 ViewShowNPoints* WidgetShowNPoints::GetViewShowNPoints()
463 return lstViewShowNPoints[ mActualCollection ];
467 //------------------------------------------------------------------------
468 void WidgetShowNPoints::SetRadio(double radio)
471 // GetModelShowNPoints()->SetRadio(radio);
472 int i,size = lstModelShowNPoints.size();
475 lstModelShowNPoints[i]->SetRadio( radio );
478 // sdrRadio->SetValue(radio);
479 sCtrlRadio->SetValue(radio);
482 //------------------------------------------------------------------------
483 void WidgetShowNPoints::SetColour(std::vector<double> colour)
486 //this->mcolour = colour;
487 int i,size = lstViewShowNPoints.size();
488 for (i=0 ; i<size ; i++)
490 lstViewShowNPoints[i]->mcolour = colour;
494 //------------------------------------------------------------------------
495 void WidgetShowNPoints::SetImage(vtkImageData* image)
498 //GetModelShowNPoints()->SetImage(image);
499 int i,size = lstModelShowNPoints.size();
500 for (i=0 ; i<size ; i++)
502 lstModelShowNPoints[i]->SetImage(image);
506 //------------------------------------------------------------------------
507 void WidgetShowNPoints::SetOpacity(double opacity)
510 //this->mopacity=opacity;
511 int i,size = lstViewShowNPoints.size();
512 for (i=0 ; i<size ; i++)
514 lstViewShowNPoints[i]->mopacity = opacity;
517 // sdrOpacity->SetValue( opacity*100.0 );
518 sCtrlOpacity->SetValue( opacity*10.0 );
523 //------------------------------------------------------------------------
524 void WidgetShowNPoints::SetRenderer(vtkRenderer *renderer)
527 //this->renderer = renderer;
528 int i,size = lstViewShowNPoints.size();
529 for (i=0 ; i<size ; i++)
531 lstViewShowNPoints[i]->renderer = renderer;
536 //------------------------------------------------------------------------
538 void WidgetShowNPoints::RefreshPoint(int id)
542 GetModelShowNPoints()->GetIdPoint(id,&x,&y,&z);
543 GetModelShowNPoints()->GetImage()->GetSpacing(spc);
544 std::string label = GetModelShowNPoints()->GetIdLabel(id);
545 double radio = GetModelShowNPoints()->GetRadio();
546 lstActorsSphere[id]->SetPosition( spc[0]*x , spc[1]*y , spc[2]*z );
547 lstActorsSphere[id]->GetProperty()->SetColor( mcolour[0] , mcolour[1] , mcolour[2] );
548 lstActorsSphere[id]->GetProperty()->SetOpacity( mopacity );
549 lstSourceSphere[id]->SetRadius( radio );
550 //EED 2017-01-01 Migration VTK7
551 #if VTK_MAJOR_VERSION <= 5
554 lstSourceSphere[id]->Update();
556 lstActorsText[id]->SetInput( label.c_str() );
557 lstActorsText[id]->SetPosition( radio+spc[0]*x , spc[1]*y , spc[2]*z );
560 //------------------------------------------------------------------------
561 void WidgetShowNPoints::RefreshPoints()
563 int id,size=lstActorsSphere.size();
564 for (id=0;id<size;id++)
568 renderer->GetRenderWindow()->Render();
571 //------------------------------------------------------------------------
572 void WidgetShowNPoints::AddVtkPoint()
575 vtkSphereSource *vtksphere = vtkSphereSource::New();
576 vtksphere->SetThetaResolution (20);
577 vtksphere->SetPhiResolution (20);
578 vtksphere->SetRadius( 1 );
579 //NTU: For updating points
580 lstSourceSphere.push_back(vtksphere);
581 vtkPolyDataMapper *sphereMapper = vtkPolyDataMapper::New();
583 //EED 2017-01-01 Migration VTK7
584 #if VTK_MAJOR_VERSION <= 5
585 sphereMapper->SetInput( vtksphere->GetOutput() );
588 sphereMapper->SetInputData( vtksphere->GetOutput() );
591 vtkActor *sphereActor = vtkActor::New();
592 sphereActor->SetMapper(sphereMapper);
593 sphereActor->SetOrigin(0, 0, 0);
595 lstActorsSphere.push_back(sphereActor);
597 wxMessageDialog dialog(this, _T("Renderer Not Set"),_T("Renderer Not Set"),wxICON_ERROR);
601 renderer->AddActor( sphereActor );
603 vtkTextActor3D *textActor = vtkTextActor3D::New();
604 // textActor->SetInput( strLabel.c_str() );
605 renderer->AddActor( textActor );
606 lstActorsText.push_back(textActor);
611 void WidgetShowNPoints::SetCurrentPoint(int idCurrentPoint )
613 int size = GetModelShowNPoints()->GetLstPointsSize();
614 if (idCurrentPoint<0) { idCurrentPoint = size-1; }
615 if (idCurrentPoint>=size ) { idCurrentPoint = 0; }
616 GetModelShowNPoints()->SetIdCurrentPoint( idCurrentPoint );
617 RefreshCollectionText();
618 RefreshColourCollection();
621 void WidgetShowNPoints::OnBackPoint(wxCommandEvent &event)
623 SetCurrentPoint( GetModelShowNPoints()->GetIdCurrentPoint() - 1 );
626 void WidgetShowNPoints::OnNextPoint(wxCommandEvent &event)
628 SetCurrentPoint( GetModelShowNPoints()->GetIdCurrentPoint() + 1 );
632 //------------------------------------------------------------------------
633 void WidgetShowNPoints::AddPoint(double x, double y, double z, std::string label)
635 GetModelShowNPoints()->AddPoint(x,y,z, label );
638 //RefreshPoint(lstActorsSphere.size()-1);
639 GetViewShowNPoints()->AddPoint();
642 //------------------------------------------------------------------------
643 void WidgetShowNPoints::InsertPoint(double x, double y, double z, std::string label)//CFT
646 //if ( GetModelShowNPoints()->InsertPoint(x,y,z,label) != -1 )
650 // AddPoint(x,y,z,label);
653 if ( GetModelShowNPoints()->InsertPoint(x,y,z,label) != -1 )
655 GetViewShowNPoints()->AddVtkPoint();
657 AddPoint(x,y,z,label);
659 GetViewShowNPoints()->RefreshPoints();
662 //------------------------------------------------------------------------
663 void WidgetShowNPoints::OnInsertPoint_()
666 //if (this->renderer==NULL)
671 if (GetViewShowNPoints()->renderer==NULL)
675 UndoRedo_SaveCollection(); //A
676 std::vector<double> point = GetModelShowNPoints()->GetReferencePoint();
679 InsertPoint(point[0],point[1],point[2], (const char*) ( textCtrl->GetValue().mb_str() ) );
681 } else {//mpoint.size
682 printf("creaMaracasVisu::ShowNPoints (not match point) \n");
684 RefreshCollectionText();
685 RefreshColourCollection();
686 UndoRedo_SaveCollection(); //B
689 //------------------------------------------------------------------------
690 void WidgetShowNPoints::OnInsertPoint (wxCommandEvent& event)//CFT
695 //------------------------------------------------------------------------
696 void WidgetShowNPoints::OnAddPoint__()
699 //if (this->renderer==NULL)
700 if (GetViewShowNPoints()->renderer==NULL)
704 std::vector<double> point = GetModelShowNPoints()->GetReferencePoint();
707 UndoRedo_SaveCollection(); //A
708 AddPoint(point[0],point[1],point[2], (const char*) ( textCtrl->GetValue().mb_str() ) );
711 //renderer->GetRenderWindow()->Render();
712 GetViewShowNPoints()->Render();
713 UndoRedo_SaveCollection(); //B
714 } else {//mpoint.size
715 printf("creaMaracasVisu::ShowNPoints (not match point) \n");
719 void WidgetShowNPoints::OnAddPoint_()
726 //------------------------------------------------------------------------
727 void WidgetShowNPoints::OnAddPoint (wxCommandEvent& event)
732 //------------------------------------------------------------------------
733 void WidgetShowNPoints::AutoAddPoints()
735 if ( cbAutoAddPoints->GetValue() == true )
738 RefreshCollectionText();
739 RefreshColourCollection();
740 } // if cbAutoAddPoints
743 //------------------------------------------------------------------------
744 void WidgetShowNPoints::OnAutoAddPoints_tool()
747 cbAutoAddPoints->SetValue( !cbAutoAddPoints->GetValue() );
750 //------------------------------------------------------------------------
751 void WidgetShowNPoints::OnAutoAddPoints_()
756 //------------------------------------------------------------------------
757 void WidgetShowNPoints::OnAutoAddPoints(wxCommandEvent& event)
762 //------------------------------------------------------------------------
763 void WidgetShowNPoints::StopAutoAddPoints( )
765 cbAutoAddPoints->SetValue(false);
768 //------------------------------------------------------------------------
769 void WidgetShowNPoints::SetOutputBox()
772 if (GetModelShowNPoints()->GetIdCurrentPoint()<0)
774 strTmp.Printf(_T(" -/%d") , GetModelShowNPoints()->GetLstPointsSize() );
776 strTmp.Printf(_T(" %d/%d"), GetModelShowNPoints()->GetIdCurrentPoint()+1 , GetModelShowNPoints()->GetLstPointsSize() );
778 txtNrPoints->SetLabel( strTmp );
782 // mbbShowNPoints->bbSetOutputlstPointsX( GetModelShowNPoints()->GetLstPointsX() );
783 // mbbShowNPoints->bbSetOutputlstPointsY( GetModelShowNPoints()->GetLstPointsY() );
784 // mbbShowNPoints->bbSetOutputlstPointsZ( GetModelShowNPoints()->GetLstPointsZ() );
785 // mbbShowNPoints->bbSetOutputlstLabels( GetModelShowNPoints()->GetLstLabels() );
786 // mbbShowNPoints->bbSignalOutputModification();
790 //------------------------------------------------------------------------
791 void WidgetShowNPoints::OnSavePoints(wxCommandEvent& event)
794 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
795 #if wxMAJOR_VERSION <= 2
796 wxFileDialog* FD = new wxFileDialog( 0,
797 _T("Save points .."),
801 wxSAVE | wxOVERWRITE_PROMPT,
804 wxFileDialog* FD = new wxFileDialog( 0,
805 _T("Save points .."),
809 wxFD_SAVE | wxFD_OVERWRITE_PROMPT,
813 int result_FD = FD->ShowModal();
814 // This line is need it by windows //EED
815 FD->SetReturnCode( result_FD );
816 if (FD->GetReturnCode()==wxID_OK)
818 std::string filename= (const char*) ( FD->GetPath().mb_str() );
819 GetModelShowNPoints()->SavePoints( filename );
824 //------------------------------------------------------------------------
825 void WidgetShowNPoints::OnLoadPoints(wxCommandEvent& event)
828 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
829 #if wxMAJOR_VERSION <= 2
830 wxFileDialog* FD = new wxFileDialog( 0,
831 _T("Load points .."),
835 wxOPEN | wxFILE_MUST_EXIST,
838 wxFileDialog* FD = new wxFileDialog( 0,
839 _T("Load points .."),
843 wxFD_OPEN | wxFD_FILE_MUST_EXIST,
848 int result_FD = FD->ShowModal();
849 // This line is need it by windows //EED
850 FD->SetReturnCode( result_FD );
851 if (FD->GetReturnCode()==wxID_OK)
854 std::string filename= (const char*) ( FD->GetPath().mb_str() );
855 int numberPointsRead = GetModelShowNPoints()->ReadPoints( filename );
856 for (i=0;i<numberPointsRead;i++)
860 GetViewShowNPoints()->AddVtkPoint();
865 GetViewShowNPoints()->RefreshPoints();
869 //------------------------------------------------------------------------
870 void WidgetShowNPoints::OnSetPoint_()
872 UndoRedo_SaveCollection(); //A
877 //int id=GetModelShowNPoints()->GetNearestPoint();
878 int id=GetModelShowNPoints()->GetIdCurrentPoint();
880 if((id==-1) && (mtype==1))
888 GetModelShowNPoints()->SetPointId_mReferencePoint(id);
891 //renderer->GetRenderWindow()->Render();
892 GetViewShowNPoints()->RefreshPoint(id);
893 GetViewShowNPoints()->Render();
895 RefreshCollectionText();
896 RefreshColourCollection();
898 UndoRedo_SaveCollection(); //B
901 //------------------------------------------------------------------------
902 void WidgetShowNPoints::OnSetPoint(wxCommandEvent& event)
907 //------------------------------------------------------------------------
908 void WidgetShowNPoints::MovePoint_(double step)
913 int id=GetModelShowNPoints()->GetIdCurrentPoint();
916 if((GetLstModelShowNPointsSize()>=2) //Check condition
917 && (GetModelShowNPoints()->GetLstPointsSize()>0)
918 && (aux_mesh != NULL)
919 && (aux_mesh_spc.size() == 3))
923 double normal[3]; // point to modify and normal
924 std::vector<double> pN(3); // new point
925 vtkStaticPointLocator *pointLocator = vtkStaticPointLocator::New();
926 pointLocator->SetDataSet( aux_mesh );
927 pointLocator->BuildLocator();
929 // int idControlPoint = wsp->GetModelShowNPoints()->GetNearestPoint();
930 int idControlPoint = GetModelShowNPoints()->GetIdCurrentPoint();
931 if(idControlPoint >= 0)
933 GetModelShowNPoints()->GetIdPoint(idControlPoint, &x, &y, &z);
934 p[0] = x * aux_mesh_spc[0];
935 p[1] = y * aux_mesh_spc[1];
936 p[2] = z * aux_mesh_spc[2];
937 long int idMeshPoint = pointLocator->FindClosestPoint(p);
938 vtkDataArray *dataArrayNormals = aux_mesh->GetPointData()->GetNormals();
939 if (dataArrayNormals!=NULL)
941 dataArrayNormals->GetTuple(idMeshPoint, normal);
942 int direction = step;
943 // pN[0] = p[0] / spc[0] + direction*normal[0];
944 // pN[1] = p[1] / spc[1] + direction*normal[1];
945 // pN[2] = p[2] / spc[2] + direction*normal[2];
946 pN[0] = x + (direction * normal[0]);
947 pN[1] = y + (direction * normal[1]);
948 pN[2] = z + (direction * normal[2]);
949 UndoRedo_SaveCollection(); //A
950 GetModelShowNPoints()->SetPointById(idControlPoint, pN);
951 // GetViewShowNPoints()->RefreshPoint(idControlPoint);
952 // RefreshCollectionText();
953 // RefreshColourCollection();
955 UndoRedo_SaveCollection(); //B
957 printf("Error! WidgetShowNPoints::MovePoint_ Missing normals in aux_mesh \n");
959 } // if idControlPoint
960 } // if wsp->GetLstModelShowNPointsSiz->size()>=2
965 double minX=max,minY=max,minZ=max;
966 double maxX=-max,maxY=-max,maxZ=-max;
967 sizeG = lstModelShowNPoints.size();
968 for (i=0; i<sizeG; i++)
970 std::vector<double> lstX = lstModelShowNPoints[i]->GetLstPointsX();
971 std::vector<double> lstY = lstModelShowNPoints[i]->GetLstPointsY();
972 std::vector<double> lstZ = lstModelShowNPoints[i]->GetLstPointsZ();
974 for (j=0; j<sizeP; j++)
976 if ( lstX[j]<minX ) { minX=lstX[j]; }
977 if ( lstY[j]<minY ) { minY=lstY[j]; }
978 if ( lstZ[j]<minZ ) { minZ=lstZ[j]; }
979 if ( lstX[j]>maxX ) { maxX=lstX[j]; }
980 if ( lstY[j]>maxY ) { maxY=lstY[j]; }
981 if ( lstZ[j]>maxZ ) { maxZ=lstZ[j]; }
985 pc[0]=(minX+maxX) /2 ; pc[1]=(minY+maxY) /2 ; pc[2]=(minZ+maxZ) /2 ;
987 p[0]=GetModelShowNPoints()->GetLstPointsX()[id];
988 p[1]=GetModelShowNPoints()->GetLstPointsY()[id];
989 p[2]=GetModelShowNPoints()->GetLstPointsZ()[id];
994 double mag=sqrt ( v[0]*v[0] + v[1]*v[1] + v[2]*v[2] );
995 std::vector<double> point;
1006 UndoRedo_SaveCollection(); //A
1007 point.push_back( p[0] + step*v[0] );
1008 point.push_back( p[1] + step*v[1] );
1009 point.push_back( p[2] + step*v[2] );
1010 GetModelShowNPoints()->SetPointById(id,point);
1011 UndoRedo_SaveCollection(); //B
1014 RefreshCollectionText();
1015 RefreshColourCollection();
1018 //------------------------------------------------------------------------
1019 void WidgetShowNPoints::OnMovePointUp(wxCommandEvent& event)
1024 //------------------------------------------------------------------------
1025 void WidgetShowNPoints::OnMovePointDown(wxCommandEvent& event)
1030 //------------------------------------------------------------------------
1031 void WidgetShowNPoints::TrackingPoint( )
1033 if ( cbTrackPoint->GetValue() == true )
1035 // int id = GetModelShowNPoints()->IdInsidePoint();
1041 // int idTrack = GetModelShowNPoints()->GetIdCurrentPoint();
1042 int idTrack = GetModelShowNPoints()->GetNearestPoint();
1047 UndoRedo_SaveCollection(); //A
1048 GetModelShowNPoints()->SetIdCurrentPoint(idTrack);
1049 GetModelShowNPoints()->SetPointId_mReferencePoint(idTrack);
1051 RefreshCollectionText();
1052 RefreshColourCollection();
1054 // GetViewShowNPoints()->RefreshPoint(idTrack);
1055 // GetViewShowNPoints()->Render();
1056 UndoRedo_SaveCollection(); //B
1058 } // if trackPointFlag
1061 //------------------------------------------------------------------------
1062 void WidgetShowNPoints::OnTrackPoint_tool()
1064 cbTrackPoint->SetValue( !cbTrackPoint->GetValue() );
1068 //------------------------------------------------------------------------
1069 void WidgetShowNPoints::OnTrackPoint_()
1071 StopAutoAddPoints();
1074 if ( cbTrackPoint->GetValue() == true )
1077 // idTrack = GetModelShowNPoints()->IdInsidePoint();
1078 // idTrack = GetModelShowNPoints()->GetIdCurrentPoint();
1079 } // if trackPointFlag
1082 //------------------------------------------------------------------------
1083 void WidgetShowNPoints::OnTrackPoint(wxCommandEvent& event)
1088 //------------------------------------------------------------------------
1089 void WidgetShowNPoints::StopTrackPoint( )
1091 cbTrackPoint->SetValue(false);
1095 //------------------------------------------------------------------------
1096 void WidgetShowNPoints::OnRenamePoint(wxCommandEvent& event)
1098 int id = GetModelShowNPoints()->RenamePoint( (const char*) ( textCtrl->GetValue().mb_str() ) );
1102 //lstActorsText[id]->SetInput( (const char*) ( textCtrl->GetValue().mb_str() ) );
1103 //renderer->GetRenderWindow()->Render();
1104 UndoRedo_SaveCollection(); //A
1105 GetViewShowNPoints()->lstActorsText[id]->SetInput( (const char*) ( textCtrl->GetValue().mb_str() ) );
1106 GetViewShowNPoints()->Render();
1108 UndoRedo_SaveCollection(); //B
1112 //------------------------------------------------------------------------
1113 bool WidgetShowNPoints::ErasePoint(int id)
1116 //if (this->renderer!=NULL)
1118 if (GetViewShowNPoints()->renderer!=NULL)
1123 //renderer->RemoveActor( lstActorsSphere[id] );
1124 //renderer->RemoveActor( lstActorsText[id] );
1125 //lstActorsSphere[id]->Delete();
1126 //lstActorsText[id]->Delete();
1127 //lstSourceSphere[id]->Delete();
1128 //lstActorsSphere.erase( lstActorsSphere.begin()+id );
1129 //lstActorsText.erase( lstActorsText.begin()+id );
1130 //lstSourceSphere.erase( lstSourceSphere.begin()+id );
1131 GetViewShowNPoints()->ErasePoint(id);
1132 GetModelShowNPoints()->ErasePoint(id);
1139 //------------------------------------------------------------------------
1140 void WidgetShowNPoints::OnErasePoint_()
1142 StopAutoAddPoints();
1145 //ErasePoint( GetModelShowNPoints()->IdInsidePoint() );
1146 UndoRedo_SaveCollection(); //A
1147 if (ErasePoint( GetModelShowNPoints()->GetIdCurrentPoint() ) == true)
1151 //renderer->GetRenderWindow()->Render();
1152 // GetViewShowNPoints()->Render();
1153 RefreshCollectionText();
1154 RefreshColourCollection();
1156 UndoRedo_SaveCollection(); //B
1160 //------------------------------------------------------------------------
1161 void WidgetShowNPoints::OnErasePoint(wxCommandEvent& event)
1166 //------------------------------------------------------------------------
1167 void WidgetShowNPoints::OnEraseLastPoint(wxCommandEvent& event)
1170 //ErasePoint( lstActorsSphere.size()-1 );
1171 //renderer->GetRenderWindow()->Render();
1172 StopAutoAddPoints();
1175 UndoRedo_SaveCollection(); //A
1176 int id = GetViewShowNPoints()->lstActorsSphere.size()-1;
1179 RefreshCollectionText();
1180 RefreshColourCollection();
1182 UndoRedo_SaveCollection(); //B
1183 GetViewShowNPoints()->Render();
1188 //------------------------------------------------------------------------
1189 void WidgetShowNPoints::DeleteAllPoints_()
1192 //int id,size=lstActorsSphere.size();
1193 int id,size=GetViewShowNPoints()->lstActorsSphere.size();
1194 for (id=size-1;id>=0;id--)
1200 void WidgetShowNPoints::OnDeleteAllPoints_()
1202 StopAutoAddPoints();
1205 UndoRedo_SaveCollection(); //A
1207 UndoRedo_SaveCollection(); //B
1210 //------------------------------------------------------------------------
1211 void WidgetShowNPoints::OnDeleteAllPoints(wxCommandEvent& event)
1213 OnDeleteAllPoints_();
1215 GetViewShowNPoints()->Render();
1218 //NTU: Method for updating points opacity and Radio
1220 //------------------------------------------------------------------------
1221 void WidgetShowNPoints::UpdatePoints_()
1224 //this->mopacity = sdrOpacity->GetValue()/100.0;
1225 //GetModelShowNPoints()->SetRadio( sdrRadio->GetValue() ) ;
1228 // double opacity = sdrOpacity->GetValue()/100.0;
1229 // double radio = sdrRadio->GetValue();
1230 double opacity = (sCtrlOpacity->GetValue()*10)/100.0;
1231 double radio = sCtrlRadio->GetValue();
1233 int i,size = lstViewShowNPoints.size();
1234 for (i=0 ; i<size ; i++)
1236 lstViewShowNPoints[i]->mopacity = opacity;
1237 lstModelShowNPoints[i]->SetRadio( radio ) ;
1239 // GetViewShowNPoints()->RefreshPoints();
1242 //------------------------------------------------------------------------
1243 void WidgetShowNPoints::UpdatePoints(wxCommandEvent &event)
1245 RefreshColourCollection();
1248 //------------------------------------------------------------------------
1249 void WidgetShowNPoints::SetReferencePoint(std::vector<double> point)
1251 GetModelShowNPoints()->SetReferencePoint(point);
1252 int i,size=lstModelShowNPoints.size();
1253 for ( i=0 ; i<size ; i++ )
1255 lstModelShowNPoints[i]->SetReferencePoint(point); // All collection
1259 //------------------------------------------------------------------------
1260 void WidgetShowNPoints::SetActualCollection( int actual )
1267 if (actual>lstModelShowNPoints.size()-1 )
1269 actual=lstModelShowNPoints.size()-1;
1272 mActualCollection=actual;
1276 //------------------------------------------------------------------------
1277 void WidgetShowNPoints::SetInitLstPoints( std::vector<double> initLstPointsX, std::vector<double> initLstPointsY, std::vector<double> initLstPointsZ, std::vector<std::string> initLstLabels, std::vector<int> initLstIndexs )
1279 if (GetViewShowNPoints()->renderer==NULL)
1285 int i,sizeX,sizeY,sizeZ,sizeTmp,sizeLabels;
1286 int ii,iIndexs,sizeIndexs;
1288 sizeX = (int)initLstPointsX.size();
1289 sizeY = (int)initLstPointsY.size();
1290 sizeZ = (int)initLstPointsZ.size();
1291 sizeLabels = (int)initLstLabels.size();
1292 sizeIndexs = (int)initLstIndexs.size();
1296 initLstIndexs.push_back(sizeX);
1297 sizeIndexs = (int)initLstIndexs.size();
1300 if ( (sizeX==sizeY) && (sizeX==sizeZ) )
1303 for (iIndexs=0;iIndexs<sizeIndexs;iIndexs++ )
1307 InsertCollectionAfter_();
1309 sizeTmp = initLstIndexs[iIndexs];
1310 for (ii=0;ii<sizeTmp;ii++)
1312 x = initLstPointsX[i];
1313 y = initLstPointsY[i];
1314 z = initLstPointsZ[i];
1317 label = initLstLabels[i];
1321 AddPoint( x,y,z,label );
1328 // renderer->GetRenderWindow()->Render();
1337 //if (this->renderer==NULL)
1338 if (GetViewShowNPoints()->renderer==NULL)
1342 int i,sizeX,sizeY,sizeZ,sizeLabels;
1343 sizeX = (int)initLstPointsX.size();
1344 sizeY = (int)initLstPointsY.size();
1345 sizeZ = (int)initLstPointsZ.size();
1346 sizeLabels = (int)initLstLabels.size();
1349 if ( (sizeX==sizeY) && (sizeX==sizeZ) )
1351 for (i=0;i<sizeX;i++)
1353 x = initLstPointsX[i];
1354 y = initLstPointsY[i];
1355 z = initLstPointsZ[i];
1358 label = initLstLabels[i];
1362 AddPoint( x,y,z,label );
1365 // renderer->GetRenderWindow()->Render();
1371 //------------------------------------------------------------------------
1372 void WidgetShowNPoints::SetType(int type)
1377 //------------------------------------------------------------------------
1378 int WidgetShowNPoints::GetType()
1384 //------------------------------------------------------------------------
1385 double WidgetShowNPoints::GetRadio()
1387 // return sdrRadio->GetValue();
1388 return sCtrlRadio->GetValue();
1390 //------------------------------------------------------------------------
1391 double WidgetShowNPoints::GetOpacity()
1393 // return sdrOpacity->GetValue()/100;
1394 return (sCtrlOpacity->GetValue()*10)/100.0;
1397 //------------------------------------------------------------------------
1398 void WidgetShowNPoints::InsertCollection()
1400 ModelShowNPoints* model = new ModelShowNPoints();
1401 ViewShowNPoints* view = new ViewShowNPoints( model );
1402 view->mopacity = lstViewShowNPoints[0]->mopacity;
1403 view->renderer = lstViewShowNPoints[0]->renderer;
1404 model->SetImage( lstModelShowNPoints[0]->GetImage() );
1405 lstModelShowNPoints.insert( lstModelShowNPoints.begin()+mActualCollection , model );
1406 lstViewShowNPoints.insert( lstViewShowNPoints.begin()+mActualCollection , view );
1409 //------------------------------------------------------------------------
1410 void WidgetShowNPoints::InsertCollectionBefore_()
1413 RefreshCollectionText();
1414 RefreshColourCollection();
1418 //------------------------------------------------------------------------
1419 void WidgetShowNPoints::OnInsertCollectionBefore_()
1421 UndoRedo_SaveCollection(); //A
1422 InsertCollectionBefore_();
1423 CreatePointsIntoNewCollection();
1424 UndoRedo_SaveCollection(); //B
1428 //------------------------------------------------------------------------
1429 void WidgetShowNPoints::OnInsertCollectionBefore(wxCommandEvent &event)
1431 OnInsertCollectionBefore_();
1435 //------------------------------------------------------------------------
1436 void WidgetShowNPoints::InsertCollectionAfter_()
1438 mActualCollection++;
1440 RefreshCollectionText();
1441 RefreshColourCollection();
1446 //------------------------------------------------------------------------
1447 void WidgetShowNPoints::OnInsertCollectionAfter_()
1449 UndoRedo_SaveCollection(); //A
1450 InsertCollectionAfter_();
1451 CreatePointsIntoNewCollection();
1452 UndoRedo_SaveCollection(); //B
1455 //------------------------------------------------------------------------
1456 void WidgetShowNPoints::OnInsertCollectionAfter(wxCommandEvent &event)
1458 OnInsertCollectionAfter_();
1461 //------------------------------------------------------------------------
1462 void WidgetShowNPoints::CreatePointsIntoNewCollection()
1464 int c1 = mActualCollection-1;
1465 int c2 = mActualCollection+1;
1466 int modelSize = lstModelShowNPoints.size();
1467 if (aux_mesh_type==2) // SplineClose2
1469 if (c1==-1) { c1=modelSize-1; }
1470 if (c2==modelSize) { c2=0; }
1471 } // if aux_mesh_type
1473 if ( (c1!=c2) && (c1>=0) && (c1<modelSize) && (c2>=0) && (c2<modelSize) )
1475 std::vector<double> c1LstX = lstModelShowNPoints[c1]->GetLstPointsX();
1476 std::vector<double> c1LstY = lstModelShowNPoints[c1]->GetLstPointsY();
1477 std::vector<double> c1LstZ = lstModelShowNPoints[c1]->GetLstPointsZ();
1478 std::vector<double> c2LstX = lstModelShowNPoints[c2]->GetLstPointsX();
1479 std::vector<double> c2LstY = lstModelShowNPoints[c2]->GetLstPointsY();
1480 std::vector<double> c2LstZ = lstModelShowNPoints[c2]->GetLstPointsZ();
1481 std::vector<double> c1LstXX;
1482 std::vector<double> c1LstYY;
1483 std::vector<double> c1LstZZ;
1484 std::vector<double> c2LstXX;
1485 std::vector<double> c2LstYY;
1486 std::vector<double> c2LstZZ;
1487 creaContoursFactory f;
1488 manualContourModel *m;
1491 int sc; // sizeContour
1493 if ( (c1LstX.size()!=0) && (c2LstX.size()!=0) )
1495 // ----------------- Spline 1 --------------------
1497 size = c1LstX.size();
1498 m = (manualContourModel*)f.getContourModel( 1 ); // Spline
1499 // m->SetNumberOfPointsSpline( bbGetInputNbPoints() );
1500 m->SetNumberOfPointsSpline( sc );
1501 m->SetCloseContour( false );
1502 for (i=0;i<size;i++)
1504 m->AddPoint( c1LstX[i] , c1LstY[i] , c1LstZ[i] );
1509 m->GetSpline_i_Point(i,&x,&y,&z);
1510 c1LstXX.push_back(x);
1511 c1LstYY.push_back(y);
1512 c1LstZZ.push_back(z);
1515 // ----------------- Spline 2 --------------------
1516 size = c2LstX.size();
1517 m = (manualContourModel*)f.getContourModel( 1 ); // Spline
1518 // m->SetNumberOfPointsSpline( bbGetInputNbPoints() );
1519 m->SetNumberOfPointsSpline( sc );
1520 m->SetCloseContour( false );
1521 for (i=0;i<size;i++)
1523 m->AddPoint( c2LstX[i] , c2LstY[i] , c2LstZ[i] );
1528 m->GetSpline_i_Point(i,&x,&y,&z);
1529 c2LstXX.push_back(x);
1530 c2LstYY.push_back(y);
1531 c2LstZZ.push_back(z);
1534 // ----------------- Add new Points --------------------
1535 vtkPoints *points = NULL;
1536 vtkStaticPointLocator *pointLocator = NULL;
1539 points = aux_mesh->GetPoints();
1540 pointLocator = vtkStaticPointLocator::New();
1541 pointLocator->SetDataSet( aux_mesh );
1542 pointLocator->BuildLocator();
1546 if ( c1LstX.size()<c2LstX.size() ) { size=c2LstX.size(); } else { size=c1LstX.size(); }
1547 for (ii=0;ii<size;ii++)
1549 i = (int) ((double)ii/((double)size-1)*(sc-1));
1550 x = (c1LstXX[i]+c2LstXX[i])/2;
1551 y = (c1LstYY[i]+c2LstYY[i])/2;
1552 z = (c1LstZZ[i]+c2LstZZ[i])/2;
1555 p[0] = x * aux_mesh_spc[0];
1556 p[1] = y * aux_mesh_spc[1];
1557 p[2] = z * aux_mesh_spc[2];
1558 points->GetPoint( pointLocator->FindClosestPoint(p) , pM );
1559 x = pM[0] / aux_mesh_spc[0];
1560 y = pM[1] / aux_mesh_spc[1];
1561 z = pM[2] / aux_mesh_spc[2];
1565 if (pointLocator!=NULL) { pointLocator->Delete(); }
1566 RefreshCollectionText();
1567 RefreshColourCollection();
1568 } // if size of c1LstX c2LstX
1572 //------------------------------------------------------------------------
1573 void WidgetShowNPoints::DeleteCollection_()
1575 if ( lstModelShowNPoints.size()>1 )
1577 DeleteAllPoints_(); // Actual Collection
1578 lstModelShowNPoints.erase( lstModelShowNPoints.begin()+mActualCollection );
1579 lstViewShowNPoints.erase( lstViewShowNPoints.begin()+mActualCollection );
1580 if ( mActualCollection>=lstModelShowNPoints.size() )
1582 mActualCollection--;
1585 DeleteAllPoints_(); // Actual Collection
1589 //------------------------------------------------------------------------
1590 void WidgetShowNPoints::OnDeleteCollection_()
1592 UndoRedo_SaveCollection(); //A
1593 DeleteCollection_();
1595 GetViewShowNPoints()->Render();
1596 RefreshCollectionText();
1597 RefreshColourCollection();
1599 UndoRedo_SaveCollection(); //B
1602 //------------------------------------------------------------------------
1603 void WidgetShowNPoints::OnDeleteCollection(wxCommandEvent &event)
1605 OnDeleteCollection_();
1608 //------------------------------------------------------------------------
1609 void WidgetShowNPoints::ResetCollections_()
1611 int i,size=lstModelShowNPoints.size();
1612 for (i=0;i<size;i++)
1614 DeleteCollection_();
1616 GetViewShowNPoints()->Render();
1617 RefreshCollectionText();
1618 RefreshColourCollection();
1623 //------------------------------------------------------------------------
1624 void WidgetShowNPoints::OnResetCollections_()
1626 UndoRedo_SaveCollection(); //A
1627 ResetCollections_();
1628 UndoRedo_SaveCollection(); //B
1632 //------------------------------------------------------------------------
1633 void WidgetShowNPoints::OnResetCollections(wxCommandEvent &event)
1635 OnResetCollections_();
1638 //------------------------------------------------------------------------
1639 void WidgetShowNPoints::OnBackCollection(wxCommandEvent &event)
1641 mActualCollection--;
1642 if ( mActualCollection <0 )
1644 // mActualCollection=0;
1645 mActualCollection = lstModelShowNPoints.size()-1;
1647 RefreshCollectionText();
1648 RefreshColourCollection();
1650 // UndoRedo_SaveCollection();
1653 //------------------------------------------------------------------------
1654 void WidgetShowNPoints::OnNextCollection(wxCommandEvent &event)
1656 mActualCollection++;
1657 if ( mActualCollection >=lstModelShowNPoints.size() )
1659 // mActualCollection = lstModelShowNPoints.size()-1;
1660 mActualCollection = 0;
1661 } //if mActualCollection >= size
1662 RefreshCollectionText();
1663 RefreshColourCollection();
1665 // UndoRedo_SaveCollection();
1668 //------------------------------------------------------------------------
1669 void WidgetShowNPoints::DetectCollectionActive()
1672 if ( (cbVisuActualCollection!=NULL) && (cbVisuActualCollection->GetValue()==false ) )
1674 int i,size=lstModelShowNPoints.size();
1675 for (i=0;i<size;i++)
1677 id = lstModelShowNPoints[i]->IdInsidePoint();
1680 mActualCollection=i;
1684 id = GetModelShowNPoints()->IdInsidePoint(); // forcing the selection of the point
1685 } // if cbVisuActualCollection
1687 RefreshCollectionText();
1688 RefreshColourCollection();
1694 //------------------------------------------------------------------------
1695 void WidgetShowNPoints::RefreshColourCollection()
1698 std::vector<double> colourAll;
1699 colourAll.push_back(0);
1700 colourAll.push_back(1);
1701 colourAll.push_back(1);
1702 std::vector<double> colourActualGroup;
1703 colourActualGroup.push_back(1);
1704 colourActualGroup.push_back(0);
1705 colourActualGroup.push_back(0);
1706 // For all collections
1707 SetColour( colourAll );
1709 int iCollection,sizeLstCollection=lstViewShowNPoints.size();
1710 for ( iCollection=0 ; iCollection<sizeLstCollection ; iCollection++ )
1712 if (iCollection==mActualCollection)
1714 // Actual collection
1715 lstViewShowNPoints[mActualCollection] -> mcolour = colourActualGroup;
1716 lstViewShowNPoints[mActualCollection] -> mopacity = sCtrlOpacity->GetValue()*10.0/100.0;
1717 lstViewShowNPoints[mActualCollection] -> ratioRadio = 1.2;
1718 lstViewShowNPoints[mActualCollection] -> RefreshEachPoint();
1721 int curPnt = lstModelShowNPoints[mActualCollection]->GetIdCurrentPoint();
1722 sizeLstPoints = lstModelShowNPoints[mActualCollection]->GetLstPointsSize();
1723 if ((curPnt>=0) && (curPnt<sizeLstPoints ) )
1725 std::vector<double> colourActualPoint;
1726 colourActualPoint.push_back(1);
1727 colourActualPoint.push_back(1);
1728 colourActualPoint.push_back(0);
1729 double radio = GetModelShowNPoints()->GetRadio();
1730 lstViewShowNPoints[mActualCollection] -> mcolour = colourActualPoint;
1731 lstViewShowNPoints[mActualCollection]->RefreshPoint( curPnt );
1732 lstViewShowNPoints[mActualCollection] -> mcolour = colourActualGroup;
1734 lstViewShowNPoints[mActualCollection]->TryToShowActorsInRender(true);
1736 lstViewShowNPoints[iCollection] -> mcolour = colourAll;
1737 lstViewShowNPoints[iCollection] -> ratioRadio = 1;
1738 if ((cbVisuActualCollection!=NULL) && (cbVisuActualCollection->GetValue()==true))
1740 lstViewShowNPoints[iCollection]->TryToShowActorsInRender(false);
1741 // lstViewShowNPoints[i] -> mopacity = 0.0;
1743 lstViewShowNPoints[iCollection]->TryToShowActorsInRender(true);
1744 // lstViewShowNPoints[i] -> mopacity = sCtrlOpacity->GetValue()*10.0/100.0;
1746 lstViewShowNPoints[iCollection]->RefreshEachPoint();
1747 }// if mActualCollection
1749 lstViewShowNPoints[mActualCollection] -> renderer->GetRenderWindow()->Render();
1752 //------------------------------------------------------------------------
1753 void WidgetShowNPoints::RefreshCollectionText()
1755 if ((mtype==4) && (txtNrCollections!=NULL)) // Just for Collection interface
1758 strTmp.Printf(_T(" %d/%d"), (int)mActualCollection+1, (int)lstModelShowNPoints.size() );
1759 txtNrCollections->SetLabel( strTmp );
1765 //------------------------------------------------------------------------
1766 void WidgetShowNPoints::OnSaveCollections_( std::string filename )
1769 ff = fopen( filename.c_str() , "w+" );
1772 int i,size = lstModelShowNPoints.size();
1773 fprintf(ff,"NumberOfGroups %d \n",size);
1774 for (i=0 ; i<size ; i++)
1776 lstModelShowNPoints[i]->SavePoints_(ff);
1780 printf("WidgetShowNPoints::Save Groups Points ...Error... creating file \n");
1785 //------------------------------------------------------------------------
1786 void WidgetShowNPoints::OnSaveCollectionsIdsCurrent_( std::string filename )
1789 ff = fopen( filename.c_str() , "w+" );
1792 int i,size = lstModelShowNPoints.size();
1793 fprintf(ff,"ActualCollection %d \n",mActualCollection);
1794 fprintf(ff,"NumberOfGroups %d \n",size);
1795 for (i=0 ; i<size ; i++)
1797 fprintf(ff,"CurrentIdPoint %d \n",lstModelShowNPoints[i]->GetIdCurrentPoint());
1801 printf("WidgetShowNPoints::Save Groups Points ...Error... creating file \n");
1805 //------------------------------------------------------------------------
1806 void WidgetShowNPoints::OnSaveCollections(wxCommandEvent &event)
1808 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
1809 #if wxMAJOR_VERSION <= 2
1810 wxFileDialog* FD = new wxFileDialog( 0,
1811 _T("Save groups of points .."),
1814 _T("(*.xls)|*.xls"),
1815 wxSAVE | wxOVERWRITE_PROMPT,
1818 wxFileDialog* FD = new wxFileDialog( 0,
1819 _T("Save groups of points .."),
1822 _T("(*.xls)|*.xls"),
1823 wxFD_SAVE | wxFD_OVERWRITE_PROMPT,
1827 int result_FD = FD->ShowModal();
1828 // This line is need it by windows //EED
1829 FD->SetReturnCode( result_FD );
1830 if (FD->GetReturnCode()==wxID_OK)
1832 std::string filename= (const char*) ( FD->GetPath().mb_str() );
1833 OnSaveCollections_( filename );
1838 //------------------------------------------------------------------------
1839 void WidgetShowNPoints::OnLoadCollections_( std::string filename )
1841 bool okEraseFirstGroup=false;
1842 if (lstModelShowNPoints.size()==1)
1844 if (GetModelShowNPoints()->GetLstPointsSize()==0) { okEraseFirstGroup=true; }
1846 FILE *ff = fopen( filename.c_str() , "r+" );
1850 int iGroup,sizeGroups;
1851 int iPoint,numberPointsRead;
1853 fscanf(ff," %s %d",chartmp,&sizeGroups);
1854 for (iGroup=0;iGroup<sizeGroups;iGroup++)
1856 mActualCollection = lstModelShowNPoints.size();
1858 int numberPointsRead= lstModelShowNPoints[mActualCollection]->ReadPoints_(ff);
1859 for (i=0;i<numberPointsRead;i++)
1863 GetViewShowNPoints()->AddVtkPoint();
1867 mActualCollection=0;
1869 printf("WidgetShowNPoints::Load Group of Points ...Error... reading file");
1871 if (okEraseFirstGroup==true)
1873 mActualCollection=0;
1874 DeleteCollection_();
1875 mActualCollection = lstModelShowNPoints.size()-1;
1877 GetViewShowNPoints()->Render();
1878 RefreshCollectionText();
1879 RefreshColourCollection();
1884 //------------------------------------------------------------------------
1885 void WidgetShowNPoints::OnLoadCollectionsIdsCurrent_( std::string filename )
1887 FILE *ff = fopen( filename.c_str() , "r+" );
1888 int iGroup,sizeGroups;
1891 fscanf(ff," %s %d",chartmp,&mActualCollection); // ActualCollection
1892 fscanf(ff," %s %d",chartmp,&sizeGroups); // NumberOfGroups
1893 for (iGroup=0;iGroup<sizeGroups;iGroup++)
1895 fscanf(ff," %s %d",chartmp,&IdCurrentPoint); // CurrentPointId
1896 lstModelShowNPoints[iGroup]->SetIdCurrentPoint( IdCurrentPoint );
1899 GetViewShowNPoints()->Render();
1900 RefreshCollectionText();
1901 RefreshColourCollection();
1908 //------------------------------------------------------------------------
1909 void WidgetShowNPoints::OnLoadCollections(wxCommandEvent &event)
1911 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
1912 #if wxMAJOR_VERSION <= 2
1913 wxFileDialog* FD = new wxFileDialog( 0,
1914 _T("Load groups of points .."),
1917 _T("(*.xls)|*.xls"),
1918 wxOPEN | wxFILE_MUST_EXIST,
1921 wxFileDialog* FD = new wxFileDialog( 0,
1922 _T("Load groups of points .."),
1925 _T("(*.xls)|*.xls"),
1926 wxFD_OPEN | wxFD_FILE_MUST_EXIST,
1929 int result_FD = FD->ShowModal();
1930 // This line is need it by windows //EED
1931 FD->SetReturnCode( result_FD );
1932 if (FD->GetReturnCode()==wxID_OK)
1934 std::string filename= (const char*) ( FD->GetPath().mb_str() );
1935 UndoRedo_SaveCollection(); // A
1936 OnLoadCollections_( filename );
1937 UndoRedo_SaveCollection(); // B
1941 //------------------------------------------------------------------------
1942 void WidgetShowNPoints::GetCollectionPoint(int idCol,int idPoint, double *pPoint)
1945 lstModelShowNPoints[idCol]->GetIdPoint(idPoint,&x,&y,&z);
1950 //------------------------------------------------------------------------
1951 void WidgetShowNPoints::SetCollectionPoint(int idCol, int idPoint, std::vector<double> modPoint)
1953 if(idCol >= 0 && idCol < lstModelShowNPoints.size())
1955 lstModelShowNPoints[idCol]->SetPointById(idPoint, modPoint);
1956 lstViewShowNPoints[idCol]->RefreshPoint(idPoint);
1959 printf("WidgetShowNPoints::SetCollectionPoint ...Error... Invalid collection, out of range");
1962 //------------------------------------------------------------------------
1963 std::vector<double> WidgetShowNPoints::GetLstPointsX()
1967 return GetModelShowNPoints()->GetLstPointsX();
1969 std::vector<double> lst;
1971 int iG,sG=lstModelShowNPoints.size();
1972 for (iG=0 ; iG<sG ; iG++)
1974 std::vector<double> lstTmp = lstModelShowNPoints[iG]->GetLstPointsX();
1976 for (iP=0 ; iP<s ; iP++)
1978 lst.push_back( lstTmp[iP] );
1985 //------------------------------------------------------------------------
1986 std::vector<double> WidgetShowNPoints::GetLstPointsY()
1990 return GetModelShowNPoints()->GetLstPointsY();
1992 std::vector<double> lst;
1994 int iG,sG=lstModelShowNPoints.size();
1995 for (iG=0 ; iG<sG ; iG++)
1997 std::vector<double> lstTmp = lstModelShowNPoints[iG]->GetLstPointsY();
1999 for (iP=0 ; iP<s ; iP++)
2001 lst.push_back( lstTmp[iP] );
2008 //------------------------------------------------------------------------
2009 std::vector<double> WidgetShowNPoints::GetLstPointsZ()
2013 return GetModelShowNPoints()->GetLstPointsZ();
2015 std::vector<double> lst;
2017 int iG,sG=lstModelShowNPoints.size();
2018 for (iG=0 ; iG<sG ; iG++)
2020 std::vector<double> lstTmp = lstModelShowNPoints[iG]->GetLstPointsZ();
2022 for (iP=0 ; iP<s ; iP++)
2024 lst.push_back( lstTmp[iP] );
2032 //------------------------------------------------------------------------
2033 std::vector<std::string> WidgetShowNPoints::GetLstLabels()
2037 return GetModelShowNPoints()->GetLstLabels();
2039 std::vector< std::string > lst;
2041 int iG,sG=lstModelShowNPoints.size();
2042 for (iG=0 ; iG<sG ; iG++)
2044 std::vector< std::string > lstTmp = lstModelShowNPoints[iG]->GetLstLabels();
2046 for (iP=0 ; iP<s ; iP++)
2048 lst.push_back( lstTmp[iP] );
2055 //------------------------------------------------------------------------
2056 std::vector<int> WidgetShowNPoints::GetLstIndexs()
2058 std::vector<int> lstIndexs;
2061 lstIndexs.push_back( GetModelShowNPoints()->GetLstPointsSize() );
2063 int iG,sG=lstModelShowNPoints.size();
2064 for (iG=0 ; iG<sG ; iG++)
2066 lstIndexs.push_back( lstModelShowNPoints[iG]->GetLstPointsSize() );
2072 //------------------------------------------------------------------------
2073 std::vector<int> WidgetShowNPoints::GetLstSelectedIndexs()
2075 std::vector<int> lstSelectedIndexs;
2076 if ( (cbVisuActualCollection!=NULL) && (cbVisuActualCollection->GetValue()==true) )
2078 lstSelectedIndexs.push_back( mActualCollection );
2080 return lstSelectedIndexs;
2083 //------------------------------------------------------------------------
2084 int WidgetShowNPoints::GetLstModelShowNPointsSize()
2086 return lstModelShowNPoints.size();
2089 //------------------------------------------------------------------------
2090 void WidgetShowNPoints::InvertLstPoints_()
2092 int i,size=lstModelShowNPoints.size();
2094 for (i=0 ; i < size ; i++)
2096 lstModelShowNPoints[i]->InversLstPoints();
2100 ModelShowNPoints* tmpModel;
2102 for (i=0 ; i < size2 ; i++)
2104 tmpModel = lstModelShowNPoints[i];
2105 lstModelShowNPoints[i] = lstModelShowNPoints[size-1-i];
2106 lstModelShowNPoints[size-1-i] = tmpModel;
2111 //------------------------------------------------------------------------
2112 void WidgetShowNPoints::OnInvertLstPoints_()
2114 UndoRedo_SaveCollection(); // A
2115 StopAutoAddPoints();
2119 UndoRedo_SaveCollection(); // B
2123 //------------------------------------------------------------------------
2124 std::string WidgetShowNPoints::GetUndoRedoFileName()
2127 sprintf(buff,"%p_%d",this, idUndoRedo);
2128 return UndoRedoDir+"/"+"UndoRedo_collection_" + std::string(buff) + ".undoredo";
2132 //------------------------------------------------------------------------
2133 void WidgetShowNPoints::OnUndo(wxCommandEvent &event)
2135 ResetCollections_();
2136 // if (idUndoRedo==maxUndoRedo+1)
2139 // } // if idUndoRedo+1
2146 OnLoadCollections_( GetUndoRedoFileName() );
2147 OnLoadCollectionsIdsCurrent_( GetUndoRedoFileName()+".current" );
2153 //------------------------------------------------------------------------
2154 void WidgetShowNPoints::OnRedo(wxCommandEvent &event)
2156 if (idUndoRedo>maxUndoRedo)
2158 idUndoRedo=maxUndoRedo+1;
2160 ResetCollections_();
2161 OnLoadCollections_( GetUndoRedoFileName() );
2162 OnLoadCollectionsIdsCurrent_( GetUndoRedoFileName()+".current" );
2167 //------------------------------------------------------------------------
2168 void WidgetShowNPoints::UndoRedo_SaveCollection()
2170 OnSaveCollections_( GetUndoRedoFileName() );
2171 OnSaveCollectionsIdsCurrent_( GetUndoRedoFileName()+".current" );
2172 maxUndoRedo = idUndoRedo;
2176 //------------------------------------------------------------------------
2177 void WidgetShowNPoints::SetAuxMesh(vtkPolyData* mesh, std::vector<double> spc, std::vector<double> params)
2181 if (params.size()==1)
2183 aux_mesh_type = params[0];
2189 //------------------------------------------------------------------------
2190 void WidgetShowNPoints::OnVisuActualCollection(wxCommandEvent &event)
2192 RefreshCollectionText();
2193 RefreshColourCollection();