annotate vixm/control.py @ 12:b5370c42288b

Code refactoring & implemented help command
author Josef "Jeff" Sipek <jeffpc@josefsipek.net>
date Sat, 19 Aug 2006 20:18:57 -0400
parents
children 2ecc611d198f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
1 import playlist, util
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
2
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
3 def cmd_quit(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
4 ui.shutdown = True
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
5
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
6 def cmd_number(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
7 do_list(ui, start, stop, True, args)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
8
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
9 def cmd_list(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
10 do_list(ui, start, stop, False, args)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
11
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
12 def cmd_enqueue(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
13 try:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
14 id = int(args[0])-1
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
15
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
16 if (id < 0) or \
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
17 (id >= len(ui.lists[playlist.LIST_DEFAULT])):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
18 raise ValueError
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
19
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
20 except ValueError:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
21 print "Invalid song id"
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
22 return
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
23
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
24 ui.enqueue(id)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
25
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
26 def cmd_dequeue(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
27 print "not implemented yet"
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
28
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
29 def cmd_help(ui, start, stop, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
30 for c in args[0]:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
31 print "\t%s" % (args[0][c][2],)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
32
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
33 def do_list(ui, start, stop, number, args):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
34 # 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
35 # LIST_PRIO
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
36 try:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
37 if args[1]:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
38 listid = int(args[1])
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
39 else:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
40 listid = playlist.LIST_PRIO
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
41
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
42 if listid < 0 or listid >= len(ui.lists):
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
43 raise ValueError
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
44 except ValueError, e:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
45 print "Invalid list number"
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
46 raise e
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
47
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
48 max = len(ui.lists[listid])
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
49 if not max:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
50 return
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
51
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
52 start = util.fixupint(start, max)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
53 stop = util.fixupint(stop, max)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
54
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
55 # starting number should be less than the ending
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
56 # number, as well as positive; ending number should
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
57 # 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
58 if start > stop or \
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
59 start < 1 or \
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
60 stop > max:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
61 raise ValueError
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
62
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
63 i = 1
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
64 pfx = ""
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
65 for s in ui.lists[listid]:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
66 if i < start or i > stop:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
67 i += 1
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
68 continue
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
69
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
70 if number:
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
71 pfx = "%d. " % (i,)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
72
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
73 print "%s%s (%s)" % (pfx, s["title"],
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
74 util.strtime(s["time"]))
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
75 i += 1
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
76