1;; Copyright (C) 2004 Patrick Bernaud
2;; GNU General Public License version 2 or later. No warrantee.
3
4(define-module (demos entry-completion)
5  :use-module (oop goops)
6  :use-module (gnome gobject)
7  :use-module (gnome gtk))
8
9
10(define (create-completion-model)
11  (let ((store (gtk-list-store-new (list <gchararray>))))
12    (for-each
13     (lambda (v)
14       ;; append a word
15       (set-value store (append store) 0 v))
16     '("GNOME" "total" "totally"))
17    store))
18
19(define (main)
20  (let (
21	;; original demos uses gtk_dialog_new_with_buttons
22	(window     (make <gtk-dialog>
23		      :title "GtkEntryCompletion"
24		      :resizable #f))
25	(vbox       (make <gtk-vbox>
26		      :homogeneous #f :spacing 5 :border-width 5))
27	(label      (make <gtk-label>
28		      :label (string-append
29			      "Completion demo, try writing <b>total</b> "
30			      "or <b>gnome</b> for example.")
31		      :use-markup #t))
32	(entry      (make <gtk-entry>))
33	(completion (make <gtk-entry-completion>
34		      :model (create-completion-model))))
35    ;; do here what gtk_dialog_new_with_buttons() normally do
36    (add-button window
37		(gtk-stock-id 'close)
38                (genum->value
39                 (make <gtk-response-type> :value 'none)))
40
41    (connect window 'response (lambda (w a)
42				(destroy window)))
43
44    (pack-start (get-vbox window) vbox #t #t 0)
45
46    (pack-start vbox label #f #f 0)
47
48    (pack-start vbox entry #f #f 0)
49
50    ;; assign the completion to the entry
51    (set-completion entry completion)
52
53    ;; use model column 0 as the text column
54    (set-text-column completion 0)
55
56    (show-all window)))
57
58
59(define name "Entry Completion")
60(define description
61  (string-append
62   "GtkEntryCompletion provides a mechanism for adding support for "
63   "completion in GtkEntry."))
64