diff --git a/picard/item.py b/picard/item.py index cdf2ce0e0..a5ee649bf 100644 --- a/picard/item.py +++ b/picard/item.py @@ -229,16 +229,14 @@ class MetadataItem(Item): Args: added_sources: List of child objects (`Track` or `File`) which's metadata images should be added to current object """ - from picard.util.imagelist import _add_images - state = self._get_imagelist_state() (added_new_images, added_orig_images) = state.get_metadata_images(added_sources) changed = False if state.update_new_metadata: - changed |= _add_images(self.metadata, added_new_images) + changed |= self.metadata.add_images(added_new_images) if state.update_orig_metadata: - changed |= _add_images(self.orig_metadata, added_orig_images) + changed |= self.orig_metadata.add_images(added_orig_images) return changed diff --git a/picard/metadata.py b/picard/metadata.py index 0b62b8208..5129d97cc 100644 --- a/picard/metadata.py +++ b/picard/metadata.py @@ -586,6 +586,18 @@ class Metadata(MutableMapping): def __str__(self): return ("store: %r\ndeleted: %r\nimages: %r\nlength: %r" % (self._store, self.deleted_tags, [str(img) for img in self.images], self.length)) + def add_images(self, added_images): + if not added_images: + return False + + current_images = set(self.images) + if added_images.isdisjoint(current_images): + self.images = ImageList(current_images.union(added_images)) + self.has_common_images = False + return True + + return False + class MultiMetadataProxy: """ diff --git a/picard/util/imagelist.py b/picard/util/imagelist.py index 57cda0ee2..c62caef80 100644 --- a/picard/util/imagelist.py +++ b/picard/util/imagelist.py @@ -149,19 +149,6 @@ class ImageListState: self.first_orig_obj = False -def _add_images(metadata, added_images): - if not added_images: - return False - - current_images = set(metadata.images) - if added_images.isdisjoint(current_images): - metadata.images = ImageList(current_images.union(added_images)) - metadata.has_common_images = False - return True - - return False - - def _remove_images(metadata, sources, removed_images): """Removes `removed_images` from metadata `images`, but only if they are not included in `sources`.