Lines 85-91
Link Here
|
85 |
except: |
85 |
except: |
86 |
print ''' |
86 |
print ''' |
87 |
You need to enable the elog feature by setting at least one of |
87 |
You need to enable the elog feature by setting at least one of |
88 |
PORTAGE_ELOG_CLASSES="info warn error log" |
88 |
PORTAGE_ELOG_CLASSES="info warn error log qa" |
89 |
and |
89 |
and |
90 |
PORTAGE_ELOG_SYSTEM="save" |
90 |
PORTAGE_ELOG_SYSTEM="save" |
91 |
in /etc/make.conf |
91 |
in /etc/make.conf |
Lines 97-106
Link Here
|
97 |
|
97 |
|
98 |
|
98 |
|
99 |
|
99 |
|
100 |
filter = {'INFO': True, 'WARN': True, 'ERROR': True, 'LOG': True, |
100 |
filter = {'INFO': True, 'WARN': True, 'ERROR': True, 'LOG': True, 'QA': True, |
101 |
'preinst': True, 'postinst': True, 'prerm': True, 'postrm': True, |
101 |
'preinst': True, 'postinst': True, 'prerm': True, 'postrm': True, |
102 |
'unpack': True, 'compile': True, 'setup': True, 'test': True, |
102 |
'unpack': True, 'compile': True, 'setup': True, 'test': True, |
103 |
'install': True, 'other': True} |
103 |
'install': True, 'prepare':True, 'configure':True, 'other': True} |
104 |
|
104 |
|
105 |
|
105 |
|
106 |
class MainWindow (gtk.Window): |
106 |
class MainWindow (gtk.Window): |
Lines 129-134
Link Here
|
129 |
otime = '%x %X' |
129 |
otime = '%x %X' |
130 |
vtime = '%Y-%m-%d %H:%M:%S' |
130 |
vtime = '%Y-%m-%d %H:%M:%S' |
131 |
|
131 |
|
|
|
132 |
self.filename = filename |
133 |
filename = filename.replace('/',':',1) |
132 |
(c, p, t) = filename.split(':') |
134 |
(c, p, t) = filename.split(':') |
133 |
t = time.strptime(t, itime) |
135 |
t = time.strptime(t, itime) |
134 |
st = time.strftime(vtime, t) |
136 |
st = time.strftime(vtime, t) |
Lines 138-144
Link Here
|
138 |
self.package = p |
140 |
self.package = p |
139 |
self.timestamp = st |
141 |
self.timestamp = st |
140 |
self.timesort = t |
142 |
self.timesort = t |
141 |
self.filename = filename |
|
|
142 |
|
143 |
|
143 |
|
144 |
|
144 |
from glob import glob |
145 |
from glob import glob |
Lines 169-175
Link Here
|
169 |
|
170 |
|
170 |
def populate(self): |
171 |
def populate(self): |
171 |
self.clear() |
172 |
self.clear() |
172 |
for e in [Elog(filename) for filename in glob('*:*:*.log')]: |
173 |
for e in [Elog(filename) for filename in glob('*:*:*.log') + glob('*/*:*.log')]: |
173 |
iter = self.get_iter_for(e.category) |
174 |
iter = self.get_iter_for(e.category) |
174 |
if not iter: |
175 |
if not iter: |
175 |
# New category |
176 |
# New category |
Lines 181-187
Link Here
|
181 |
def populate_flat(self): |
182 |
def populate_flat(self): |
182 |
self.clear() |
183 |
self.clear() |
183 |
iter = self.get_iter_first() |
184 |
iter = self.get_iter_first() |
184 |
for e in [Elog(filename) for filename in glob('*:*:*.log')]: |
185 |
for e in [Elog(filename) for filename in glob('*:*:*.log') + glob('*/*:*.log')]: |
185 |
self.append(iter, |
186 |
self.append(iter, |
186 |
(e.category, e.package, e.timestamp, e.timesort, e.filename)) |
187 |
(e.category, e.package, e.timestamp, e.timesort, e.filename)) |
187 |
|
188 |
|
Lines 275-303
Link Here
|
275 |
class HeaderTable(Table): |
276 |
class HeaderTable(Table): |
276 |
|
277 |
|
277 |
def __init__(self): |
278 |
def __init__(self): |
278 |
Table.__init__(self, 2, 2) |
279 |
Table.__init__(self, 2, 3) |
279 |
|
280 |
|
280 |
btn_info = CheckButton('INFO') |
281 |
btn_info = CheckButton('INFO') |
281 |
btn_warn = CheckButton('WARN') |
282 |
btn_warn = CheckButton('WARN') |
282 |
btn_error = CheckButton('ERROR') |
283 |
btn_error = CheckButton('ERROR') |
283 |
btn_log = CheckButton('LOG') |
284 |
btn_log = CheckButton('LOG') |
|
|
285 |
btn_qa = CheckButton('QA') |
284 |
|
286 |
|
285 |
self.attach(btn_info, 0, 1, 0, 1) |
287 |
self.attach(btn_info, 0, 1, 0, 1) |
286 |
self.attach(btn_warn, 1, 2, 0, 1) |
288 |
self.attach(btn_warn, 1, 2, 0, 1) |
287 |
self.attach(btn_error, 0, 1, 1, 2) |
289 |
self.attach(btn_error, 0, 1, 1, 2) |
288 |
self.attach(btn_log, 1, 2, 1, 2) |
290 |
self.attach(btn_log, 1, 2, 1, 2) |
|
|
291 |
self.attach(btn_qa, 0, 1, 2, 3) |
289 |
|
292 |
|
290 |
# public |
293 |
# public |
291 |
self.btn_info = btn_info |
294 |
self.btn_info = btn_info |
292 |
self.btn_warn = btn_warn |
295 |
self.btn_warn = btn_warn |
293 |
self.btn_error = btn_error |
296 |
self.btn_error = btn_error |
294 |
self.btn_log = btn_log |
297 |
self.btn_log = btn_log |
|
|
298 |
self.btn_qa = btn_qa |
295 |
|
299 |
|
296 |
|
300 |
|
297 |
class StageTable(Table): |
301 |
class StageTable(Table): |
298 |
|
302 |
|
299 |
def __init__(self): |
303 |
def __init__(self): |
300 |
Table.__init__(self, 2, 5) |
304 |
Table.__init__(self, 2, 6) |
301 |
|
305 |
|
302 |
btn_preinst = CheckButton('preinst') |
306 |
btn_preinst = CheckButton('preinst') |
303 |
btn_postinst = CheckButton('postinst') |
307 |
btn_postinst = CheckButton('postinst') |
Lines 308-325
Link Here
|
308 |
btn_setup = CheckButton('setup') |
312 |
btn_setup = CheckButton('setup') |
309 |
btn_test = CheckButton('test') |
313 |
btn_test = CheckButton('test') |
310 |
btn_install = CheckButton('install') |
314 |
btn_install = CheckButton('install') |
|
|
315 |
btn_prepare = CheckButton('prepare') |
316 |
btn_configure = CheckButton('configure') |
311 |
btn_other = CheckButton('other') |
317 |
btn_other = CheckButton('other') |
312 |
|
318 |
|
313 |
self.attach(btn_preinst, 0, 1, 0, 1) |
319 |
self.attach(btn_preinst, 0, 1, 0, 1) |
314 |
self.attach(btn_postinst, 1, 2, 0, 1) |
320 |
self.attach(btn_postinst, 1, 2, 0, 1) |
315 |
self.attach(btn_prerm, 0, 1, 1, 2) |
321 |
self.attach(btn_prerm, 0, 1, 1, 2) |
316 |
self.attach(btn_postrm, 1, 2, 1, 2) |
322 |
self.attach(btn_postrm, 1, 2, 1, 2) |
317 |
self.attach(btn_unpack, 0, 1, 2, 3) |
323 |
self.attach(btn_unpack, 0, 1, 2, 3) |
318 |
self.attach(btn_compile, 1, 2, 2, 3) |
324 |
self.attach(btn_compile, 1, 2, 2, 3) |
319 |
self.attach(btn_setup, 0, 1, 3, 4) |
325 |
self.attach(btn_setup, 0, 1, 3, 4) |
320 |
self.attach(btn_test, 1, 2, 3, 4) |
326 |
self.attach(btn_test, 1, 2, 3, 4) |
321 |
self.attach(btn_install, 0, 1, 4, 5) |
327 |
self.attach(btn_install, 0, 1, 4, 5) |
322 |
self.attach(btn_other, 1, 2, 4, 5) |
328 |
self.attach(btn_prepare, 1, 2, 4, 5) |
|
|
329 |
self.attach(btn_configure, 0, 1, 5, 6) |
330 |
self.attach(btn_other, 1, 2, 5, 6) |
323 |
|
331 |
|
324 |
# public |
332 |
# public |
325 |
self.btn_preinst = btn_preinst |
333 |
self.btn_preinst = btn_preinst |
Lines 331-336
Link Here
|
331 |
self.btn_setup = btn_setup |
339 |
self.btn_setup = btn_setup |
332 |
self.btn_test = btn_test |
340 |
self.btn_test = btn_test |
333 |
self.btn_install = btn_install |
341 |
self.btn_install = btn_install |
|
|
342 |
self.btn_prepare = btn_prepare |
343 |
self.btn_configure = btn_configure |
334 |
self.btn_other = btn_other |
344 |
self.btn_other = btn_other |
335 |
|
345 |
|
336 |
class ViewSelector(gtk.HBox): |
346 |
class ViewSelector(gtk.HBox): |
Lines 352-357
Link Here
|
352 |
self.create_tag('WARN', foreground='red') |
362 |
self.create_tag('WARN', foreground='red') |
353 |
self.create_tag('LOG', foreground='black') |
363 |
self.create_tag('LOG', foreground='black') |
354 |
self.create_tag('ERROR', foreground='orange') |
364 |
self.create_tag('ERROR', foreground='orange') |
|
|
365 |
self.create_tag('QA', foreground='blue') |
355 |
|
366 |
|
356 |
|
367 |
|
357 |
class Buffer(TextBuffer): |
368 |
class Buffer(TextBuffer): |
Lines 597-602
Link Here
|
597 |
f_header.btn_warn.connect('toggled', self.filter) |
608 |
f_header.btn_warn.connect('toggled', self.filter) |
598 |
f_header.btn_error.connect('toggled', self.filter) |
609 |
f_header.btn_error.connect('toggled', self.filter) |
599 |
f_header.btn_log.connect('toggled', self.filter) |
610 |
f_header.btn_log.connect('toggled', self.filter) |
|
|
611 |
f_header.btn_qa.connect('toggled', self.filter) |
600 |
|
612 |
|
601 |
f_stage.btn_preinst.connect('toggled', self.filter) |
613 |
f_stage.btn_preinst.connect('toggled', self.filter) |
602 |
f_stage.btn_postinst.connect('toggled', self.filter) |
614 |
f_stage.btn_postinst.connect('toggled', self.filter) |
Lines 607-612
Link Here
|
607 |
f_stage.btn_setup.connect('toggled', self.filter) |
619 |
f_stage.btn_setup.connect('toggled', self.filter) |
608 |
f_stage.btn_test.connect('toggled', self.filter) |
620 |
f_stage.btn_test.connect('toggled', self.filter) |
609 |
f_stage.btn_install.connect('toggled', self.filter) |
621 |
f_stage.btn_install.connect('toggled', self.filter) |
|
|
622 |
f_stage.btn_prepare.connect('toggled', self.filter) |
623 |
f_stage.btn_configure.connect('toggled', self.filter) |
610 |
f_stage.btn_other.connect('toggled', self.filter) |
624 |
f_stage.btn_other.connect('toggled', self.filter) |
611 |
|
625 |
|
612 |
# public |
626 |
# public |