From 98a1aadf64241132d5ef1f44fe5105099cfaa918 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 30 Dec 2010 09:40:25 +0100 Subject: Songinfo: reformat to new style --- nephilim/plugins/Songinfo.py | 100 +++++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 46 deletions(-) diff --git a/nephilim/plugins/Songinfo.py b/nephilim/plugins/Songinfo.py index aee58da..074bb30 100644 --- a/nephilim/plugins/Songinfo.py +++ b/nephilim/plugins/Songinfo.py @@ -20,23 +20,24 @@ from PyQt4 import QtGui, QtCore from ..plugin import Plugin class Songinfo(Plugin): - # public, const + + #### PUBLIC #### + # const info = 'Displays song metadata provided by MPD.' - # public, read-only + # read-only o = None tags = None - # private + #### PRIVATE #### DEFAULTS = {'tagtypes' : ['track', 'title', 'artist', 'album', 'albumartist', 'disc', 'genre', 'date', 'composer', 'performer', 'file']} - #### public #### + #### PUBLIC #### def __init__(self, parent, mpclient, name): Plugin.__init__(self, parent, mpclient, name) - self.__tags = [] - + self.tags = [] def _load(self): self.o = SonginfoWidget(self) self.mpclient.song_changed.connect(self.refresh) @@ -45,21 +46,18 @@ class Songinfo(Plugin): if self.mpclient.is_connected(): self.update_tagtypes() self.refresh() - def _unload(self): self.mpclient.song_changed.disconnect(self.refresh) self.mpclient.connect_changed.disconnect(self.update_tagtypes) self.o = None - def _get_dock_widget(self): return self._create_dock(self.o) - def get_settings_widget(self): return SettingsWidgetSonginfo(self) def update_tagtypes(self): - self.__tags = [tag for tag in self.settings.value(self.name + '/tagtypes') if tag in self.mpclient.tagtypes] - self.o.set_tagtypes(self.__tags) + self.tags = [tag for tag in self.settings.value(self.name + '/tagtypes') if tag in self.mpclient.tagtypes] + self.o.set_tagtypes(self.tags) def refresh(self): self.logger.info('Refreshing.') metadata = {} @@ -68,23 +66,32 @@ class Songinfo(Plugin): if not song: return self.o.clear() - for tag in self.__tags: + for tag in self.tags: metadata[tag] = song[tag] if tag in song else '' self.o.set_metadata(metadata) class SonginfoWidget(QtGui.QWidget): + + #### PUBLIC #### + "parent plugin" plugin = None - __labels = None + #### PRIVATE #### + _labels = None + _st_label = None + _stickers = None + + #### PUBLIC #### def __init__(self, plugin): QtGui.QWidget.__init__(self) self.plugin = plugin - self.__labels = {} + self._labels = {} self.setLayout(QtGui.QGridLayout()) self.layout().setColumnStretch(1, 1) def set_tagtypes(self, tagtypes): """Setup labels for each tagtype in the list.""" + # clear old data for i in range(self.layout().rowCount()): it = self.layout().itemAtPosition(i, 0) it1 = self.layout().itemAtPosition(i, 1) @@ -94,7 +101,7 @@ class SonginfoWidget(QtGui.QWidget): if it1: self.layout().removeItem(it1) it1.widget().setParent(None) - self.__labels = {} + self._labels = {} for tag in tagtypes: label = QtGui.QLabel('%s'%tag) #TODO sort known tags @@ -102,65 +109,66 @@ class SonginfoWidget(QtGui.QWidget): label1.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) label.setWordWrap(True) label1.setWordWrap(True) - self.layout().addWidget(label, len(self.__labels), 0, QtCore.Qt.AlignRight) - self.layout().addWidget(label1, len(self.__labels), 1) - self.__labels[tag] = label1 + self.layout().addWidget(label, len(self._labels), 0, QtCore.Qt.AlignRight) + self.layout().addWidget(label1, len(self._labels), 1) + self._labels[tag] = label1 def set_metadata(self, metadata): """Set displayed metadata, which is provided in a dict of { tag : value }.""" for tag in metadata: - self.__labels[tag].setText(metadata[tag]) + self._labels[tag].setText(metadata[tag]) def clear(self): """ Clear displayed metadata. """ - for label in self.__labels.values(): + for label in self._labels.values(): label.clear() class SettingsWidgetSonginfo(Plugin.SettingsWidget): - # private - taglist = None + #### PRIVATE #### + _taglist = None + #### PUBLIC #### def __init__(self, plugin): Plugin.SettingsWidget.__init__(self, plugin) self.settings.beginGroup(self.plugin.name) - self.taglist = QtGui.QListWidget(self) - self.taglist.setDragDropMode(QtGui.QAbstractItemView.InternalMove) - self.__update_tags() - self.plugin.mpclient.connect_changed.connect(self.__update_tags) + self._taglist = QtGui.QListWidget(self) + self._taglist.setDragDropMode(QtGui.QAbstractItemView.InternalMove) + self._update_tags() + self.plugin.mpclient.connect_changed.connect(self._update_tags) self.setLayout(QtGui.QVBoxLayout()) - self._add_widget(self.taglist, label = 'Tags', tooltip = 'A list of tags that should be displayed.\n' + self._add_widget(self._taglist, label = 'Tags', tooltip = 'A list of tags that should be displayed.\n' 'Use drag and drop to change their order') + def save_settings(self): + if not self._taglist.isEnabled(): + return + + tags = [] + for i in range(self._taglist.count()): + it = self._taglist.item(i) + if it.checkState() == QtCore.Qt.Checked: + tags.append(it.text()) + self.settings.setValue('tagtypes', tags) + + self.plugin.update_tagtypes() + self.plugin.refresh() - def __update_tags(self): - self.taglist.setEnabled(self.plugin.mpclient.is_connected()) + #### PRIVATE #### + def _update_tags(self): + self._taglist.setEnabled(self.plugin.mpclient.is_connected()) if not self.plugin.mpclient.is_connected(): return - self.taglist.clear() + self._taglist.clear() tags_enabled = self.settings.value('tagtypes') tags = self.plugin.mpclient.tagtypes for tag in [tag for tag in tags_enabled if tag in tags]: it = QtGui.QListWidgetItem(tag) it.setCheckState(QtCore.Qt.Checked) - self.taglist.addItem(it) + self._taglist.addItem(it) for tag in [tag for tag in tags if tag not in tags_enabled]: it = QtGui.QListWidgetItem(tag) it.setCheckState(QtCore.Qt.Unchecked) - self.taglist.addItem(it) - - def save_settings(self): - if not self.taglist.isEnabled(): - return - - tags = [] - for i in range(self.taglist.count()): - it = self.taglist.item(i) - if it.checkState() == QtCore.Qt.Checked: - tags.append(it.text()) - self.settings.setValue('tagtypes', tags) - - self.plugin.update_tagtypes() - self.plugin.refresh() + self._taglist.addItem(it) -- cgit v1.2.3