1 from PyQt4
import QtGui
, QtCore
2 from PyQt4
.QtCore
import QVariant
5 from misc
import ORGNAME
, APPNAME
, Button
, appIcon
, doEvents
9 class winSettings(QtGui
.QWidget
):
18 class SettingsWidgetMPD(QtGui
.QWidget
):
25 QtGui
.QWidget
.__init
__(self
)
26 self
.settings
= QtCore
.QSettings(ORGNAME
, APPNAME
)
28 self
.settings
.beginGroup('MPD')
29 self
.host_txt
= QtGui
.QLineEdit(self
.settings
.value('host', QVariant('localhost')).toString())
30 self
.port_txt
= QtGui
.QLineEdit(self
.settings
.value('port', QVariant('6600')).toString())
31 self
.lib_txt
= QtGui
.QLineEdit(self
.settings
.value('music_dir', QVariant(os
.path
.expanduser('~/music/'))).toString())
32 self
.settings
.endGroup()
34 self
.setLayout(QtGui
.QVBoxLayout())
35 self
.layout().addWidget(self
.host_txt
)
36 self
.layout().addWidget(self
.port_txt
)
37 self
.layout().addWidget(self
.lib_txt
)
39 def save_settings(self
):
40 self
.settings
.beginGroup('MPD')
41 self
.settings
.setValue('host', QVariant(self
.host_txt
.text()))
42 self
.settings
.setValue('port', QVariant(self
.port_txt
.text()))
43 self
.settings
.setValue('music_dir', QVariant(self
.lib_txt
.text()))
44 self
.settings
.endGroup()
46 def __init__(self
, winMain
, parent
=None):
47 QtGui
.QWidget
.__init
__(self
, parent
)
48 self
.settings
= QtCore
.QSettings(ORGNAME
, APPNAME
)
49 self
.winMain
= winMain
51 self
.btnSave
= Button('save all', self
.onBtnSaveClick
)
52 self
.btnClose
= Button('close', self
.onBtnCloseClick
)
54 tabWidget
= QtGui
.QTabWidget(parent
)
55 self
.settings_wg
.append(self
.SettingsWidgetMPD())
56 tabWidget
.addTab(self
.settings_wg
[-1], 'MPD settings')
58 self
.lstPlugins
= QtGui
.QListWidget(self
)
59 tabWidget
.addTab(self
.lstPlugins
, 'plugins')
60 for k
,entry
in plugins
.listPlugins().iteritems():
61 plugin
=entry
[plugins
.PLUGIN_INSTANCE
]
63 wg
= plugin
.getSettingsWidget()
65 self
.settings_wg
.append(plugin
.getSettingsWidget())
66 tabWidget
.addTab(self
.settings_wg
[-1], plugin
.getName())
69 self
.setLayout(QtGui
.QVBoxLayout())
70 self
.layout().addWidget(tabWidget
)
72 layoutButtons
= QtGui
.QHBoxLayout()
73 layoutButtons
.addStretch()
74 layoutButtons
.addWidget(self
.btnSave
)
75 layoutButtons
.addWidget(self
.btnClose
)
76 self
.layout().addLayout(layoutButtons
)
78 self
.connect(self
.lstPlugins
, QtCore
.SIGNAL('itemChanged (QListWidgetItem*)'), self
.onlstPluginItemChanged
)
80 self
.setWindowIcon(QtGui
.QIcon(appIcon
))
81 self
.setWindowTitle('Settings')
82 self
.setAttribute(QtCore
.Qt
.WA_DeleteOnClose
)
88 self
.lstPlugins
.clear()
89 for k
,entry
in plugins
.listPlugins().iteritems():
90 plugin
=entry
[plugins
.PLUGIN_INSTANCE
]
92 if entry
[plugins
.PLUGIN_MSG
]:
93 item
=QtGui
.QListWidgetItem("%s\t%s"%(entry
[plugins
.PLUGIN_CLASS
], entry
[plugins
.PLUGIN_MSG
]))
94 item
.setCheckState(QtCore
.Qt
.Unchecked
)
95 item
.setTextColor(QtCore
.Qt
.red
)
97 item
=QtGui
.QListWidgetItem("%s\t%s"%(entry
[plugins
.PLUGIN_CLASS
], plugin
.getInfo()))
99 item
.setCheckState(QtCore
.Qt
.Checked
)
101 item
.setCheckState(QtCore
.Qt
.Unchecked
)
103 if self
.settings
.value(plugin
.getName() + '/load') == None:
104 # load new plugins by default
105 item
.setTextColor(QtCore
.Qt
.blue
)
106 self
.settings
.setValue(plugin
.getName() + '/load', QtCore
.QVariant(True))
109 item
=QtGui
.QListWidgetItem("%s\t%s"%(entry
[plugins
.PLUGIN_CLASS
], entry
[plugins
.PLUGIN_MSG
]))
110 item
.setCheckState(QtCore
.Qt
.Unchecked
)
111 item
.setTextColor(QtCore
.Qt
.red
)
112 self
.lstPlugins
.addItem(item
)
115 screen
= QtGui
.QDesktopWidget().screenGeometry()
116 size
= self
.geometry()
117 self
.move((screen
.width()-size
.width())/2, (screen
.height()-size
.height())/2+100)
119 def onBtnSaveClick(self
):
120 for wg
in self
.settings_wg
:
123 def onBtnCloseClick(self
):
125 def onlstPluginItemChanged(self
, item
):
126 # check here if we have to load or unload the plugin!
127 toload
= (item
.checkState() == QtCore
.Qt
.Checked
)
128 className
=str(item
.text()[0:str(item
.text()).find('\t')])
130 # refresh the plugin file
131 plugin
=plugins
.loadPlugin(className
, self
.winMain
)
135 self
.winMain
.restoreLayout()
137 plugin
=plugins
.getPlugin(className
)
141 self
.settings
.setValue(plugin
.getName() + '/load', QtCore
.QVariant(toload
))
142 def closeEvent(self
, event
):
143 map(lambda entry
: entry
[plugins
.PLUGIN_INSTANCE
] and entry
[plugins
.PLUGIN_INSTANCE
].resetSettingCache(), plugins
.listPlugins().values())
144 self
.settings_wg
= None
145 self
.winMain
.wSettings
=None