4 from pysize
.core
.pysize_fs_tree
import pysize_tree
5 from pysize
.core
.compute_size
import size_observable
6 from pysize
.ui
.utils
import human_unit
, min_size_to_consider
, update_progress
7 from pysize
.ui
.utils
import sanitize_string
8 from pysize
.ui
.char_matrix
import CharMatrix
, HLINE_START
, HLINE
, HLINE_END
9 from pysize
.ui
.char_matrix
import VLINE_START
, VLINE
, VLINE_END
10 from pysize
.ui
.ascii
.terminal_size
import terminal_size
14 HLINE_START
: '-', HLINE
: '-', HLINE_END
: '-',
15 VLINE_START
: '|', VLINE
: '|', VLINE_END
: '|'
19 if isinstance(char
, int):
20 return MATRIX_TO_ASCII
.get(char
, '+')
24 progress
= update_progress()
26 print '', progress
, '\r',
29 def run(options
, args
):
30 columns
, lines
= terminal_size()
31 lines
-= 3 # Summary + Prompt + Last line
32 # An entry needs 3 lines
33 min_size
= min_size_to_consider(options
.min_size
, lines
/ 3)
34 size_observable
.add_observer(_draw_progress
)
35 tree
= pysize_tree(args
, options
.max_depth
, min_size
)
38 # The last entry needs an additional terminating line
39 total_lines
= int(math
.ceil(3.0 * tree
.root
.size
/
40 tree
.root
.minimum_real_size())) + 1
41 matrix
= CharMatrix(columns
, total_lines
, tree
)
42 print '\n'.join([''.join(map(_transform
, line
)) for line
in matrix
.matrix
])
43 print sanitize_string(tree
.root
.get_name()), human_unit(tree
.root
.size
)
46 """This simple UI is always available."""