setup the "remove images" feature.

This commit is contained in:
Davis King 2011-06-19 11:11:53 -04:00
parent c73113920b
commit 8cd8cfe357
1 changed files with 35 additions and 1 deletions

View File

@ -4,6 +4,7 @@
#include "metadata_editor.h"
#include <dlib/array.h>
#include <dlib/queue.h>
#include <dlib/static_set.h>
using namespace std;
using namespace dlib;
@ -102,6 +103,39 @@ file_save_as()
void metadata_editor::
remove_selected_images()
{
dlib::queue<unsigned long>::kernel_1a list;
lb_images.get_selected(list);
list.reset();
while (list.move_next())
{
lb_images.unselect(list.element());
}
// remove all the selected items from metadata.images
dlib::static_set<unsigned long>::kernel_1a to_remove;
to_remove.load(list);
std::vector<dlib::image_dataset_metadata::image> images;
for (unsigned long i = 0; i < metadata.images.size(); ++i)
{
if (to_remove.is_member(i) == false)
{
images.push_back(metadata.images[i]);
}
}
images.swap(metadata.images);
// reload metadata into lb_images
dlib::array<std::string>::expand_1a files;
files.resize(metadata.images.size());
for (unsigned long i = 0; i < metadata.images.size(); ++i)
{
files[i] = metadata.images[i].filename;
}
lb_images.load(files);
select_image(0);
}
// ----------------------------------------------------------------------------------------
@ -116,7 +150,7 @@ on_window_resized(
get_size(width, height);
lb_images.set_pos(0,mbar.bottom()+1);
lb_images.set_size(150, height - mbar.height());
lb_images.set_size(180, height - mbar.height());
}
// ----------------------------------------------------------------------------------------