@@ -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