GNU Info

Info Node: (widget)Programming Example

(widget)Programming Example


Next: Setting Up the Buffer Prev: User Interface Up: Top
Enter node , (file) or (file)node

Programming Example
===================

   Here is the code to implement the user interface example (Note: User
Interface).

     (require 'widget)
     
     (eval-when-compile
       (require 'wid-edit))
     
     (defvar widget-example-repeat)
     
     (defun widget-example ()
       "Create the widgets from the Widget manual."
       (interactive)
       (switch-to-buffer "*Widget Example*")
       (kill-all-local-variables)
       (make-local-variable 'widget-example-repeat)
       (let ((inhibit-read-only t))
         (erase-buffer))
       (widget-insert "Here is some documentation.\n\nName: ")
       (widget-create 'editable-field
     		 :size 13
     		 "My Name")
       (widget-create 'menu-choice
     		 :tag "Choose"
     		 :value "This"
     		 :help-echo "Choose me, please!"
     		 :notify (lambda (widget &rest ignore)
     			   (message "%s is a good choice!"
     				    (widget-value widget)))
     		 '(item :tag "This option" :value "This")
     		 '(choice-item "That option")
     		 '(editable-field :menu-tag "No option" "Thus option"))
       (widget-insert "Address: ")
       (widget-create 'editable-field
     		 "Some Place\nIn some City\nSome country.")
       (widget-insert "\nSee also ")
       (widget-create 'link
     		 :notify (lambda (&rest ignore)
     			   (widget-value-set widget-example-repeat
     					     '("En" "To" "Tre"))
     			   (widget-setup))
     		 "other work")
       (widget-insert
         " for more information.\n\nNumbers: count to three below\n")
       (setq widget-example-repeat
     	(widget-create 'editable-list
     		       :entry-format "%i %d %v"
     		       :notify (lambda (widget &rest ignore)
     				 (let ((old (widget-get widget
     							':example-length))
     				       (new (length (widget-value widget))))
     				   (unless (eq old new)
     				     (widget-put widget ':example-length new)
     				     (message "You can count to %d." new))))
     		       :value '("One" "Eh, two?" "Five!")
     		       '(editable-field :value "three")))
       (widget-insert "\n\nSelect multiple:\n\n")
       (widget-create 'checkbox t)
       (widget-insert " This\n")
       (widget-create 'checkbox nil)
       (widget-insert " That\n")
       (widget-create 'checkbox
     		 :notify (lambda (&rest ignore) (message "Tickle"))
     		 t)
       (widget-insert " Thus\n\nSelect one:\n\n")
       (widget-create 'radio-button-choice
     		 :value "One"
     		 :notify (lambda (widget &rest ignore)
     			   (message "You selected %s"
     				    (widget-value widget)))
     		 '(item "One") '(item "Another One.") '(item "A Final One."))
       (widget-insert "\n")
       (widget-create 'push-button
     		 :notify (lambda (&rest ignore)
     			   (if (= (length (widget-value widget-example-repeat))
     				  3)
     			       (message "Congratulation!")
     			     (error "Three was the count!")))
     		 "Apply Form")
       (widget-insert " ")
       (widget-create 'push-button
     		 :notify (lambda (&rest ignore)
     			   (widget-example))
     		 "Reset Form")
       (widget-insert "\n")
       (use-local-map widget-keymap)
       (widget-setup))


automatically generated by info2www version 1.2.2.9