summaryrefslogtreecommitdiff
path: root/nephilim/plugins/AlbumCover.py
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-03-02 17:20:07 +0100
committerAnton Khirnov <wyskas@gmail.com>2009-03-02 17:20:07 +0100
commit28ecec51d865a8f8dfa122d388fd35b70f809b45 (patch)
tree535336f558b8ea54925aff5b59891ff42c6c6c09 /nephilim/plugins/AlbumCover.py
parent1fc350e98515b4e80ee74382e7bb8e5f4bca493e (diff)
AlbumCover: return support for storing covers.
Diffstat (limited to 'nephilim/plugins/AlbumCover.py')
-rw-r--r--nephilim/plugins/AlbumCover.py64
1 files changed, 45 insertions, 19 deletions
diff --git a/nephilim/plugins/AlbumCover.py b/nephilim/plugins/AlbumCover.py
index 2fe644a..cf1cdbe 100644
--- a/nephilim/plugins/AlbumCover.py
+++ b/nephilim/plugins/AlbumCover.py
@@ -35,15 +35,23 @@ class wgAlbumCover(QtGui.QLabel):
if event.button() == QtCore.Qt.RightButton:
self.menu.popup(event.globalPos())
-
- def set_cover(self, cover):
+ def set_cover(self, cover, write):
+ logging.info('Setting cover')
if not cover or cover.isNull():
self.cover_loaded = False
self.setPixmap(QtGui.QPixmap('gfx/no-cd-cover.png'))
return
self.cover = cover
+ self.cover_loaded = True
self.setPixmap(cover.scaled(self.size(), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation))
+ logging.info('Cover set.')
+
+ if write and self.p.settings.value(self.p.getName() + '/store').toBool():
+ if cover.save(self.cover_filepath, 'png'):
+ logging.info('Cover saved.')
+ else:
+ logging.error('Error saving cover.')
def get_cover(self):
if self.cover_loaded:
@@ -66,6 +74,7 @@ class wgAlbumCover(QtGui.QLabel):
self.fetch_cover(song)
def fetch_cover(self, song):
+ write = False
if not QtCore.QFile.exists(self.cover_filepath):
for i in (0, 1):
src = self.p.settings.value(self.p.getName() + '/method%i'%i).toInt()[0]
@@ -77,11 +86,12 @@ class wgAlbumCover(QtGui.QLabel):
cover = QtGui.QPixmap()
if cover and not cover.isNull():
+ write = True
break
else:
cover = QtGui.QPixmap(self.cover_filepath)
- self.set_cover(cover)
+ self.set_cover(cover, write)
def fetch_local_manual(self):
song = self.p.mpclient.getCurrentSong()
@@ -94,7 +104,7 @@ class wgAlbumCover(QtGui.QLabel):
cover = QtGui.QPixmap(file)
if cover.isNull():
return
- self.set_cover(cover)
+ self.set_cover(cover, True)
self.cover_loaded = True
def fetch_local(self, song):
@@ -135,7 +145,7 @@ class wgAlbumCover(QtGui.QLabel):
if not song:
return
cover = self.fetch_amazon(song)
- self.set_cover(cover)
+ self.set_cover(cover, True)
def fetch_amazon(self, song):
if not song.getArtist() or not song.getAlbum():
@@ -155,7 +165,7 @@ class wgAlbumCover(QtGui.QLabel):
class AlbumCover(Plugin):
o = None
DEFAULTS = {'coverdir' : '$musicdir/$songdir', 'covername' : '.cover_nephilim_$artist_$album',
- 'method0' : 1, 'method1' : 1}
+ 'method0' : 1, 'method1' : 1, 'store' : True}
def __init__(self, winMain):
Plugin.__init__(self, winMain, 'AlbumCover')
self.addListener('onSongChange' , self.refresh)
@@ -183,34 +193,49 @@ class AlbumCover(Plugin):
methods = []
coverdir = None
covername = None
+ store = None
def __init__(self, plugin):
Plugin.SettingsWidget.__init__(self, plugin)
self.settings.beginGroup(self.plugin.getName())
+ # fetching methods comboboxes
self.methods = [QtGui.QComboBox(), QtGui.QComboBox()]
for i,method in enumerate(self.methods):
- method.addItem("No method.")
- method.addItem("Local dir")
- method.addItem("Amazon")
+ method.addItem('No method.')
+ method.addItem('Local dir')
+ method.addItem('Amazon')
method.setCurrentIndex(self.settings.value('method' + str(i)).toInt()[0])
+ # store covers groupbox
+ self.store = QtGui.QGroupBox('Store covers.')
+ self.store.setToolTip('Should %s store its own copy of covers?'%APPNAME)
+ self.store.setCheckable(True)
+ self.store.setChecked(self.settings.value('store').toBool())
+ self.store.setLayout(QtGui.QGridLayout())
+
+ # paths to covers
self.coverdir = QtGui.QLineEdit(self.settings.value('coverdir').toString())
+ self.coverdir.setToolTip('Where should %s store covers.\n'
+ '$musicdir will be expanded to path to MPD music library (as set by user)\n'
+ '$songdir will be expanded to path to the song (relative to $musicdir\n'
+ 'other tags same as in covername'
+ %APPNAME)
self.covername = QtGui.QLineEdit(self.settings.value('covername').toString())
+ self.covername.setToolTip('Filename for %s cover files.\n'
+ 'All tags supported by MPD will be expanded to their\n'
+ 'values for current song, e.g. $title, $track, $artist,\n'
+ '$album, $genre etc.'%APPNAME)
+ self.store.layout().addWidget(QtGui.QLabel('Cover directory'), 0, 0)
+ self.store.layout().addWidget(self.coverdir, 0, 1)
+ self.store.layout().addWidget(QtGui.QLabel('Cover filename'), 1, 0)
+ self.store.layout().addWidget(self.covername, 1, 1)
self.setLayout(QtGui.QVBoxLayout())
self._add_widget(self.methods[0], 'Method 0', 'Method to try first.')
self._add_widget(self.methods[1], 'Method 1', 'Method to try if the first one fails.')
- self._add_widget(self.coverdir, 'Cover directory',
- 'Where should %s store covers.\n'
- '$musicdir will be expanded to path to MPD music library\n'
- '$songdir will be expanded to path to the song (relative to $musicdir\n'
- 'other tags same as in covername'
- %APPNAME)
- self._add_widget(self.covername, 'Cover filename', 'Filename for %s cover files.\n'
- 'All tags supported by MPD will be expanded to their\n'
- 'values for current song, e.g. $title, $track, $artist,\n'
- '$album, $genre etc.'%APPNAME)
+ self.layout().addWidget(self.store)
+
self.settings.endGroup()
def save_settings(self):
@@ -219,6 +244,7 @@ class AlbumCover(Plugin):
self.settings.setValue('method1', QVariant(self.methods[1].currentIndex()))
self.settings.setValue('coverdir', QVariant(self.coverdir.text()))
self.settings.setValue('covername', QVariant(self.covername.text()))
+ self.settings.setValue('store', QVariant(self.store.isChecked()))
self.settings.endGroup()
self.plugin.o.refresh()