1 from PyQt4
import QtGui
2 from clMonty
import monty
4 from traceback
import print_exc
8 SONGSTATUS_FORMAT_DEFAULT
='<font size="4">now $state</font>'\
9 '$if($title,<font size="8" color="blue">$title</font>'\
10 '<br />by <font size="8" color="green">$artist</font>'\
11 '<br /><font size="5" color="red">[$album # $track]</font>)'\
12 '$if($length,<br /><font size="4">$time/$length</font>)'
14 class wgSongStatus(QtGui
.QWidget
):
15 """Displays the status of the current song, if playing."""
16 " label containing the info"
20 def __init__(self
, p
, parent
=None):
21 QtGui
.QWidget
.__init
__(self
, parent
)
24 self
.lblInfo
=QtGui
.QLabel()
25 self
.setMinimumWidth(400)
27 layout
=QtGui
.QHBoxLayout()
28 self
.setLayout(layout
)
30 layout
.addWidget(self
.lblInfo
)
33 def update(self
, params
):
34 status
=monty
.getStatus()
35 song
=monty
.getCurrentSong()
39 values
['state']={'play':'playing', 'stop':'stopped', 'pause':'paused'}[status
['state']]
41 values
['length']=sec2min(status
['length'])
42 values
['time']=sec2min(status
['time'])
47 self
.lblInfo
.setText(self
.format(format
.params(song
, values
)))
49 def updateFormat(self
):
51 self
.format
=format
.compile(self
.p
.getSetting('format'))
53 self
.format
=lambda p
: "Invalid format: %s"%(e)
56 return self
.lblInfo
.text()
58 class pluginSongStatus(Plugin
):
60 def __init__(self
, winMain
):
61 Plugin
.__init
__(self
, winMain
, 'SongStatus')
62 self
.addMontyListener('onSongChange', self
.update
)
63 self
.addMontyListener('onTimeChange', self
.update
)
64 self
.addMontyListener('onStateChange', self
.update
)
65 self
.addMontyListener('onConnect', self
.update
)
66 self
.addMontyListener('onDisconnect', self
.update
)
69 self
.o
=wgSongStatus(self
, None)
74 return "Show information about the current song."
76 def update(self
, params
):
79 def _getDockWidget(self
):
80 return self
._createDock
(self
.o
)
82 def _getSettings(self
):
83 format
=QtGui
.QTextEdit()
84 format
.insertPlainText(self
.getSetting('format'))
86 ['format', 'Format', 'Format of the song status. Possible tags: $title, $artist, $album, $track, $time, $length, $state', format
]
88 def afterSaveSettings(self
):