Skip to content

Commit d4913e2

Browse files
committed
fixed source view text highlighting
1 parent 3a6b3c2 commit d4913e2

File tree

2 files changed

+33
-17
lines changed

2 files changed

+33
-17
lines changed

scripts/STATGUI.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@
3535
from pygments.lexers import FortranLexer
3636
from STAThelper import STATviewFormatter
3737
try:
38-
import pango
38+
import gi
39+
gi.require_version("Pango", "1.0")
40+
from gi.repository import Pango
3941
except:
4042
HAVE_PANGO = False
4143
import STATview
@@ -1950,9 +1952,9 @@ def run_dysect_session(self):
19501952
text_view_buffer.create_tag("monospace", family="monospace")
19511953
pygments.highlight(dysect_session_file.read(), CppLexer(), STATviewFormatter())
19521954
if HAVE_PANGO:
1953-
text_view_buffer.create_tag('bold_tag', weight=pango.WEIGHT_BOLD)
1954-
text_view_buffer.create_tag('italics_tag', style=pango.STYLE_ITALIC)
1955-
text_view_buffer.create_tag('underline_tag', underline=pango.UNDERLINE_SINGLE)
1955+
text_view_buffer.create_tag('bold_tag', weight=Pango.Weight.BOLD)
1956+
text_view_buffer.create_tag('italics_tag', style=Pango.Style.ITALIC)
1957+
text_view_buffer.create_tag('underline_tag', underline=Pango.Underline.SINGLE)
19561958
else:
19571959
text_view_buffer.create_tag('bold_tag')
19581960
text_view_buffer.create_tag('italics_tag')

scripts/STATview.py

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -129,14 +129,17 @@
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
130130
except Exception as e:
131131
raise Exception('%s\nThere was a problem loading the STAThelper module.\n' % repr(e))
132+
HAVE_PANGO = True
132133
if 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

Comments
 (0)