File: test-completion.py

package info (click to toggle)
gtksourceview3 3.14.1-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 16,184 kB
  • ctags: 5,650
  • sloc: ansic: 42,764; sh: 11,441; xml: 2,198; makefile: 742; python: 557; perl: 52; yacc: 45; cobol: 20; objc: 19; fortran: 14; cpp: 8
file content (139 lines) | stat: -rw-r--r-- 4,035 bytes parent folder | download
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/usr/bin/env python

# WARNING: test-completion.c is more complete.

import os, os.path
import sys

from gi.repository import Gio, GObject, Pango, Gtk, GdkPixbuf, Gdk, GtkSource

class TestProvider(GObject.Object, GtkSource.CompletionProvider):
    __gtype_name__ = 'TestProvider'

    def __init__(self):
        GObject.Object.__init__(self)

        self.priority = 1

        theme = Gtk.IconTheme.get_default()
        icon = theme.load_icon(Gtk.STOCK_DIALOG_INFO, 16, 0)

        self.proposals = []
        self.proposals.append(GtkSource.CompletionItem.new("Proposal 1", "Proposal 1", icon, "blah 1"))
        self.proposals.append(GtkSource.CompletionItem.new("Proposal 2", "Proposal 2", icon, "blah 2"))
        self.proposals.append(GtkSource.CompletionItem.new("Proposal 3", "Proposal 3", icon, "blah 3"))

    def do_get_name(self):
        return "Test Provider"

    def do_get_priority(self):
        return self.priority

    def do_match(self, context):
        return True

    def do_populate(self, context):
        context.add_proposals(self, self.proposals, True)

    def set_priority(self, priority):
        self.priority = priority

GObject.type_register(TestProvider)

def create_completion():
    prov_words = GtkSource.CompletionWords.new(None, None)
    prov_words.register(view.get_buffer())

    prov_words.set_property("priority", 10)

    completion.add_provider(prov_words)

    test1 = TestProvider()
    completion.add_provider(test1)

    test2 = TestProvider()
    completion.add_provider(test2)
    test2.set_priority(5)

def remember_toggled_cb(button, data):
    completion.set_property("remember-info-visibility", button.get_active())

def select_on_show_toggled_cb(button, data):
    completion.set_property("select-on-show", button.get_active())

def show_headers_toggled_cb(button, data):
    completion.set_property("show-headers", button.get_active())

def show_icons_toggled_cb(button, data):
    completion.set_property("show-icons", button.get_active())

def toggle_active_property(source, dest, name):
    value = source.get_property(name)
    dest.set_property("active", value)

def create_window():
    global window
    global view
    global completion

    window = Gtk.Window()
    window.set_title('GtkSourceView Completion Demo')
    window.set_icon_name('text-editor')
    window.set_default_size(600, 400)
    window.connect_after('destroy', _quit)

    vbox = Gtk.VBox()
    hbox = Gtk.HBox()

    sw = Gtk.ScrolledWindow(hadjustment=None,
                            vadjustment=None)
    sw.set_shadow_type(Gtk.ShadowType.IN)

    view = GtkSource.View.new()
    sw.add(view)

    completion = view.get_completion()

    remember = Gtk.CheckButton.new_with_label("Remember info visibility")
    select_on_show = Gtk.CheckButton.new_with_label("Select first on show")
    show_headers = Gtk.CheckButton.new_with_label("Show headers")
    show_icons = Gtk.CheckButton.new_with_label("Show icons")

    toggle_active_property(completion, remember, "remember-info-visibility")
    toggle_active_property(completion, select_on_show, "select-on-show")
    toggle_active_property(completion, show_headers, "show-headers")
    toggle_active_property(completion, show_icons, "show-icons")

    hbox.pack_start(remember, False, False, 0)
    hbox.pack_start(select_on_show, False, False, 0)
    hbox.pack_start(show_headers, False, False, 0)
    hbox.pack_start(show_icons, False, False, 0)

    vbox.pack_start(sw, True, True, 0)
    vbox.pack_end(hbox, False, False, 0)

    window.add(vbox)

    remember.connect("toggled", remember_toggled_cb, None)
    select_on_show.connect("toggled", select_on_show_toggled_cb, None)
    show_headers.connect("toggled", show_headers_toggled_cb, None)
    show_icons.connect("toggled", show_icons_toggled_cb, None)

    return window

def _quit(*args):
    Gtk.main_quit()

def main(args = []):

    window = create_window()
    create_completion()

    window.show_all()

    Gtk.main()

if __name__ == '__main__':
    main(sys.argv)