summaryrefslogtreecommitdiff
path: root/nephilim/settings_wg.py
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-03-15 17:20:27 +0100
committerAnton Khirnov <wyskas@gmail.com>2009-03-15 17:20:27 +0100
commitc85d62d9f9a479468827fd7f09ded2fa878a4188 (patch)
tree4f39070209de92db12ff3e091662335653558aa9 /nephilim/settings_wg.py
parent1296a0eb33b8d3cc8327c5f5ea83cf5b75286c79 (diff)
settings_win->settings_wg
for consistency reasons.
Diffstat (limited to 'nephilim/settings_wg.py')
-rw-r--r--nephilim/settings_wg.py166
1 files changed, 166 insertions, 0 deletions
diff --git a/nephilim/settings_wg.py b/nephilim/settings_wg.py
new file mode 100644
index 0000000..6936548
--- /dev/null
+++ b/nephilim/settings_wg.py
@@ -0,0 +1,166 @@
+from PyQt4 import QtGui, QtCore
+from PyQt4.QtCore import QVariant
+import os
+
+from misc import Button
+import plugin
+
+
+class SettingsWidget(QtGui.QWidget):
+ save_btn = None
+ close_btn = None
+ pluginlist = None
+ main_win = None
+ settings = None
+ settings_wg = []
+
+ class SettingsWidgetMPD(plugin.Plugin.SettingsWidget):
+ mpclient = None
+ host_txt = None
+ port_txt = None
+ pass_txt = None
+ lib_txt = None
+ update = None
+ outputs = None
+
+ def __init__(self, mpclient):
+ plugin.Plugin.SettingsWidget.__init__(self, None)
+ self.mpclient = mpclient
+
+ self.settings().beginGroup('MPD')
+ self.host_txt = QtGui.QLineEdit(self.settings().value('host', QVariant('localhost')).toString())
+ self.port_txt = QtGui.QLineEdit(self.settings().value('port', QVariant('6600')).toString())
+ self.pass_txt = QtGui.QLineEdit(self.settings().value('password').toString())
+ self.pass_txt.setEchoMode(QtGui.QLineEdit.Password)
+ self.lib_txt = QtGui.QLineEdit(self.settings().value('music_dir', QVariant(os.path.expanduser('~/music/'))).toString())
+ self.settings().endGroup()
+
+ self.update = QtGui.QPushButton('Update MPD database')
+ self.connect(self.update, QtCore.SIGNAL('clicked()'), self.update_db)
+
+ self.outputs = QtGui.QGroupBox('Audio outputs')
+ self.outputs.setLayout(QtGui.QVBoxLayout())
+ class Output(QtGui.QCheckBox):
+ id = None
+ mpclient = None
+ def __init__(self, text, mpclient, id):
+ QtGui.QCheckBox.__init__(self, text)
+ self.mpclient = mpclient
+ self.id = id
+ self.connect(self, QtCore.SIGNAL('stateChanged(int)'), self.change_state)
+
+ def change_state(self, state):
+ self.mpclient.set_output(self.id, state)
+
+ for output in self.mpclient.outputs():
+ box = Output(output['outputname'], self.mpclient, output['outputid'])
+ if output['outputenabled'] == '1':
+ box.setChecked(True)
+ else:
+ box.setChecked(False)
+ self.outputs.layout().addWidget(box)
+
+ self.setLayout(QtGui.QVBoxLayout())
+ self._add_widget(self.host_txt, 'Host', 'Host or socket to connect to')
+ self._add_widget(self.port_txt, 'Port', 'Port to use (empty when using sockets)')
+ self._add_widget(self.pass_txt, 'Password', 'Password')
+ self._add_widget(self.lib_txt, 'Music library', 'Path to music library')
+ self.layout().addWidget(self.update)
+ self.layout().addWidget(self.outputs)
+
+ def save_settings(self):
+ reconnect = False
+
+ self.settings().beginGroup('MPD')
+ if self.host_txt.text() != self.settings().value('host').toString():
+ self.settings().setValue('host', QVariant(self.host_txt.text()))
+ reconnect = True
+ if self.port_txt.text() != self.settings().value('port').toString():
+ self.settings().setValue('port', QVariant(self.port_txt.text()))
+ reconnect = True
+ if self.pass_txt.text() != self.settings().value('password').toString():
+ self.settings().setValue('password', QVariant(self.pass_txt.text()))
+ if self.pass_txt.text():
+ self.mpclient.password(self.pass_txt.text())
+ self.settings().setValue('music_dir', QVariant(self.lib_txt.text()))
+ self.settings().endGroup()
+
+ if reconnect:
+ self.mpclient.disconnect_mpd()
+ self.mpclient.connect_mpd(str(self.host_txt.text()), str(self.port_txt.text()), str(self.pass_txt.text()))
+
+ def update_db(self):
+ self.mpclient.update_db()
+
+ def __init__(self, main_win):
+ QtGui.QWidget.__init__(self, main_win, QtCore.Qt.Window)
+ self.settings = QtCore.QSettings()
+ self.main_win = main_win
+
+ self.save_btn = Button('save all', self.save_clicked)
+ self.close_btn = Button('close', self.close_clicked)
+
+ tab_wg = QtGui.QTabWidget(self)
+ self.settings_wg.append(self.SettingsWidgetMPD(self.main_win.mpclient))
+ tab_wg.addTab(self.settings_wg[-1], 'MPD settings')
+
+ self.pluginlist = QtGui.QListWidget(self)
+ self.fill_pluginlist()
+ tab_wg.addTab(self.pluginlist, 'Plugins')
+
+ for plugin in self.main_win.plugins.loaded_plugins():
+ wg = plugin.get_settings_widget()
+ if wg:
+ self.settings_wg.append(wg)
+ tab_wg.addTab(self.settings_wg[-1], plugin.name())
+
+ self.setLayout(QtGui.QGridLayout())
+ self.layout().addWidget(tab_wg, 0, 0, 1, 2)
+ self.layout().addWidget(self.save_btn, 1, 0)
+ self.layout().addWidget(self.close_btn, 1, 1)
+
+ self.connect(self.pluginlist, QtCore.SIGNAL('itemChanged(QListWidgetItem*)'), self.plugin_checked)
+
+ self.setWindowTitle('Settings')
+ self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
+ self.center()
+ self.resize(800,400)
+
+ def fill_pluginlist(self):
+ self.pluginlist.clear()
+ for plugin in self.main_win.plugins.plugins():
+ item = QtGui.QListWidgetItem("%s\t%s"%(plugin.name(), plugin.info()))
+ if plugin.is_loaded():
+ item.setCheckState(QtCore.Qt.Checked)
+ else:
+ item.setCheckState(QtCore.Qt.Unchecked)
+
+ self.pluginlist.addItem(item)
+
+ def center(self):
+ screen = QtGui.QDesktopWidget().screenGeometry()
+ size = self.geometry()
+ self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2+100)
+
+ def save_clicked(self):
+ for wg in self.settings_wg:
+ wg.save_settings()
+
+ def close_clicked(self):
+ self.close()
+
+ def plugin_checked(self, item):
+ toload = (item.checkState() == QtCore.Qt.Checked)
+ name = str(item.text()[0:str(item.text()).find('\t')])
+ if toload:
+ # refresh the plugin file
+ self.main_win.plugins.load(name)
+ self.fill_pluginlist()
+ self.main_win.restoreLayout()
+ else:
+ self.main_win.plugins.unload(name)
+ self.settings.setValue(name + '/load', QtCore.QVariant(toload))
+
+ def closeEvent(self, event):
+ self.settings_wg = None
+ self.main_win.wSettings = None