Skip to content

Commit 24ccd8b

Browse files
Frederick Akalinspearce
authored andcommitted
gtksourceview2 support for gitview
Added support for gtksourceview2 module (pygtksourceview 1.90.x) in gitview. Also refactored code that creates the source buffer and view. Signed-off-by: Frederick Akalin <akalin@akalin.cx> Signed-off-by: Lars Hjemli <hjemli@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
1 parent fdfeb87 commit 24ccd8b

File tree

1 file changed

+31
-22
lines changed

1 file changed

+31
-22
lines changed

contrib/gitview/gitview

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,20 @@ import math
2727
import string
2828
import fcntl
2929

30+
try:
31+
import gtksourceview2
32+
have_gtksourceview2 = True
33+
except ImportError:
34+
have_gtksourceview2 = False
35+
3036
try:
3137
import gtksourceview
3238
have_gtksourceview = True
3339
except ImportError:
3440
have_gtksourceview = False
35-
print "Running without gtksourceview module"
41+
42+
if not have_gtksourceview2 and not have_gtksourceview:
43+
print "Running without gtksourceview2 or gtksourceview module"
3644

3745
re_ident = re.compile('(author|committer) (?P<ident>.*) (?P<epoch>\d+) (?P<tz>[+-]\d{4})')
3846

@@ -58,6 +66,26 @@ def show_date(epoch, tz):
5866

5967
return time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(secs))
6068

69+
def get_source_buffer_and_view():
70+
if have_gtksourceview2:
71+
buffer = gtksourceview2.Buffer()
72+
slm = gtksourceview2.LanguageManager()
73+
gsl = slm.get_language("diff")
74+
buffer.set_highlight_syntax(True)
75+
buffer.set_language(gsl)
76+
view = gtksourceview2.View(buffer)
77+
elif have_gtksourceview:
78+
buffer = gtksourceview.SourceBuffer()
79+
slm = gtksourceview.SourceLanguagesManager()
80+
gsl = slm.get_language_from_mime_type("text/x-patch")
81+
buffer.set_highlight(True)
82+
buffer.set_language(gsl)
83+
view = gtksourceview.SourceView(buffer)
84+
else:
85+
buffer = gtk.TextBuffer()
86+
view = gtk.TextView(buffer)
87+
return (buffer, view)
88+
6189

6290
class CellRendererGraph(gtk.GenericCellRenderer):
6391
"""Cell renderer for directed graph.
@@ -582,17 +610,7 @@ class DiffWindow(object):
582610
hpan.pack1(scrollwin, True, True)
583611
scrollwin.show()
584612

585-
if have_gtksourceview:
586-
self.buffer = gtksourceview.SourceBuffer()
587-
slm = gtksourceview.SourceLanguagesManager()
588-
gsl = slm.get_language_from_mime_type("text/x-patch")
589-
self.buffer.set_highlight(True)
590-
self.buffer.set_language(gsl)
591-
sourceview = gtksourceview.SourceView(self.buffer)
592-
else:
593-
self.buffer = gtk.TextBuffer()
594-
sourceview = gtk.TextView(self.buffer)
595-
613+
(self.buffer, sourceview) = get_source_buffer_and_view()
596614

597615
sourceview.set_editable(False)
598616
sourceview.modify_font(pango.FontDescription("Monospace"))
@@ -956,16 +974,7 @@ class GitView(object):
956974
vbox.pack_start(scrollwin, expand=True, fill=True)
957975
scrollwin.show()
958976

959-
if have_gtksourceview:
960-
self.message_buffer = gtksourceview.SourceBuffer()
961-
slm = gtksourceview.SourceLanguagesManager()
962-
gsl = slm.get_language_from_mime_type("text/x-patch")
963-
self.message_buffer.set_highlight(True)
964-
self.message_buffer.set_language(gsl)
965-
sourceview = gtksourceview.SourceView(self.message_buffer)
966-
else:
967-
self.message_buffer = gtk.TextBuffer()
968-
sourceview = gtk.TextView(self.message_buffer)
977+
(self.message_buffer, sourceview) = get_source_buffer_and_view()
969978

970979
sourceview.set_editable(False)
971980
sourceview.modify_font(pango.FontDescription("Monospace"))

0 commit comments

Comments
 (0)