diff options
author | Anton Khirnov <wyskas@gmail.com> | 2009-08-20 08:39:39 +0200 |
---|---|---|
committer | Anton Khirnov <wyskas@gmail.com> | 2009-08-20 08:39:39 +0200 |
commit | e9560f544db851794e40cccbc863b005f7f81428 (patch) | |
tree | 2eb1db90d2d91d0dfe93c929ba423c549ec35cfd /nephilim/plugins/Lyrics.py | |
parent | 7790b992f923ea7879f73c32a35f887ea40ae87d (diff) |
Lyrics: user-selectable site priority.
Diffstat (limited to 'nephilim/plugins/Lyrics.py')
-rw-r--r-- | nephilim/plugins/Lyrics.py | 33 |
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) |