diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vixm/control.py	Sat Aug 19 20:18:57 2006 -0400
@@ -0,0 +1,76 @@
+import playlist, util
+
+def cmd_quit(ui, start, stop, args):
+	ui.shutdown = True
+
+def cmd_number(ui, start, stop, args):
+	do_list(ui, start, stop, True, args)
+
+def cmd_list(ui, start, stop, args):
+	do_list(ui, start, stop, False, args)
+
+def cmd_enqueue(ui, start, stop, args):
+	try:
+		id = int(args[0])-1
+
+		if (id < 0) or \
+		   (id >= len(ui.lists[playlist.LIST_DEFAULT])):
+			raise ValueError
+
+	except ValueError:
+		print "Invalid song id"
+		return
+
+	ui.enqueue(id)
+
+def cmd_dequeue(ui, start, stop, args):
+	print "not implemented yet"
+
+def cmd_help(ui, start, stop, args):
+	for c in args[0]:
+		print "\t%s" % (args[0][c][2],)
+
+def do_list(ui, start, stop, number, args):
+	# get the list id from the argument or default to
+	# LIST_PRIO
+	try:
+		if args[1]:
+			listid = int(args[1])
+		else:
+			listid = playlist.LIST_PRIO
+
+		if listid < 0 or listid >= len(ui.lists):
+			raise ValueError
+	except ValueError, e:
+		print "Invalid list number"
+		raise e
+
+	max = len(ui.lists[listid])
+	if not max:
+		return
+
+	start = util.fixupint(start, max)
+	stop = util.fixupint(stop, max)
+
+	# starting number should be less than the ending
+	# number, as well as positive; ending number should
+	# be less than or equal to the size of the playlist
+	if start > stop or \
+	   start < 1 or \
+	   stop > max:
+		raise ValueError
+
+	i = 1
+	pfx = ""
+	for s in ui.lists[listid]:
+		if i < start or i > stop:
+			i += 1
+			continue
+
+		if number:
+			pfx = "%d. " % (i,)
+
+		print "%s%s (%s)" % (pfx, s["title"],
+				util.strtime(s["time"]))
+		i += 1
+