@@ -181,23 +181,28 @@ ControlTabWidget::ControlTabWidget(HandEyeCalibrationDisplay* pdisplay, QWidget*
181181 // Manual calibration area
182182 QGroupBox* manual_cal_group = new QGroupBox (" Manual Calibration" );
183183 layout_right->addWidget (manual_cal_group);
184- QHBoxLayout * control_cal_layout = new QHBoxLayout ();
184+ QGridLayout * control_cal_layout = new QGridLayout ();
185185 manual_cal_group->setLayout (control_cal_layout);
186186
187187 take_sample_btn_ = new QPushButton (" Take sample" );
188- take_sample_btn_->setMinimumHeight (35 );
188+ take_sample_btn_->setMinimumHeight (25 );
189189 connect (take_sample_btn_, SIGNAL (clicked (bool )), this , SLOT (takeSampleBtnClicked (bool )));
190- control_cal_layout->addWidget (take_sample_btn_);
190+ control_cal_layout->addWidget (take_sample_btn_, 0 , 0 );
191191
192- reset_sample_btn_ = new QPushButton (" Clear samples" );
193- reset_sample_btn_->setMinimumHeight (35 );
192+ delete_latest_btn_ = new QPushButton (" Delete latest sample" );
193+ delete_latest_btn_->setMinimumHeight (25 );
194+ connect (delete_latest_btn_, SIGNAL (clicked (bool )), this , SLOT (deleteLatestSampleBtnClicked (bool )));
195+ control_cal_layout->addWidget (delete_latest_btn_, 0 , 1 );
196+
197+ reset_sample_btn_ = new QPushButton (" Clear all samples" );
198+ reset_sample_btn_->setMinimumHeight (25 );
194199 connect (reset_sample_btn_, SIGNAL (clicked (bool )), this , SLOT (clearSamplesBtnClicked (bool )));
195- control_cal_layout->addWidget (reset_sample_btn_);
200+ control_cal_layout->addWidget (reset_sample_btn_, 1 , 0 );
196201
197202 solve_btn_ = new QPushButton (" Solve" );
198- solve_btn_->setMinimumHeight (35 );
203+ solve_btn_->setMinimumHeight (25 );
199204 connect (solve_btn_, SIGNAL (clicked (bool )), this , SLOT (solveBtnClicked (bool )));
200- control_cal_layout->addWidget (solve_btn_);
205+ control_cal_layout->addWidget (solve_btn_, 1 , 1 );
201206
202207 // Auto calibration area
203208 QGroupBox* auto_cal_group = new QGroupBox (" Calibrate With Recorded Joint States" );
@@ -580,6 +585,24 @@ void ControlTabWidget::takeSampleBtnClicked(bool clicked)
580585 }
581586}
582587
588+ void ControlTabWidget::deleteLatestSampleBtnClicked (bool clicked)
589+ {
590+ if (joint_states_.empty ())
591+ {
592+ QMessageBox::warning (this , tr (" Empty Pose samples" ), tr (" Cannot delete last sample, list is already empty." ));
593+ return ;
594+ }
595+
596+ // Delete latest recorded transform
597+ effector_wrt_world_.pop_back ();
598+ object_wrt_sensor_.pop_back ();
599+
600+ // Delete latest recorded joint state, update progress bar
601+ joint_states_.pop_back ();
602+ tree_view_model_->takeRow (joint_states_.size ());
603+ auto_progress_->setMax (joint_states_.size ());
604+ }
605+
583606void ControlTabWidget::clearSamplesBtnClicked (bool clicked)
584607{
585608 // Clear recorded transforms
0 commit comments