summaryrefslogtreecommitdiff
path: root/configs/apps/gladevcp/by-widget/sourceview.py
blob: 04fd6632b016ffe88a66b360ba9247e31ec45d29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

import gtk
import gtksourceview2 as gtksourceview

class HandlerClass:

    def _set_line(self,l):
        if not l:
            if self.mark:
                self.textbuffer.delete_mark(self.mark)
                self.mark = None
            return
        line = self.textbuffer.get_iter_at_line(l-1)
        if not self.mark:
            self.mark = self.textbuffer.create_source_mark('highlight', 'highlight', line)
            self.mark.set_visible(True)
        else:
            self.textbuffer.move_mark(self.mark, line)
        self.sourceview.scroll_to_mark(self.mark, 0, True, 0, 0.5)       

    def file_set(self,widget,data=None):
        filename = widget.get_filename()
        print "file_set",filename
        self.textbuffer.set_text(open(filename).read())
        self.line = 1
        self._set_line(self.line)    

    def on_down(self,widget,data=None):
        self.line += 1
        self._set_line(self.line)

        
    def on_up(self,widget,data=None):
        self.line -= 1
        self._set_line(self.line)
   
    def __init__(self, halcomp,builder,useropts):
        self.halcomp = halcomp
        self.builder = builder

        self.line = 1
        self.sourceview = builder.get_object('gtksourceview1')
        self.textbuffer = gtksourceview.Buffer()
        self.sourceview.set_buffer(self.textbuffer)

        self.sourceview.set_show_line_numbers(True)
        self.sourceview.set_show_line_marks(True)
        self.sourceview.set_highlight_current_line(True)
        self.sourceview.set_mark_category_icon_from_icon_name('highlight', 'gtk-forward')
        self.sourceview.set_mark_category_background('highlight', gtk.gdk.Color('yellow'))
        self.mark = None

        
def get_handlers(halcomp,builder,useropts):

    return [HandlerClass(halcomp,builder,useropts)]