129129 from STAThelper import which , color_to_string , DecomposedNode , decompose_node , HAVE_PYGMENTS , is_mpi , escaped_label , has_source_and_not_collapsed , has_module_offset_and_not_collapsed , label_has_source , label_has_module_offset , label_collapsed , translate , expr , node_attr_to_label , edge_attr_to_label , get_truncated_edge_label , get_num_tasks
130130except Exception as e :
131131 raise Exception ('%s\n There was a problem loading the STAThelper module.\n ' % repr (e ))
132+ HAVE_PANGO = True
132133if HAVE_PYGMENTS :
133134 import pygments
134135 from pygments .lexers import CLexer
135136 from pygments .lexers import CppLexer
136137 from pygments .lexers import FortranLexer
137138 from STAThelper import STATviewFormatter
138139 try :
139- import pango
140+ import gi
141+ gi .require_version ("Pango" , "1.0" )
142+ from gi .repository import Pango
140143 except :
141144 HAVE_PANGO = False
142145# Check for optional modules
@@ -1364,6 +1367,7 @@ def focus(self, node):
13641367
13651368 def view_source (self , node , item = 0 ):
13661369 """Generate a window that displays the source code for the node."""
1370+ fore_color_tags = []
13671371 # find the source file name and line number
13681372 if not "source" in node .attrs .keys ():
13691373 show_error_dialog ('Cannot determine source file, please run STAT with the -i option to get source file and line number information\n ' )
@@ -1481,9 +1485,9 @@ def view_source(self, node, item=0):
14811485 pygments .highlight (file .read (), CLexer (), STATviewFormatter ())
14821486 lines = STAThelper .pygments_lines
14831487 if HAVE_PANGO :
1484- source_view .get_buffer ().create_tag ('bold_tag' , weight = pango . WEIGHT_BOLD )
1485- source_view .get_buffer ().create_tag ('italics_tag' , style = pango . STYLE_ITALIC )
1486- source_view .get_buffer ().create_tag ('underline_tag' , underline = pango . UNDERLINE_SINGLE )
1488+ source_view .get_buffer ().create_tag ('bold_tag' , weight = Pango . Weight . BOLD )
1489+ source_view .get_buffer ().create_tag ('italics_tag' , style = Pango . Style . ITALIC )
1490+ source_view .get_buffer ().create_tag ('underline_tag' , underline = Pango . Underline . SINGLE )
14871491 else :
14881492 source_view .get_buffer ().create_tag ('bold_tag' )
14891493 source_view .get_buffer ().create_tag ('italics_tag' )
@@ -1518,10 +1522,12 @@ def view_source(self, node, item=0):
15181522 foreground = gtk .gdk .color_parse (font_color_string )
15191523 background = gtk .gdk .color_parse (fill_color_string )
15201524 fore_color_tag = "color_fore%d%s" % (lineNum , font_color_string )
1521- try :
1522- source_view .get_buffer ().create_tag (fore_color_tag , foreground_gdk = foreground )
1523- except :
1524- pass
1525+ if fore_color_tag not in fore_color_tags :
1526+ fore_color_tags .append (fore_color_tag )
1527+ try :
1528+ source_view .get_buffer ().create_tag (fore_color_tag , foreground_gdk = foreground )
1529+ except :
1530+ pass
15251531 back_color_tag = "color_back%d%s" % (lineNum , fill_color_string )
15261532 try :
15271533 source_view .get_buffer ().create_tag (back_color_tag , background_gdk = background )
@@ -1538,10 +1544,12 @@ def view_source(self, node, item=0):
15381544 pygments_color , bold , italics , underline = format_tuple
15391545 foreground = gtk .gdk .color_parse (pygments_color )
15401546 fore_color_tag = "color_fore%d%s" % (lineNum , pygments_color )
1541- try :
1542- source_view .get_buffer ().create_tag (fore_color_tag , foreground_gdk = foreground )
1543- except :
1544- pass
1547+ if fore_color_tag not in fore_color_tags :
1548+ fore_color_tags .append (fore_color_tag )
1549+ try :
1550+ source_view .get_buffer ().create_tag (fore_color_tag , foreground_gdk = foreground )
1551+ except :
1552+ pass
15451553 args = [iterator , source_string , fore_color_tag , "monospace" ]
15461554 if bold :
15471555 args .append ('bold_tag' )
@@ -4500,6 +4508,7 @@ def on_identify_num_eq_classes(self, action):
45004508
45014509 def on_node_clicked (self , widget , button_clicked , event ):
45024510 """Callback to handle clicking of a node."""
4511+ fore_color_tags = []
45034512 if isinstance (event , STATNode ):
45044513 node = event
45054514 else :
@@ -4545,7 +4554,12 @@ def on_node_clicked(self, widget, button_clicked, event):
45454554 iterator = text_view_buffer .get_iter_at_offset (0 )
45464555 fore_color_tag = "color_fore%s" % (font_color_string )
45474556 foreground = gtk .gdk .color_parse (font_color_string )
4548- text_view_buffer .create_tag (fore_color_tag , foreground_gdk = foreground )
4557+ if fore_color_tag not in fore_color_tags :
4558+ fore_color_tags .append (fore_color_tag )
4559+ try :
4560+ text_view_buffer .create_tag (fore_color_tag , foreground_gdk = foreground )
4561+ except :
4562+ pass
45494563 background = gtk .gdk .color_parse (fill_color_string )
45504564 back_color_tag = "color_back%s" % (fill_color_string )
45514565 text_view_buffer .create_tag (back_color_tag , background_gdk = background )
0 commit comments