Mercurial > vixm
annotate vixm/ui.py @ 7:f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
author | Josef "Jeff" Sipek <jeffpc@josefsipek.net> |
---|---|
date | Sat, 19 Aug 2006 17:23:15 -0400 |
parents | 50745af6a63b |
children | 79340745c952 |
rev | line source |
---|---|
3
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
1 # all the user interface related bits |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
2 |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
3 import time, sys |
3
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
4 from threading import Thread |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
5 import xmms |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
6 |
6
50745af6a63b
Print song lengths in something better than number of milliseconds, added
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
5
diff
changeset
|
7 import playlist, song, util |
3
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
8 |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
9 def run(): |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
10 """ this is where we start execution """ |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
11 |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
12 # first, let's create the two playlists |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
13 print "Creating playlists..." |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
14 lists = {} |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
15 lists[playlist.LIST_PRIO] = playlist.playlist() |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
16 lists[playlist.LIST_DEFAULT] = playlist.playlist(allowrandom=True) |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
17 |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
18 # read in the info for all the songs in XMMS's playlist |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
19 print "Loading songs from XMMS's playlist..." |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
20 songs = [] |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
21 listlength = xmms.control.get_playlist_length() |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
22 for i in range(0,listlength): |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
23 s = song.song(i) |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
24 lists[playlist.LIST_DEFAULT].enqueue(s) |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
25 |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
26 print "Instanciating ui thread..." |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
27 ui = uiThread(lists) |
3
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
28 ui.start() |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
29 |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
30 while not ui.shutdown: |
3
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
31 time.sleep(1) |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
32 |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
33 class uiThread(Thread): |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
34 """ This is the main ui thread class, it does all the magic |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
35 necessary to have a vi-like interface """ |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
36 def __init__(self, lists): |
3
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
37 Thread.__init__(self) |
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
38 |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
39 self.lists = lists |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
40 self.shutdown = False |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
41 |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
42 def __enqueue(self, id): |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
43 s = self.lists[playlist.LIST_DEFAULT][id] |
6
50745af6a63b
Print song lengths in something better than number of milliseconds, added
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
5
diff
changeset
|
44 print "Enqueuing song: %d. %s (%s)" % (id, s["title"], |
50745af6a63b
Print song lengths in something better than number of milliseconds, added
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
5
diff
changeset
|
45 util.strtime(s["time"])) |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
46 self.lists[playlist.LIST_PRIO].enqueue(s) |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
47 |
7
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
48 def __list(self, cmd, parts): |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
49 i = 1 |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
50 |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
51 if len(parts) > 1: |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
52 try: |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
53 listid = int(parts[1]) |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
54 if listid < 0 or listid >= len(self.lists): |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
55 raise ValueError |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
56 except: |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
57 print "Invalid list number" |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
58 return |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
59 else: |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
60 listid = playlist.LIST_PRIO |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
61 |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
62 for s in self.lists[listid]: |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
63 print "%d. %s (%s)" % (i, s["title"], |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
64 util.strtime(s["time"])) |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
65 i += 1 |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
66 |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
67 def __cmd(self, txt): |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
68 parts = txt.split() |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
69 cmd = parts[0] |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
70 |
7
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
71 # commad list: |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
72 # quit 'q[!]' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
73 # quit fails if there are list changes in |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
74 # memory that haven't been saved. The optional |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
75 # '!' forces the quit |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
76 # |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
77 # number '[range]n [playlistid]' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
78 # prints playlist [playlistid] (default is |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
79 # LIST_PRIO) with each entry being numbered. |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
80 # If optional range is supplied, only the |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
81 # songs in that range are printed. The range |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
82 # string is standard ed-like line range (see |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
83 # below for details) |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
84 # |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
85 # list '[range]l [playlistid]' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
86 # virtually identical to the number command |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
87 # above, however the lines are not numbered. |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
88 # The same rules apply to the range and |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
89 # playlistid arguments |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
90 # |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
91 # enqueue 'a songid' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
92 # enqueue a song songid from LIST_DEFAULT onto |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
93 # LIST_PRIO. The enqueued song is added to the |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
94 # end of LIST_PRIO |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
95 # |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
96 # dequeue 'd songid' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
97 # remove songid from LIST_PRIO. The songid is |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
98 # the id in LIST_PRIO, NOT LIST_DEFAULT |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
99 # |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
100 # range: |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
101 # '' first entry; shortcut for '1' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
102 # '%' entire list; shortcut for '1,$' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
103 # '$' last entry |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
104 # 'n' entry on line n |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
105 # 'm,n' range of entries starting on line m and |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
106 # ending on line n. Both m and n are included |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
107 # in the list. m or n can both be an integer, |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
108 # '' or '$'. |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
109 |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
110 if cmd == "quit": |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
111 self.shutdown = True |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
112 elif cmd == "list": |
7
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
113 self.__list(cmd, parts) |
6
50745af6a63b
Print song lengths in something better than number of milliseconds, added
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
5
diff
changeset
|
114 elif cmd == "lists": |
50745af6a63b
Print song lengths in something better than number of milliseconds, added
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
5
diff
changeset
|
115 print "#0 LIST_PRIO" |
50745af6a63b
Print song lengths in something better than number of milliseconds, added
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
5
diff
changeset
|
116 print "#1 LIST_DEFAULT" |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
117 else: |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
118 print "Invalid command \"%s\"" % (cmd,) |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
119 |
3
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
120 def run(self): |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
121 while not self.shutdown: |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
122 tmp = sys.stdin.readline().strip() |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
123 |
7
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
124 # FIXME: we should use regexps for this |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
125 # |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
126 # search: '^\/(.+)' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
127 # enqueue: '^([0-9]+)' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
128 # commands: '^([A-Za-z]+)(([^ ]*) *)*' |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
129 |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
130 if tmp.startswith("/"): |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
131 # '/ABC' - searching |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
132 print "Searching not yet implemented" |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
133 else: |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
134 # 'ABC' - commands and enqueues |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
135 try: |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
136 id = int(tmp[1:]) |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
137 except: |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
138 self.__cmd(tmp[1:]) |
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
139 continue |
7
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
140 |
f87b969fa973
Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
6
diff
changeset
|
141 # we got something numeric, let's enqueue |
5
187453f856a7
Added a ex-like interface supporting a goto line syntax to enqueue a song
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
3
diff
changeset
|
142 self.__enqueue(id) |
3
dd00b69169c6
Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
143 |