summaryrefslogtreecommitdiff
path: root/examples/pygtk-demo/demos/entry_completion.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/pygtk-demo/demos/entry_completion.py')
-rw-r--r--examples/pygtk-demo/demos/entry_completion.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/examples/pygtk-demo/demos/entry_completion.py b/examples/pygtk-demo/demos/entry_completion.py
new file mode 100644
index 00000000..52e8568c
--- /dev/null
+++ b/examples/pygtk-demo/demos/entry_completion.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+'''Entry Completion
+
+GtkEntryCompletion provides a mechanism for adding support for
+completion in GtkEntry.
+'''
+# pygtk version: Maik Hertha <maik.hertha@berlin.de>
+
+import gtk
+
+class EntryCompletionDemo(gtk.Dialog):
+
+ def __init__(self, parent=None):
+ gtk.Dialog.__init__(self, self.__class__.__name__, parent,
+ 0,
+ (gtk.STOCK_CLOSE, gtk.RESPONSE_NONE))
+ try:
+ self.set_screen(parent.get_screen())
+ except AttributeError:
+ self.connect('destroy', lambda *w: gtk.main_quit())
+ self.connect("response", lambda d, r: d.destroy())
+ self.set_resizable(False)
+
+ vbox = gtk.VBox(False, 5)
+ self.vbox.pack_start(vbox, True, True, 0)
+ vbox.set_border_width(5)
+
+ label = gtk.Label()
+ label.set_markup("Completion demo, try writing <b>total</b> "
+ "or <b>gnome</b> for example.")
+ vbox.pack_start(label, False, False, 0)
+
+ # Create our entry
+ entry = gtk.Entry()
+ vbox.pack_start(entry, False, False, 0)
+
+ # Create the completion object
+ completion = gtk.EntryCompletion()
+
+ # Assign the completion to the entry
+ entry.set_completion(completion)
+
+ # Create a tree model and use it as the completion model
+ completion_model = self.__create_completion_model()
+ completion.set_model(completion_model)
+
+ # Use model column 0 as the text column
+ completion.set_text_column(0)
+
+ self.show_all()
+
+ def __create_completion_model(self):
+ ''' Creates a tree model containing the completions.
+ '''
+ store = gtk.ListStore(str)
+
+ # Append one word
+ iter = store.append()
+ store.set(iter, 0, "GNOME")
+
+ # Append another word
+ iter = store.append()
+ store.set(iter, 0, "total")
+
+ # And another word
+ iter = store.append()
+ store.set(iter, 0, "totally")
+
+ return store
+
+def main():
+ EntryCompletionDemo()
+ gtk.main()
+
+if __name__ == '__main__':
+ main()
+