From 7fa559247d0ec9c9aa6d9d642c8de0b19ab69259 Mon Sep 17 00:00:00 2001 From: matlabbe Date: Thu, 5 Jan 2017 21:10:26 -0500 Subject: [PATCH] DbViewer: disable "Add" button if one of the current images selected is not in the graph --- guilib/src/DatabaseViewer.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/guilib/src/DatabaseViewer.cpp b/guilib/src/DatabaseViewer.cpp index 43e6b5b4..1cd343aa 100644 --- a/guilib/src/DatabaseViewer.cpp +++ b/guilib/src/DatabaseViewer.cpp @@ -3672,7 +3672,7 @@ void DatabaseViewer::updateConstraintButtons() int from = ids_.at(ui_->horizontalSlider_A->value()); int to = ids_.at(ui_->horizontalSlider_B->value()); - if(from!=to && from && to) + if(from!=to && from && to && poses_.find(from) != poses_.end() && poses_.find(to) != poses_.end()) { if((!containsLink(links_, from ,to) && !containsLink(linksAdded_, from ,to)) || containsLink(linksRemoved_, from ,to)) @@ -4348,10 +4348,13 @@ bool DatabaseViewer::addConstraint(int from, int to, bool silent, bool updateGra Optimizer * optimizer = Optimizer::create(ui_->parameters_toolbox->getParameters()); std::map poses; std::multimap links; + UASSERT(poses_.find(fromId) != poses_.end()); + UASSERT_MSG(poses_.find(newLink.from()) != poses_.end(), uFormat("id=%d poses=%d links=%d", newLink.from(), (int)poses.size(), (int)links.size()).c_str()); + UASSERT_MSG(poses_.find(newLink.to()) != poses_.end(), uFormat("id=%d poses=%d links=%d", newLink.to(), (int)poses.size(), (int)links.size()).c_str()); optimizer->getConnectedGraph(fromId, poses_, linksIn, poses, links); UASSERT(poses.find(fromId) != poses.end()); - UASSERT(poses.find(newLink.from()) != poses.end()); - UASSERT(poses.find(newLink.to()) != poses.end()); + UASSERT_MSG(poses.find(newLink.from()) != poses.end(), uFormat("id=%d poses=%d links=%d", newLink.from(), (int)poses.size(), (int)links.size()).c_str()); + UASSERT_MSG(poses.find(newLink.to()) != poses.end(), uFormat("id=%d poses=%d links=%d", newLink.to(), (int)poses.size(), (int)links.size()).c_str()); UASSERT(graph::findLink(links, newLink.from(), newLink.to()) != links.end()); poses = optimizer->optimize(fromId, poses, links); std::string msg;