diff --git a/guilib/src/DatabaseViewer.cpp b/guilib/src/DatabaseViewer.cpp index d5b4b20e..22f7f82f 100644 --- a/guilib/src/DatabaseViewer.cpp +++ b/guilib/src/DatabaseViewer.cpp @@ -1262,7 +1262,10 @@ void DatabaseViewer::updateIds() if(ids_.size()) { updateLoopClosuresSlider(); - updateGraphView(); + if(ui_->graphViewer->isVisible()) + { + updateGraphView(); + } } } @@ -1369,6 +1372,16 @@ void DatabaseViewer::generateLocalGraph() void DatabaseViewer::generateTOROGraph() { + if(graphes_.empty()) + { + this->updateGraphView(); + if(graphes_.empty() || ui_->horizontalSlider_iterations->maximum() != (int)graphes_.size()-1) + { + QMessageBox::warning(this, tr("Cannot generate a graph"), tr("No graph in database?!")); + return; + } + } + if(!graphes_.size() || !graphLinks_.size()) { QMessageBox::warning(this, tr("Cannot generate a TORO graph"), tr("No poses or no links...")); @@ -1401,6 +1414,16 @@ void DatabaseViewer::generateTOROGraph() void DatabaseViewer::generateG2OGraph() { + if(graphes_.empty()) + { + this->updateGraphView(); + if(graphes_.empty() || ui_->horizontalSlider_iterations->maximum() != (int)graphes_.size()-1) + { + QMessageBox::warning(this, tr("Cannot generate a graph"), tr("No graph in database?!")); + return; + } + } + if(!graphes_.size() || !graphLinks_.size()) { QMessageBox::warning(this, tr("Cannot generate a g2o graph"), tr("No poses or no links...")); @@ -1548,6 +1571,17 @@ void DatabaseViewer::generate3DMap() QMessageBox::warning(this, tr("Cannot generate a graph"), tr("The database is empty...")); return; } + + if(graphes_.empty()) + { + this->updateGraphView(); + if(graphes_.empty() || ui_->horizontalSlider_iterations->maximum() != (int)graphes_.size()-1) + { + QMessageBox::warning(this, tr("Cannot generate a graph"), tr("No graph in database?!")); + return; + } + } + bool ok = false; QStringList items; items.append("1"); @@ -1622,6 +1656,16 @@ void DatabaseViewer::generate3DMap() void DatabaseViewer::detectMoreLoopClosures() { + if(graphes_.empty()) + { + this->updateGraphView(); + if(graphes_.empty() || ui_->horizontalSlider_iterations->maximum() != (int)graphes_.size()-1) + { + QMessageBox::warning(this, tr("Cannot generate a graph"), tr("No graph in database?!")); + return; + } + } + const std::map & optimizedPoses = graphes_.back(); int iterations = ui_->spinBox_detectMore_iterations->value(); @@ -3039,11 +3083,6 @@ void DatabaseViewer::sliderIterationsValueChanged(int value) } void DatabaseViewer::updateGraphView() { - if(!ui_->graphViewer->isVisible()) - { - return; - } - ui_->label_loopClosures->clear(); ui_->label_poses->clear(); if(poses_.size())