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