-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpp.py
158 lines (126 loc) · 3.79 KB
/
pp.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/usr/bin/env python
import pygtk
pygtk.require("2.0")
import gtk
import gobject
import os
import re
import sys
from pipes import quote
class XmmsCli:
""" Class for working with xmms2d via nyxmms2 """
def __init__(self, app):
self.app = app
self.play()
self.is_play = True
def pp(self, null):
""" switch pause/play """
if self.is_play:
self.is_play = False
self.app.tray.set_from_stock(gtk.STOCK_MEDIA_PLAY)
self.pause()
else:
self.is_play = True
self.app.tray.set_from_stock(gtk.STOCK_MEDIA_PAUSE)
self.play()
def radd(self, path):
""" Add file or directory into xmms2d """
self.send("add file://%s" % quote(path) )
def clear(self, null):
""" Flush xmms2d song-list """
self.send("clear")
def pause(self):
""" Pause xmms """
self.send("pause")
def play(self):
""" Play xmms """
self.send("play")
def prev(self, null):
""" Play previous song """
self.send("prev")
def next(self, null):
""" Play next song """
self.send("next")
def quit(self):
""" Xmms2d exit """
self.send("server shutdown")
def seekNext(self):
self.send('seek +5')
def seekPrev(self):
self.send('seek -5')
def shuffle(self, null):
self.oldSend('shuffle')
def send(self, msg):
""" Exec nyxmms2 command """
print msg
os.system("nyxmms2 %s" % msg)
def oldSend(self, msg):
print msg
os.system("xmms2 %s" % msg)
class App:
""" Class for drawing primitive GUI """
def __init__(self):
self.xmms = XmmsCli(self)
# make menu
self.menu = gtk.Menu()
self.menu_quit = gtk.ImageMenuItem(gtk.STOCK_QUIT)
self.menu_clear = gtk.ImageMenuItem(gtk.STOCK_CLEAR)
self.menu_open = gtk.ImageMenuItem(gtk.STOCK_ADD)
self.menu_prev = gtk.ImageMenuItem(gtk.STOCK_MEDIA_PREVIOUS)
self.menu_next = gtk.ImageMenuItem(gtk.STOCK_MEDIA_NEXT)
self.menu_shuffle = gtk.ImageMenuItem("Shuffle")
self.menu_shuffle.set_image(\
gtk.image_new_from_stock(gtk.STOCK_JUMP_TO, 36))
self.menu_open.connect('activate', self.get)
self.menu_clear.connect('activate', self.xmms.clear)
self.menu_quit.connect('activate', self.quit)
self.menu_prev.connect('activate', self.xmms.prev)
self.menu_next.connect('activate', self.xmms.next)
self.menu_shuffle.connect('activate', self.xmms.shuffle)
self.menu.append(self.menu_prev)
self.menu.append(self.menu_next)
self.menu.append(self.menu_shuffle)
self.menu.append(self.menu_open)
self.menu.append(self.menu_clear)
self.menu.append(self.menu_quit)
# make tray
self.tray = gtk.StatusIcon()
self.tray.set_from_stock(gtk.STOCK_MEDIA_PAUSE)
self.tray.set_tooltip('Primitive Player')
self.tray.connect('activate', self.xmms.pp)
self.tray.connect('scroll_event', self.scroll_event)
self.tray.connect('popup-menu', self.popup, self.menu)
# init
self.desktop = gtk.gdk.get_default_root_window()
def scroll_event(self,param2,event):
""" On Scrolling tray """
if event.direction == gtk.gdk.SCROLL_UP:
self.xmms.seekNext()
elif event.direction == gtk.gdk.SCROLL_DOWN:
self.xmms.seekPrev()
def popup(self, widget, button, time, data = None):
""" rise on right click """
if button==3 and data:
data.show_all()
data.popup(None, None, None, 3, time)
def get(self, null):
""" Add directory for playing """
dialog = gtk.FileChooserDialog( 'Open', None, \
gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, \
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, \
gtk.STOCK_OPEN, gtk.RESPONSE_OK))
response = dialog.run()
if response == gtk.RESPONSE_OK:
print dialog.get_filename(), 'selected'
elif response == gtk.RESPONSE_CANCEL:
print 'No files selected'
self.xmms.radd(dialog.get_filename())
dialog.destroy()
def quit(self, widget):
""" Just quit """
self.xmms.quit()
gtk.main_quit()
if __name__ == "__main__":
os.system('xmms2d &')
app = App()
gtk.main()