undo: make picture (media) deletion undoable

The code is rather complex. Firstly, we have different representations
of pictures throughout the code. Secondly, this tries to do add the
pictures in batches to the divepicture model and that is always rather
tricky.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-04-17 23:18:58 +02:00 committed by Dirk Hohndel
parent 9962d47b56
commit 434644b381
13 changed files with 286 additions and 54 deletions

View file

@ -30,7 +30,7 @@ static bool picture_less_than(struct picture a, struct picture b)
static MAKE_GROW_TABLE(picture_table, struct picture, pictures)
static MAKE_GET_INSERTION_INDEX(picture_table, struct picture, pictures, picture_less_than)
MAKE_ADD_TO(picture_table, struct picture, pictures)
static MAKE_REMOVE_FROM(picture_table, pictures)
MAKE_REMOVE_FROM(picture_table, pictures)
MAKE_SORT(picture_table, struct picture, pictures, comp_pictures)
//MAKE_REMOVE(picture_table, struct picture, picture)
MAKE_CLEAR_TABLE(picture_table, pictures, picture)
@ -66,13 +66,3 @@ int get_picture_idx(const struct picture_table *t, const char *filename)
}
return -1;
}
// Return true if picture was found and deleted
bool remove_picture(struct picture_table *t, const char *filename)
{
int idx = get_picture_idx(t, filename);
if (idx < 0)
return false;
remove_from_picture_table(t, idx);
return true;
}