summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-11-29 11:37:41 +0100
committerAnton Khirnov <wyskas@gmail.com>2009-11-29 11:37:41 +0100
commit4ffd1234e51b6109f45c8bb5576066ce30db3a99 (patch)
tree7cda9f679cd4cdce16a77550dc3ddc30726701de
parentceb6880a15898ed2759ab1d0169bd09f887931d9 (diff)
Songinfo: only edit settings when connected.
-rw-r--r--nephilim/plugins/Songinfo.py96
1 files changed, 52 insertions, 44 deletions
diff --git a/nephilim/plugins/Songinfo.py b/nephilim/plugins/Songinfo.py
index 7214c41..856b39b 100644
--- a/nephilim/plugins/Songinfo.py
+++ b/nephilim/plugins/Songinfo.py
@@ -31,49 +31,6 @@ class Songinfo(Plugin):
DEFAULTS = {'tagtypes' : ['track', 'title', 'artist', 'album',
'albumartist', 'disc', 'genre', 'date', 'composer', 'performer', 'file']}
- #### private ####
-
- class SettingsWidgetSonginfo(Plugin.SettingsWidget):
- # private
- taglist = None
-
- def __init__(self, plugin):
- Plugin.SettingsWidget.__init__(self, plugin)
- self.settings.beginGroup(self.plugin.name)
-
- tags_enabled = self.settings.value('tagtypes').toStringList()
- tags = self.plugin.mpclient.tagtypes
- self.taglist = QtGui.QListWidget(self)
- self.taglist.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
- 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)
- 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)
-
- self.setLayout(QtGui.QVBoxLayout())
- 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')
-
- self.settings.endGroup()
-
- def save_settings(self):
- self.settings.beginGroup(self.plugin.name)
-
- 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', QtCore.QVariant(tags))
-
- self.settings.endGroup()
- self.plugin.update_tagtypes()
- self.plugin.refresh()
-
#### public ####
def __init__(self, parent, mpclient, name):
Plugin.__init__(self, parent, mpclient, name)
@@ -98,7 +55,7 @@ class Songinfo(Plugin):
return self._create_dock(self.o)
def get_settings_widget(self):
- return self.SettingsWidgetSonginfo(self)
+ return SettingsWidgetSonginfo(self)
def update_tagtypes(self):
self.__tags = [tag for tag in self.settings.value(self.name + '/tagtypes').toStringList() if tag in self.mpclient.tagtypes]
@@ -150,3 +107,54 @@ class SonginfoWidget(QtGui.QWidget):
"""Set displayed metadata, which is provided in a dict of { tag : value }."""
for tag in metadata:
self.__labels[tag].setText(unicode(metadata[tag]))
+
+class SettingsWidgetSonginfo(Plugin.SettingsWidget):
+ # private
+ taglist = None
+
+ 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.setLayout(QtGui.QVBoxLayout())
+ 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 __update_tags(self):
+ self.taglist.setEnabled(self.plugin.mpclient.is_connected())
+ if not self.plugin.mpclient.is_connected():
+ return
+
+ self.taglist.clear()
+ tags_enabled = self.settings.value('tagtypes').toStringList()
+ 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)
+ 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
+
+ self.settings.beginGroup(self.plugin.name)
+
+ 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', QtCore.QVariant(tags))
+
+ self.plugin.update_tagtypes()
+ self.plugin.refresh()