summaryrefslogtreecommitdiff
path: root/nephilim/plugins/Lyrics.py
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-08-20 08:39:39 +0200
committerAnton Khirnov <wyskas@gmail.com>2009-08-20 08:39:39 +0200
commite9560f544db851794e40cccbc863b005f7f81428 (patch)
tree2eb1db90d2d91d0dfe93c929ba423c549ec35cfd /nephilim/plugins/Lyrics.py
parent7790b992f923ea7879f73c32a35f887ea40ae87d (diff)
Lyrics: user-selectable site priority.
Diffstat (limited to 'nephilim/plugins/Lyrics.py')
-rw-r--r--nephilim/plugins/Lyrics.py33
1 files changed, 30 insertions, 3 deletions
diff --git a/nephilim/plugins/Lyrics.py b/nephilim/plugins/Lyrics.py
index 18f5d1e..e4aa723 100644
--- a/nephilim/plugins/Lyrics.py
+++ b/nephilim/plugins/Lyrics.py
@@ -109,7 +109,7 @@ class Lyrics(Plugin):
DEFAULTS = {'sites' : QtCore.QStringList(['Lyricwiki', 'Animelyrics']), 'lyricdir' : '$musicdir/$songdir',
'lyricname' : '.lyrics_nephilim_$artist_$album_$title', 'store' : True}
"implemented fetchers"
- __available_sites = None
+ available_sites = None
"enabled fetchers, those with higher priority first"
__fetchers = None
"number of returned results from last refresh() call"
@@ -126,7 +126,7 @@ class Lyrics(Plugin):
Plugin.__init__(self, parent, mpclient, name)
self.__fetchers = []
- self.__available_sites = [self.FetchLyricwiki, self.FetchAnimelyrics]
+ self.available_sites = [self.FetchLyricwiki, self.FetchAnimelyrics]
def __new_lyrics_fetched(self, song, lyrics):
self.logger.info('Got new lyrics.')
@@ -270,9 +270,11 @@ class Lyrics(Plugin):
self.finish(lyrics)
class SettingsWidgetLyrics(Plugin.SettingsWidget):
+ # private
lyricdir = None
lyricname = None
store = None
+ sitelist = None
def __init__(self, plugin):
Plugin.SettingsWidget.__init__(self, plugin)
@@ -303,8 +305,24 @@ class Lyrics(Plugin):
self.store.layout().addWidget(QtGui.QLabel('Lyrics filename'), 1, 0)
self.store.layout().addWidget(self.lyricname, 1, 1)
+ # sites list
+ sites = self.settings.value('sites').toStringList()
+ self.sitelist = QtGui.QListWidget(self)
+ self.sitelist.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
+ for site in sites:
+ it = QtGui.QListWidgetItem(site)
+ it.setCheckState(QtCore.Qt.Checked)
+ self.sitelist.addItem(it)
+ for site in self.plugin.available_sites:
+ if not site.name in sites:
+ it = QtGui.QListWidgetItem(site.name)
+ it.setCheckState(QtCore.Qt.Unchecked)
+ self.sitelist.addItem(it)
+
self.setLayout(QtGui.QVBoxLayout())
self.layout().addWidget(self.store)
+ self._add_widget(self.sitelist, label = 'Sites', tooltip = 'A list of sources used for fetching lyrics.\n'
+ 'Use drag and drop to change their priority.')
self.settings.endGroup()
@@ -313,7 +331,16 @@ class Lyrics(Plugin):
self.settings.setValue('lyricdir', QVariant(self.lyricdir.text()))
self.settings.setValue('lyricname', QVariant(self.lyricname.text()))
self.settings.setValue('store', QVariant(self.store.isChecked()))
+
+ sites = QtCore.QStringList()
+ for i in range(self.sitelist.count()):
+ it = self.sitelist.item(i)
+ if it.checkState() == QtCore.Qt.Checked:
+ sites.append(it.text())
+ self.settings.setValue('sites', QVariant(sites))
+
self.settings.endGroup()
+ self.plugin.refresh_fetchers()
self.plugin.refresh()
#### public ####
@@ -396,7 +423,7 @@ class Lyrics(Plugin):
self.__fetchers = []
# append fetchers in order they are stored in settings
for name in self.settings.value('%s/sites'%self.name).toStringList():
- for site in self.__available_sites:
+ for site in self.available_sites:
if site.name == name:
self.__fetchers.append(site(self))
self.connect(self.__fetchers[-1], QtCore.SIGNAL('finished'), self.__new_lyrics_fetched)