summaryrefslogtreecommitdiff
path: root/nephilim/plugins
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-08-21 16:32:42 +0200
committerAnton Khirnov <wyskas@gmail.com>2009-08-21 16:37:24 +0200
commita693ce9aa4c0a5389e2fdfa7181c05c61377f0d4 (patch)
tree41f0c40eb7f503efc2e36c8697e21ea01d97e436 /nephilim/plugins
parent8e0347163d68e68185e0bcd9aa9a17f170efdb0d (diff)
AlbumCover: implement manually setting cover
again ;)
Diffstat (limited to 'nephilim/plugins')
-rw-r--r--nephilim/plugins/AlbumCover.py40
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: