annotate Demo/stdwin/lpwin.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents 73758db2f464
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4573
73758db2f464 /usr/local/bin/python -> /usr/bin/env python
Guido van Rossum <guido@python.org>
parents: 1429
diff changeset
1 #! /usr/bin/env python
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 # Watch line printer queues (only works with BSD 4.3 lpq).
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 # This brings up a window containing one line per printer argument.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 # Each line gives a small summary of the printer's status and queue.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 # The status tries to give as much relevant information as possible,
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 # and gives extra info if you have jobs in the queue.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 # The line's background color gives a hint at the status: navajo white
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 # for idle, green if your job is now printing, yellow/orange for
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 # small/large queue, red for errors.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 # To reduce the duration of the unresponsive time while it is waiting
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 # for an lpq subprocess to finish, it polls one printer every
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 # delay/len(printers) seconds. A tiny dot indicates the last printer
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 # updated. Hit the mouse button in the window to update the next one.
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 # To do:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 # - add an argument to override the default delay
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 # - add arguments to override the default colors
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 # - better heuristic for small/large queue (and more colors!)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 # - mouse clicks should update the printer clicked in
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 # - better visual appearance, e.g., boxes around the lines?
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 import posix
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 import sys
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 import time
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 import string
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 import stdwin
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 from stdwinevents import *
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 import mainloop
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 # Default parameters
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 DEF_PRINTER = 'oce' # This is CWI specific!
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 DEF_DELAY = 10
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 # Color assignments
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 c_unknown = stdwin.fetchcolor('white')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 c_idle = stdwin.fetchcolor('navajo white')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 c_ontop = stdwin.fetchcolor('green')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 c_smallqueue = stdwin.fetchcolor('yellow')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 c_bigqueue = stdwin.fetchcolor('orange')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 c_error = stdwin.fetchcolor('red')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 def main():
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 delay = DEF_DELAY
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 try:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 thisuser = posix.environ['LOGNAME']
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 except:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 thisuser = posix.environ['USER']
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 printers = sys.argv[1:]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 if printers:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 # Strip '-P' from printer names just in case
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 # the user specified it...
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 for i in range(len(printers)):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 if printers[i][:2] == '-P':
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 printers[i] = printers[i][2:]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 if posix.environ.has_key('PRINTER'):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 printers = [posix.environ['PRINTER']]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 printers = [DEF_PRINTER]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 width = stdwin.textwidth('in')*20
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 height = len(printers) * stdwin.lineheight() + 5
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 stdwin.setdefwinsize(width, height)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 stdwin.setdefscrollbars(0, 0)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 win = stdwin.open('lpwin')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
75 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 win.printers = printers
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 win.colors = [c_unknown] * len(printers)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 win.texts = printers[:]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 win.next = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80 win.delay = DEF_DELAY
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 win.thisuser = thisuser
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 win.dispatch = lpdispatch
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 win.settimer(1)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 mainloop.register(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 mainloop.mainloop()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88
1429
ada56b0765c1 *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 1120
diff changeset
89 def lpdispatch(event):
ada56b0765c1 *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 1120
diff changeset
90 type, win, detail = event
752
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91 if type == WE_CLOSE or type == WE_CHAR and detail in ('q', 'Q'):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
92 mainloop.unregister(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 elif type == WE_DRAW:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 drawproc(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 elif type == WE_TIMER:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 update(win)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97 win.change((0,0), (10000, 10000))
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 elif type == WE_MOUSE_UP:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 win.settimer(1)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 def drawproc(win):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 d = win.begindrawing()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 offset = d.textwidth('.')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 h, v = 0, 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 for i in range(len(win.printers)):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 text = win.texts[i]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 color = win.colors[i]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 d.setbgcolor(color)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 d.erase((h, v), (h+10000, v+d.lineheight()))
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 if (i+1) % len(win.printers) == win.next and color <> c_unknown:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 d.text((h, v), '.')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 d.text((h+offset, v), text)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
113 v = v + d.lineheight()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 def update(win):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 i = win.next
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 win.next = (i+1) % len(win.printers)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 win.texts[i], win.colors[i] = makestatus(win.printers[i], win.thisuser)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 win.settimer(int(win.delay * 10.0 / len(win.printers)))
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
120
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 def makestatus(name, thisuser):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 pipe = posix.popen('lpq -P' + name + ' 2>&1', 'r')
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 lines = []
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 users = {}
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 aheadbytes = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 aheadjobs = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
127 userseen = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 totalbytes = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 totaljobs = 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 color = c_unknown
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 while 1:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 line = pipe.readline()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 if not line: break
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 fields = string.split(line)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 n = len(fields)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136 if len(fields) >= 6 and fields[n-1] == 'bytes':
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 rank = fields[0]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 user = fields[1]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 job = fields[2]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 files = fields[3:-2]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 bytes = eval(fields[n-2])
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 if user == thisuser:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 userseen = 1
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 if aheadjobs == 0:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
145 color = c_ontop
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 elif not userseen:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 aheadbytes = aheadbytes + bytes
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 aheadjobs = aheadjobs + 1
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 totalbytes = totalbytes + bytes
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 totaljobs = totaljobs + 1
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 if color == c_unknown:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 color = c_smallqueue
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 elif color == c_smallqueue:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 color = c_bigqueue
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 if users.has_key(user):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 ujobs, ubytes = users[user]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 ujobs, ubytes = 0, 0
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
159 ujobs = ujobs + 1
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 ubytes = ubytes + bytes
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 users[user] = ujobs, ubytes
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 if fields and fields[0] <> 'Rank':
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 line = string.strip(line)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 if line == 'no entries':
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 line = name + ': idle'
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
167 if color == c_unknown:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 color = c_idle
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 elif line[-22:] == ' is ready and printing':
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 line = line[:-22]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 line = name + ': ' + line
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 color = c_error
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 lines.append(line)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 if totaljobs:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 line = `(totalbytes+1023)/1024` + ' K'
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 if totaljobs <> len(users):
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 line = line + ' (' + `totaljobs` + ' jobs)'
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 if len(users) == 1:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 line = line + ' for ' + users.keys()[0]
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 line = line + ' for ' + `len(users)` + ' users'
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 if userseen:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
185 if aheadjobs == 0:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 line = line + ' (' + thisuser + ' first)'
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 else:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
188 line = line + ' (' + `(aheadbytes+1023)/1024`
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 line = line + ' K before ' + thisuser + ')'
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 lines.append(line)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 #
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
192 sts = pipe.close()
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 if sts:
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 lines.append('lpq exit status ' + `sts`)
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 color = c_error
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 return string.joinfields(lines, ': '), color
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
197
8bd2194ad6f9 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
198 main()