annotate vixm/ui.py @ 51:8396cc3816ee pure tip

On shutdown, make sure we tell the dbus clients that we're done
author Josef "Jeff" Sipek <jeffpc@josefsipek.net>
date Mon, 06 Nov 2006 06:16:19 -0500
parents 2bf81d95246a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
dfcf1a46fc56 Added GPLv2 file & copyright headers
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 20
diff changeset
1 # ui.py - user interface
dfcf1a46fc56 Added GPLv2 file & copyright headers
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 20
diff changeset
2 #
dfcf1a46fc56 Added GPLv2 file & copyright headers
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 20
diff changeset
3 # Copyright (C) 2006 Josef "Jeff" Sipek <jeffpc@josefsipek.net>
dfcf1a46fc56 Added GPLv2 file & copyright headers
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 20
diff changeset
4 #
dfcf1a46fc56 Added GPLv2 file & copyright headers
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 20
diff changeset
5 # This program is free software; you can redistribute it and/or modify
dfcf1a46fc56 Added GPLv2 file & copyright headers
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 20
diff changeset
6 # it under the terms of the GNU General Public License version 2 as
dfcf1a46fc56 Added GPLv2 file & copyright headers
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 20
diff changeset
7 # published by the Free Software Foundation.
3
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
8
45
2bf81d95246a Move starting code into main.py
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 40
diff changeset
9 import sys, re
3
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
10 from threading import Thread
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
11
45
2bf81d95246a Move starting code into main.py
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 40
diff changeset
12 import playlist, util, control
3
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
13
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
14 class uiThread(Thread):
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
15 """ 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
16 necessary to have a vi-like interface """
30
860c891de6bb Remove lots of xmms-related code & get ready to make the whole program a
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 25
diff changeset
17 def __init__(self, play, lists):
3
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
18 Thread.__init__(self)
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
19
30
860c891de6bb Remove lots of xmms-related code & get ready to make the whole program a
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 25
diff changeset
20 self.play = play
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
21 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
22
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
23 # 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
24 # 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
25 # 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
26 # 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
27 # '!' 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
28 #
f87b969fa973 Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 6
diff changeset
29 # 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
30 # 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
31 # 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
32 # 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
33 # 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
34 # 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
35 # 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
36 #
f87b969fa973 Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 6
diff changeset
37 # 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
38 # 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
39 # 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
40 # 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
41 # 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
42 #
f87b969fa973 Little cleanup; change of plans - try to make it more like ed first
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 6
diff changeset
43 # 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
44 # 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
45 # 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
46 # 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
47 #
16
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 15
diff changeset
48 # dequeue '[range]d'
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 15
diff changeset
49 # remove songs in range from LIST_PRIO. The
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 15
diff changeset
50 # range is in LIST_PRIO, NOT LIST_DEFAULT
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
51 #
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 # 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
53 # '' 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
54 # '%' 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
55 # '$' 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
56 # '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
57 # '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
58 # 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
59 # 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
60 # '' or '$'.
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
61 #
8
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
62 # command table format:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
63 # "command regexp":
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
64 # (function to call, range allowed, help str)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
65 self.cmdtable = {
8
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
66 "q([!]){,1}":
13
2ecc611d198f Added more helpful strings for the help strings
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 12
diff changeset
67 (control.cmd_quit,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
68 False),
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
69 "n( *([0-9]+)){,1}":
13
2ecc611d198f Added more helpful strings for the help strings
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 12
diff changeset
70 (control.cmd_number,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
71 True),
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
72 "l( *([0-9]+)){,1}":
13
2ecc611d198f Added more helpful strings for the help strings
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 12
diff changeset
73 (control.cmd_list,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
74 True),
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
75 "a *([0-9]+)":
13
2ecc611d198f Added more helpful strings for the help strings
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 12
diff changeset
76 (control.cmd_enqueue,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
77 False),
16
447b47ab396f Implemented dequeue the proper way; Cleaned up stupidity in enqueue code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 15
diff changeset
78 "d":
13
2ecc611d198f Added more helpful strings for the help strings
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 12
diff changeset
79 (control.cmd_dequeue,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
80 True),
9
eaa800169f5b Hooked up the playlists to control xmms!
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 8
diff changeset
81 "h":
13
2ecc611d198f Added more helpful strings for the help strings
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 12
diff changeset
82 (control.cmd_help,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
83 False),
17
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
84 # the following commands are there do allow some,
34
8028f2addb00 Destroy all traces of xmms
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 32
diff changeset
85 # more direct control over which songs we play
17
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
86 "z":
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
87 (control.cmd_prev,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
88 False),
17
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
89 "x":
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
90 (control.cmd_play,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
91 False),
17
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
92 "c":
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
93 (control.cmd_pause,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
94 False),
17
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
95 "v":
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
96 (control.cmd_stop,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
97 False),
17
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
98 "b":
1c769ae67af4 Implemented the zxcvb xmms controls
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 16
diff changeset
99 (control.cmd_next,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
100 False),
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
101 # the following commands are there to make the
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
102 # experience more like ed/ex/vi/vim
19
a3385f616b53 Implemented the run shell command command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 17
diff changeset
103 "!(.*)":
a3385f616b53 Implemented the run shell command command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 17
diff changeset
104 (control.cmd_shell,
20
f39963e96ca1 Rework of the help string code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 19
diff changeset
105 False),
23
2efd6bbb1694 Implemented location command ('=')
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 21
diff changeset
106 "=":
2efd6bbb1694 Implemented location command ('=')
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 21
diff changeset
107 (control.cmd_location,
2efd6bbb1694 Implemented location command ('=')
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 21
diff changeset
108 False),
8
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
109 }
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
110
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
111 def __cmd(self, txt):
25
f77d09bc7dec Empty command does nothing
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 23
diff changeset
112 if not txt:
f77d09bc7dec Empty command does nothing
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 23
diff changeset
113 return
f77d09bc7dec Empty command does nothing
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 23
diff changeset
114
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
115 range_str = "(%|\\$|(\\$|[0-9]+){,1}(,(\\$|[0-9]+)){,1}){,1}"
8
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
116
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
117 cmdtable = self.cmdtable
8
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
118
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
119 for c in cmdtable:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
120 rstr = "^"
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
121 rstr += (cmdtable[c][1] and range_str or "")
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
122 rstr += c
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
123 rstr += "$"
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
124
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
125 m = re.search(rstr, txt)
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
126 if not m:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
127 continue
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
128
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
129 gr = m.groups()
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
130
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
131 start = end = -1
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
132 if cmdtable[c][1]:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
133 # parse range info
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
134
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
135 if gr[3]:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
136 # we got a 'm,n'
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
137 start = (gr[1] or '')
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
138 end = gr[3]
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
139 elif gr[1]:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
140 # we got a 'n'
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
141 start = gr[1]
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
142 end = gr[1]
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
143 elif gr[0]:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
144 # we got a '$' or '%'
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
145 start = (gr[0] == '%' and '1' or '$')
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
146 end = '$'
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
147 else:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
148 # no range specified
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
149 start = '1'
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
150 end = '1'
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
151
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
152 start = util.special2int(start)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
153 end = util.special2int(end)
8
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
154
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
155 gr = list(gr)
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
156 gr.pop(0)
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
157 gr.pop(0)
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
158 gr.pop(0)
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
159 gr.pop(0)
12
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
160
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
161 gr = list(gr)
b5370c42288b Code refactoring & implemented help command
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 11
diff changeset
162 gr.append(self.cmdtable)
8
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
163
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
164 try:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
165 cmdtable[c][0](self, start, end, gr)
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
166 except ValueError:
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
167 print "Invalid argument/value"
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
168 return
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
169
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
170 print "Invalid command \"%s\"" % (txt,)
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
171
15
ae3451bedeb6 Implemented playlist searching
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
172 def search(self, lid, regexp):
ae3451bedeb6 Implemented playlist searching
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
173 print "Seaching list %d for '%s':" % (lid, regexp)
ae3451bedeb6 Implemented playlist searching
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
174 for song in self.lists[lid].search(regexp):
ae3451bedeb6 Implemented playlist searching
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
175 idx = self.lists[lid].index(song)+1
ae3451bedeb6 Implemented playlist searching
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
176 print "%d. %s" % (idx, str(song))
ae3451bedeb6 Implemented playlist searching
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
177
3
dd00b69169c6 Created initial ui thread code, fixed up playlist code
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
178 def run(self):
30
860c891de6bb Remove lots of xmms-related code & get ready to make the whole program a
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 25
diff changeset
179 while not self.play.shutdown:
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
180 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
181
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
182 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
183 # '/ABC' - searching
15
ae3451bedeb6 Implemented playlist searching
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
184 self.search(playlist.LIST_PRIO, tmp[1:])
ae3451bedeb6 Implemented playlist searching
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 13
diff changeset
185 self.search(playlist.LIST_DEFAULT, tmp[1:])
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
186 else:
8
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
187 # 'ABC' - commands
79340745c952 Reimplemented enqueuing & quit properly, implemented list and number commands
Josef "Jeff" Sipek <jeffpc@josefsipek.net>
parents: 7
diff changeset
188 self.__cmd(tmp)
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
189