Probe gtk in a child process
[pysize.git] / pysize.py
blob49d38728eae44eee98b1da0f9d917cc19d3a872b
1 #!/usr/bin/env python
3 import optparse
4 from ui.ascii import ui_ascii
5 from ui.curses import ui_curses
6 from ui.gtk import ui_gtk
8 def _ui_auto(options, args):
9 if ui_gtk.is_available():
10 return ui_gtk.run(options, args)
12 if ui_curses.is_available():
13 return ui_curses.run(options, args)
15 if ui_ascii.is_available():
16 return ui_ascii.run(options, args)
18 print 'No UI available'
20 UI = {'ascii': ui_ascii.run, 'curses': ui_curses.run,
21 'gtk': ui_gtk.run, 'auto': _ui_auto}
23 def _main():
24 parser = optparse.OptionParser(usage='pysize [OPTIONS] DIRECTORY')
25 parser.add_option('--ui', type='choice', choices=UI.keys(), default='auto')
26 parser.add_option('--max-depth', type='int', dest='max_depth', default=5)
27 (options, args) = parser.parse_args()
28 if len(args) != 1:
29 print parser.error('A single argument is expected')
31 UI[options.ui](options, args)
33 def _prof():
34 import hotshot, hotshot.stats
35 prof = hotshot.Profile('pysize.prof')
36 prof.runcall(_main)
37 prof.close()
38 stats = hotshot.stats.load('pysize.prof')
39 stats.strip_dirs()
40 stats.sort_stats('time', 'calls')
41 stats.print_stats(40)
43 if __name__ == '__main__':
44 try:
45 # Try to use psyco if available
46 import psyco
47 psyco.full()
48 except ImportError:
49 pass
50 _main()