From 64416c062036344307b31c5f7aca6a289553da67 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 6 Jan 2010 21:10:19 +0100 Subject: [PATCH 1/2] Added method album.run_when_loaded to run a function as soon as the album is completely loaded. --- picard/album.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/picard/album.py b/picard/album.py index 020d0d6f3..0c4f9052f 100644 --- a/picard/album.py +++ b/picard/album.py @@ -26,7 +26,7 @@ from picard.file import File from picard.track import Track from picard.script import ScriptParser from picard.ui.item import Item -from picard.util import format_time, partial, translate_artist +from picard.util import format_time, partial, translate_artist, queue from picard.cluster import Cluster from picard.mbxml import release_to_metadata, track_to_metadata @@ -104,6 +104,7 @@ class Album(DataObject, Item): self._requests = 0 self._catalognumber = catalognumber self._discid = discid + self._after_load_callbacks = queue.Queue() self.current_release_event = None self.release_events = [] self.unmatched_files = Cluster(_("Unmatched Files"), special=2, related_album=self) @@ -309,6 +310,9 @@ class Album(DataObject, Item): break self.update() self.tagger.window.set_statusbar_message('Album %s loaded', self.id, timeout=3000) + while self._after_load_callbacks.qsize() > 0: + func = self._after_load_callbacks.get() + func() def load(self, force=False): if self._requests: @@ -342,6 +346,12 @@ class Album(DataObject, Item): self.config.setting["password"]) self.tagger.xmlws.get_release_by_id(self.id, self._release_request_finished, inc=inc) + def run_when_loaded(self, func): + if self.loaded: + func() + else: + self._after_load_callbacks.put(func) + def update(self, update_tracks=True): self.tagger.emit(QtCore.SIGNAL("album_updated"), self, update_tracks) From 06b53c04f47e4971ca119230d0c9a53ec3cb9050 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 6 Jan 2010 21:17:02 +0100 Subject: [PATCH 2/2] Ensure that tagger.move_file_to_track adds the file to the correct track even if the album is not already loaded. --- picard/tagger.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/picard/tagger.py b/picard/tagger.py index 18cbd0e6c..78bdf4d8c 100644 --- a/picard/tagger.py +++ b/picard/tagger.py @@ -256,10 +256,8 @@ class Tagger(QtGui.QApplication): def move_file_to_track(self, file, albumid, trackid): """Move `file` to track `trackid` on album `albumid`.""" album = self.load_album(albumid) - if album.loaded: - album.match_file(file, trackid) - else: - file.move(album.unmatched_files) + file.move(album.unmatched_files) + album.run_when_loaded(partial(album.match_file, file, trackid)) def exit(self): self.stopping = True