Skip to content

Commit 67b379b

Browse files
committed
feat(cut_header): color code fields in --interactive
1 parent ae37743 commit 67b379b

1 file changed

Lines changed: 21 additions & 6 deletions

File tree

cut_header.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,21 @@ def addstr(y, x, text, attr=0):
630630
except curses.error:
631631
pass
632632

633+
def addstr_line(y, x, includer_file, included_file, prevalence, dominated_edges, base_attr=0):
634+
"""Render a line with color-coded prevalence and dominated edges."""
635+
edge_text = f" {includer_file},{included_file},"
636+
prev_text = f"{prevalence:.2f}"
637+
comma = ","
638+
dom_text = f"{dominated_edges}"
639+
col = x
640+
addstr(y, col, edge_text, base_attr)
641+
col += len(edge_text)
642+
addstr(y, col, prev_text, curses.color_pair(4) | base_attr)
643+
col += len(prev_text)
644+
addstr(y, col, comma, base_attr)
645+
col += len(comma)
646+
addstr(y, col, dom_text, curses.color_pair(5) | base_attr)
647+
633648
# Title
634649
addstr(row, 0, f"Target: {target}", curses.A_BOLD)
635650
row += 1
@@ -671,7 +686,6 @@ def addstr(y, x, text, attr=0):
671686
selectable_lines = []
672687

673688
for includer_file, included_file, prevalence, dominated_edges in top_direct:
674-
line_text = f" {includer_file},{included_file},{prevalence:.2f},{dominated_edges}"
675689
is_selected = selected_idx == len(selectable_lines)
676690
action = acted_on.get((includer_file, included_file))
677691
selectable_lines.append((includer_file, included_file))
@@ -685,9 +699,9 @@ def addstr(y, x, text, attr=0):
685699
)
686700
elif is_selected:
687701
addstr(row, 0, "*", curses.color_pair(1) | curses.A_BOLD)
688-
addstr(row, 1, line_text, curses.A_BOLD)
702+
addstr_line(row, 1, includer_file, included_file, prevalence, dominated_edges, curses.A_BOLD)
689703
else:
690-
addstr(row, 1, line_text)
704+
addstr_line(row, 1, includer_file, included_file, prevalence, dominated_edges)
691705
row += 1
692706

693707
if not top_direct:
@@ -701,7 +715,6 @@ def addstr(y, x, text, attr=0):
701715
row += 1
702716

703717
for includer_file, included_file, prevalence, dominated_edges in top_indirect:
704-
line_text = f" {includer_file},{included_file},{prevalence:.2f},{dominated_edges}"
705718
is_selected = selected_idx == len(selectable_lines)
706719
action = acted_on.get((includer_file, included_file))
707720
selectable_lines.append((includer_file, included_file))
@@ -715,9 +728,9 @@ def addstr(y, x, text, attr=0):
715728
)
716729
elif is_selected:
717730
addstr(row, 0, "*", curses.color_pair(1) | curses.A_BOLD)
718-
addstr(row, 1, line_text, curses.A_BOLD)
731+
addstr_line(row, 1, includer_file, included_file, prevalence, dominated_edges, curses.A_BOLD)
719732
else:
720-
addstr(row, 1, line_text)
733+
addstr_line(row, 1, includer_file, included_file, prevalence, dominated_edges)
721734
row += 1
722735

723736
if not top_indirect:
@@ -762,6 +775,8 @@ def curses_main(stdscr):
762775
curses.init_pair(1, curses.COLOR_GREEN, -1) # Selected asterisk
763776
curses.init_pair(2, curses.COLOR_CYAN, -1) # Action highlight
764777
curses.init_pair(3, curses.COLOR_RED, -1) # Crossed out lines
778+
curses.init_pair(4, curses.COLOR_YELLOW, -1) # Prevalence
779+
curses.init_pair(5, curses.COLOR_MAGENTA, -1) # Dominated edges
765780

766781
selected_idx = 0
767782
action_mode = False

0 commit comments

Comments
 (0)