Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/textview-test.py
blob: 77a1317142efa7ef6e7945554bc60c9a9cdd0a0a (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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env python

import gtk, pango

class TextViewAdvanced:
    def __init__(self):
        window = gtk.Window()
        window.set_default_size(-1, 350)
        
        vbox = gtk.VBox(False, 5)
        scrolledwindow = gtk.ScrolledWindow()
        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        hbox = gtk.HBox(True, 5)
        
        texttagtable = gtk.TextTagTable()
        self.textbuffer = gtk.TextBuffer(texttagtable)
        self.textview = gtk.TextView(self.textbuffer)
        self.textview.set_wrap_mode(gtk.WRAP_WORD)
        
        button_bold = gtk.Button("Bold", gtk.STOCK_BOLD)
        button_italic = gtk.Button("Italic", gtk.STOCK_ITALIC)
        button_underline = gtk.Button("Underline", gtk.STOCK_UNDERLINE)
        
        self.texttag_bold = gtk.TextTag("bold")
        self.texttag_bold.set_property("weight", pango.WEIGHT_BOLD)
        texttagtable.add(self.texttag_bold)
        self.texttag_italic = gtk.TextTag("italic")
        self.texttag_italic.set_property("style", pango.STYLE_ITALIC)
        texttagtable.add(self.texttag_italic)
        self.texttag_underline = gtk.TextTag("underline")
        self.texttag_underline.set_property("underline", pango.UNDERLINE_SINGLE)
        texttagtable.add(self.texttag_underline)
        
        hbox.pack_start(button_bold)
        hbox.pack_start(button_italic)
        hbox.pack_start(button_underline)
        
        window.connect("destroy", lambda w: gtk.main_quit())
        button_bold.connect("clicked", self.bold_text)
        button_italic.connect("clicked", self.italic_text)
        button_underline.connect("clicked", self.underline_text)
        
        window.add(vbox)
        vbox.pack_start(scrolledwindow, True, True, 0)
        vbox.pack_start(hbox, False, False, 0)
        scrolledwindow.add(self.textview)

        file = open("gtk.txt", "r")
        self.textbuffer.set_text(file.read())
        file.close()
        
        window.show_all()
    
    def bold_text(self, widget):
        if self.textbuffer.get_selection_bounds() != ():
            start, end = self.textbuffer.get_selection_bounds()
            self.textbuffer.apply_tag(self.texttag_bold, start, end)
    
    def italic_text(self, widget):
        if self.textbuffer.get_selection_bounds() != ():
            start, end = self.textbuffer.get_selection_bounds()
            self.textbuffer.apply_tag(self.texttag_italic, start, end)
    
    def underline_text(self, widget):
        if self.textbuffer.get_selection_bounds() != ():
            start, end = self.textbuffer.get_selection_bounds()
            self.textbuffer.apply_tag(self.texttag_underline, start, end)

TextViewAdvanced()
gtk.main()