From 59945a43a3625da37cde75234d49775985fb9262 Mon Sep 17 00:00:00 2001
From: Maximilian Moser <maximilian.moser@tuwien.ac.at>
Date: Tue, 5 Mar 2024 12:48:46 +0100
Subject: [PATCH] Show number of files per format as button label prefix

---
 formatscaper/resultman.py | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/formatscaper/resultman.py b/formatscaper/resultman.py
index d8700b0..378c420 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"))
-- 
GitLab