1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
from PyQt4 import QtGui
from clMonty import monty
from clPlugin import *
from misc import *
import format
SYSTRAY_FORMAT="$if($title,$title)$if($artist, by $artist) - [$album # $track] ($time/$length)"
class pluginSystray(Plugin):
o=None
format=None
eventObj=None
def __init__(self, winMain):
Plugin.__init__(self, winMain, 'Systray')
self.addMontyListener('onSongChange', self.update)
self.addMontyListener('onReady', self.update)
self.addMontyListener('onConnect', self.update)
self.addMontyListener('onDisconnect', self.update)
def _load(self):
self.format=format.compile(SYSTRAY_FORMAT)
class SystrayWheelEventObject(QtCore.QObject):
"""This class listens for systray-wheel events"""
def eventFilter(self, object, event):
if type(event)==QtGui.QWheelEvent:
numDegrees=event.delta() / 8
numSteps=5*numDegrees/15
monty.setVolume(int(monty.getStatus()['volume'])+numSteps)
event.accept()
return True
return False
self.o=QtGui.QSystemTrayIcon(appIcon, self.winMain)
self.eventObj=SystrayWheelEventObject()
self.o.installEventFilter(self.eventObj)
self.winMain.connect(self.o, QtCore.SIGNAL('activated (QSystemTrayIcon::ActivationReason)')
, self.onSysTrayClick)
self.o.show()
self.update(None)
def _unload(self):
self.o.hide()
self.o=None
self.winMain._wheelEvent=None
def getInfo(self):
return "Display the montypc icon in the systray."
def update(self, params):
status=monty.getStatus()
song=monty.getCurrentSong()
values={'state':''}
try:
values['state']={'play':'playing', 'stop':'stopped', 'pause':'paused'}[status['state']]
if 'time' in status:
values['length']=sec2min(status['length'])
values['time']=sec2min(status['time'])
except:
pass
if song:
self.o.setToolTip(self.format(format.params(song, values)))
else:
self.o.setToolTip("montypc not playing")
def onSysTrayClick(self, reason):
if reason==QtGui.QSystemTrayIcon.Trigger \
or reason==QtGui.QSystemTrayIcon.Context:
# left mouse button
self.getWinMain().setVisible(not(self.getWinMain().isVisible()))
elif reason==QtGui.QSystemTrayIcon.MiddleClick:
# middle mouse button
if monty.isPlaying():
monty.pause()
else:
monty.resume()
|