annotate vixm/control.py @ 19:a3385f616b53

Implemented the run shell command command
author Josef "Jeff" Sipek <jeffpc@josefsipek.net>
date Sun, 20 Aug 2006 00:31:33 -0400
parents 1c769ae67af4
children f39963e96ca1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
a3385f616b53 Implemented the run shell command command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 17
diff changeset
1 import os, xmms
17
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
2
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
3 import playlist, util
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
4
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
5 def cmd_quit(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
6 ui.shutdown = True
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
7
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
8 def cmd_number(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
9 do_list(ui, start, stop, True, args)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
10
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
11 def cmd_list(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
12 do_list(ui, start, stop, False, args)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
13
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
14 def cmd_enqueue(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
15 try:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
16 id = int(args[0])-1
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
17
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
18 if (id < 0) or \
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
19 (id >= len(ui.lists[playlist.LIST_DEFAULT])):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
20 raise ValueError
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
21
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
22 except ValueError:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
23 print "Invalid song id"
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
24 return
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
25
16
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
26 s = ui.lists[playlist.LIST_DEFAULT][id]
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
27 print "Enqueuing song: %s (%s)" % (s["title"], util.strtime(s["time"]))
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
28 ui.lists[playlist.LIST_PRIO].enqueue(s)
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
29
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
30 def cmd_dequeue(ui, start, stop, args):
16
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
31 l = ui.lists[playlist.LIST_PRIO]
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
32
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
33 max = len(l)
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
34 if not max:
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
35 return
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
36
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
37 start = util.fixupint(start, max)
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
38 stop = util.fixupint(stop, max)
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
39
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
40 for i in range(start-1, stop):
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
41 s = l[start-1]
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
42 print "Dequeuing song: %s (%s)" % (s["title"],
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
43 util.strtime(s["time"]))
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
44 l.dequeue(s)
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
45
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
46 def cmd_help(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
47 for c in args[0]:
13
2ecc611d198f Added more helpful strings for the help strings
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 12
diff changeset
48 print " %s\t%s" % (args[0][c][2],args[0][c][3])
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
49
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
50 def do_list(ui, start, stop, number, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
51 # get the list id from the argument or default to
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
52 # LIST_PRIO
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
53 try:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
54 if args[1]:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
55 listid = int(args[1])
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
56 else:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
57 listid = playlist.LIST_PRIO
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
58
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
59 if listid < 0 or listid >= len(ui.lists):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
60 raise ValueError
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
61 except ValueError, e:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
62 print "Invalid list number"
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
63 raise e
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
64
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
65 max = len(ui.lists[listid])
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
66 if not max:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
67 return
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
68
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
69 start = util.fixupint(start, max)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
70 stop = util.fixupint(stop, max)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
71
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
72 # starting number should be less than the ending
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
73 # number, as well as positive; ending number should
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
74 # be less than or equal to the size of the playlist
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
75 if start > stop or \
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
76 start < 1 or \
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
77 stop > max:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
78 raise ValueError
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
79
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
80 i = 1
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
81 pfx = ""
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
82 for s in ui.lists[listid]:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
83 if i < start or i > stop:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
84 i += 1
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
85 continue
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
86
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
87 if number:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
88 pfx = "%d. " % (i,)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
89
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
90 print "%s%s (%s)" % (pfx, s["title"],
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
91 util.strtime(s["time"]))
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
92 i += 1
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
93
17
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
94 def cmd_play(ui, start, stop, args):
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
95 xmms.control.play()
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
96
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
97 def cmd_pause(ui, start, stop, args):
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
98 xmms.control.pause()
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
99
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
100 def cmd_stop(ui, start, stop, args):
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
101 xmms.control.stop()
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
102
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
103 def cmd_prev(ui, start, stop, args):
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
104 xmms.control.playlist_prev()
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
105
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
106 def cmd_next(ui, start, stop, args):
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
107 xmms.control.playlist_next()
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
108
19
a3385f616b53 Implemented the run shell command command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 17
diff changeset
109 def cmd_shell(ui, start, stop, args):
a3385f616b53 Implemented the run shell command command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 17
diff changeset
110 if args[0]:
a3385f616b53 Implemented the run shell command command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 17
diff changeset
111 os.system(args[0])
a3385f616b53 Implemented the run shell command command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 17
diff changeset
112 print "!"
a3385f616b53 Implemented the run shell command command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 17
diff changeset
113