;;; This software is being provided to you, the LICENSEE, by the
;;; Massachusetts Institute of Technology (M.I.T.), and the NEC Research
;;; Institute (NECI) under the following license.  By obtaining, using
;;; and/or copying this software, you agree that you have read,
;;; understood, and will comply with these terms and conditions:
;;; 
;;; Permission to use, copy, modify and distribute, including the right to
;;; grant others rights to distribute at any tier, this software and its
;;; documentation for research purposes only and without fee or royalty is
;;; hereby granted, provided that you agree to comply with the following
;;; copyright notice and statements, including the disclaimer, and that
;;; the same appear on ALL copies of the software and documentation,
;;; including modifications that you make for internal use or for
;;; distribution:
;;; 
;;; Copyright 1995 by the Massachusetts Institute of Technology.  All
;;; rights reserved.  Copyright 1995 by NEC Research Institute Inc. All
;;; rights reserved
;;; 
;;; THIS SOFTWARE IS PROVIDED "AS IS", AND M.I.T. and NECI MAKE NO
;;; REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.  By way of example,
;;; but not limitation, M.I.T. and NECI MAKE NO REPRESENTATIONS OR
;;; WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR
;;; THAT THE USE OF THE LICENSED SOFTWARE OR DOCUMENTATION WILL NOT
;;; INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER
;;; RIGHTS.
;;; 
;;; The name of the Massachusetts Institute of Technology or M.I.T., or
;;; NEC Research Institute, or NECI may NOT be used in advertising or
;;; publicity pertaining to distribution of the software.  Title to
;;; copyright in this software and any associated documentation shall at
;;; all times remain with M.I.T. and NECI, and USER agrees to preserve
;;; same.
;;; 

;;; -*- Mode:LISP; Base:10; Package:2DG; Syntax:Common-lisp; -*-

(defvar OPTIONAL-FILES-LIST
  "List contains lists of two items.  The first is a string describing the application , the second
   contains a list of the name of the files used by the application.")

(setq OPTIONAL-FILES-LIST (list (list "Polygon, and rectangle specific code"
					(list "polyrect"))
				  (list "Generate random objects"
					(list "random"))
				  (list "Fit a line to points"
					(list "linearfit"))
				  (list "Convex Hulls"
					(list "convex"))
				  (list "Extract Strings from Edges"
					(list "string"))
				  (list "Straight Line Approximations to Edges"
					(list "string" "straight"))
				  ))

(defun ALL-FILES ()
  (send file-menu ':set-highlighted-items optional-files-list)
  (send file-menu ':highlighted-values))

(defun FILES-DO-IT ()
  (send file-menu ':highlighted-values))

(defvar FILE-CHOICES)
(defvar FILE-MENU)

(setq FILE-CHOICES '(("Do it" :eval (files-do-it)) ("All" :eval (all-files))))

(setq FILE-MENU
      (tv:make-window 'tv:multiple-menu ':label "Optional Applications" ':borders 3
		      ':item-list optional-files-list ':special-choices file-choices))

(defun ACTION-ON-FILES ()
  (send file-menu ':expose-near '(:mouse))
  (let ((files-to-load (loop for files in (send file-menu ':choose) appending files)))
    (send file-menu ':deactivate)
    (loop for file in files-to-load
	  doing
      (load (string-append "geometry-2d:geometry-2d;" file)))))

(action-on-files)
