diff --git a/formatscaper/resultman.py b/formatscaper/resultman.py index d8700b0e8fccc398707dfb1ec180dc5437119983..378c42082ed20c4fc0ceb26003f9e7b60ed79081 100755 --- a/formatscaper/resultman.py +++ b/formatscaper/resultman.py @@ -2,6 +2,7 @@ import argparse import enum +import math from typing import Optional import urwid as uw @@ -240,14 +241,23 @@ def handle_select_format(format: Format, button: uw.Button): # defining the basic layout def create_format_buttons(filter: FormatFilter): format_buttons = [] - for format in sorted((f for f in formats if f.name), key=lambda f: f.name): + filtered_formats = [f for f in formats if f.name] + + num_files_per_format = { + fmt.puid: sum([len(rec) for rec in format_record_files[fmt.puid].values()]) + for fmt in filtered_formats + } + max_num_files = math.ceil(math.log10(max(num_files_per_format.values()))) + + for format in sorted(filtered_formats, key=lambda f: f.name): if filter == FormatFilter.ENDANGERED and not format.endangered: continue elif filter == FormatFilter.SAFE and format.endangered: continue attribute = "endangered" if format.endangered else "safe" - button = SimpleButton(format.name) + prefix = str(num_files_per_format[format.puid]).rjust(max_num_files) + button = SimpleButton(f"[{prefix}] {format.name}") button.format = format uw.connect_signal(button, "click", handle_select_format, user_args=[format]) format_buttons.append(uw.AttrMap(button, attribute, focus_map="reversed"))