diff options
author | Anton Khirnov <wyskas@gmail.com> | 2009-08-21 16:32:42 +0200 |
---|---|---|
committer | Anton Khirnov <wyskas@gmail.com> | 2009-08-21 16:37:24 +0200 |
commit | a693ce9aa4c0a5389e2fdfa7181c05c61377f0d4 (patch) | |
tree | 41f0c40eb7f503efc2e36c8697e21ea01d97e436 /nephilim/plugins | |
parent | 8e0347163d68e68185e0bcd9aa9a17f170efdb0d (diff) |
AlbumCover: implement manually setting cover
again ;)
Diffstat (limited to 'nephilim/plugins')
-rw-r--r-- | nephilim/plugins/AlbumCover.py | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/nephilim/plugins/AlbumCover.py b/nephilim/plugins/AlbumCover.py index 5250e1e..a38a474 100644 --- a/nephilim/plugins/AlbumCover.py +++ b/nephilim/plugins/AlbumCover.py @@ -43,11 +43,12 @@ class AlbumCoverWidget(QtGui.QLabel): self.setAlignment(QtCore.Qt.AlignCenter) # popup menu - self._menu = QtGui.QMenu("album") - refresh = self._menu.addAction('&Refresh cover.', self.plugin.refresh) - view_action = self._menu.addAction('&View in a separate window.', self.__view_cover) - save_action = self._menu.addAction('Save cover &as...', self.__save_cover) - clear_action = self._menu.addAction('&Clear cover.', self.__clear_cover) + self._menu = QtGui.QMenu('album') + self._menu.addAction('&Select cover file...', self.plugin.select_cover) + self._menu.addAction('&Refresh cover.', self.plugin.refresh) + self._menu.addAction('&View in a separate window.', self.__view_cover) + self._menu.addAction('Save cover &as...', self.__save_cover) + self._menu.addAction('&Clear cover.', self.__clear_cover) def contextMenuEvent(self, event): event.accept() @@ -135,6 +136,11 @@ class AlbumCover(Plugin): elif self.__results >= len(self.__fetchers) and not self.o.cover_loaded: self.o.set_cover(song, None) + def __abort_fetch(self): + """Aborts all fetches currently in progress.""" + for fetcher in self.__fetchers: + fetcher.abort() + class SettingsWidgetAlbumCover(Plugin.SettingsWidget): coverdir = None covername = None @@ -300,6 +306,9 @@ class AlbumCover(Plugin): self.logger.info('No matching cover found') self.finished.emit(song, None) + def abort(self): + pass + #### public #### def _load(self): self.o = AlbumCoverWidget(self) @@ -369,6 +378,27 @@ class AlbumCover(Plugin): if not QtCore.QFile.remove(path): self.logger.error('Error removing file %s.'%path) + def select_cover(self): + """Prompt user to manually select cover file for current song.""" + song = self.mpclient.current_song() + if not song: + return + self.__abort_fetch() + + file = QtGui.QFileDialog.getOpenFileName(None, + 'Select album cover for %s - %s'%(song.artist(), song.album()), + self.__cover_dir, '') + if not file: + return + + cover = QtGui.QPixmap(file) + if cover.isNull(): + self.logger.error('Error opening cover file.') + return + + if self.settings.value(self.name + '/store').toBool(): + self.save_cover_file(cover) + self.o.set_cover(song, cover) def cover(self): if not self.o: |