-
Notifications
You must be signed in to change notification settings - Fork 0
/
statusicon.py
59 lines (50 loc) · 2.07 KB
/
statusicon.py
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
import sys
import gtk
class StatusIcon:
def __init__(self, mixer):
self.mixer = mixer
self.icon = gtk.StatusIcon()
self.icon.connect('activate', self.on_activate)
self.icon.connect('popup-menu', self.on_right_click)
self.icon.connect('scroll-event', self.on_scroll)
self.constructMenu()
def constructMenu(self):
separator = gtk.SeparatorMenuItem()
self.menu = gtk.Menu()
muteItem = gtk.CheckMenuItem('Mute');
muteItem.set_active(self.mixer.muted);
muteItem.connect('toggled', self.on_mute_toggled)
self.menu.add(muteItem)
self.menu.add(separator)
aboutItem = gtk.ImageMenuItem('gtk-about')
aboutItem.connect('activate', self.on_about)
self.menu.add(aboutItem);
quitItem = gtk.ImageMenuItem('gtk-quit')
quitItem.connect('activate', self.on_quit)
self.menu.add(quitItem)
self.menu.show_all()
def update(self):
self.icon.set_tooltip(self.mixer.mixerControl + ": " + str(self.mixer.volume) + "%")
if ((self.mixer.volume == 0) or (self.mixer.muted)):
self.icon.set_from_icon_name('audio-volume-muted')
elif (self.mixer.volume <= 33):
self.icon.set_from_icon_name('audio-volume-low')
elif (self.mixer.volume <= 66):
self.icon.set_from_icon_name('audio-volume-medium')
else:
self.icon.set_from_icon_name('audio-volume-high')
def on_activate(self, widget):
self.mixer.toggleScaleWindow()
def on_right_click(self, widget, button, time):
self.menu.popup(None, None, gtk.status_icon_position_menu, button, time, self.icon)
def on_scroll(self, wigdet, event):
if (event.direction == gtk.gdk.SCROLL_UP):
self.mixer.raiseVolume()
elif (event.direction == gtk.gdk.SCROLL_DOWN):
self.mixer.lowerVolume()
def on_mute_toggled(self, widget):
self.mixer.toggleMute()
def on_about(self, widget):
self.mixer.showAbout()
def on_quit(self, widget):
self.mixer.quit()